Showing posts with label LCD. Show all posts
Showing posts with label LCD. Show all posts

Wednesday, April 23, 2014

Minima - CPU Module Mock-up

As stated is the previous post, I was concerned that maybe the JTAG header could interfere with the LCD display. A mock-up would be necessary verify clearance.
Minima CPU
Mock-up to Check JTAG Clearance
The mockup was done with a simple print of the layout, with headers pressed into a Styrofoam block. The display is supported by the header pin at the top and the two nylon screws as legs in the lower corners. Because this is an experimental device, additional constraints are not necessary. The header at the top left, is for BAND switching.
LCD Display Header
The JTAG 6 pin heard (2x3) is located beneath the LCD display. When in the JTAG header is in use, the LCD display will not be used, and therefore removing the LCD will not be a problem. In fact because the JTAG Programming process used a few of the same pins as those used but the LCD, removing the LCD avoids any interaction concerns.

Checking JTAG Clearance below LCD Display
(viewed from the left)
The LCD Display sets at a slight angle forward for the users viewing benefit.

The mock-up revealed an additional concern, the header on the right end of the module should be moved up a little to avoid the nylon screw. The two header on this end are the SSB Mode and Si570 control headers.
The Two Pin Herder Will be Moved to the Right
(viewed from the right)
The spacing between the LCD and front push switches appears about right for easy access. The header at the bottom is (left to right), AUX-CTL for the Minima Audio sections, the Tuning Pot, and the Programming header.
Push Button Switch will be
Mounted in Font of the LCD Display
(as viewed from User Respective)
With much research, I have discovered there are many JTAG header standards in use, some have as many as 20 pins. The high pin count JTAG headers are used for monitoring as well as In Circuit Programming. I will use the simple six pin header and configuration that is used by the Arduino.

With maybe only slight modifications, I am pleased with the layout and mock-up results.

--

Tuesday, April 22, 2014

Minima - CPU Module Mods - PLus

After chatting with my friend, Jeff - KO7M, I decided to again modify the next Revision of my Minima Controller. Jeff has pointed out that a new raw ATmega328 processor does not have a bootloader.

I guess I knew that already, but I thought that I could use the TxRx pins to download a bootloader similar to downloading an Arduino Sketch. I was wrong.

More research is/was obviously needed.

REV04 of my Minima Control Module
The Backside
The latest addition to my Minima Module Mods is a JTAG connector, which will be used to download the Arduino Bootloader, or other raw mode programs (or sketches). The JTAG connector is under the "locally" mounted LCD display (left of center), but the display will be un-plugged during the JTAG use, because the JTAG and the LCD uses some of the same processor pins. I will have to check that the JTAG connector pins will not interfere with the mounted LCD board.

Once the ATmega328 programmed with the bootloader, the display will be re-installed, and then normal sketch programming will be done via the Prop-Plug TxRx header (lower right).

My previous modifications included; Consolidation of several individual headers into a single AUX-CTL header (lower left), Remove the Minima schematic programming components which will be replaced with a Prop-Plug header. I have also added my own version of EMI suppression by adding 1nF caps to each board edge header pins.

This board is getting complex enough that I am considering having it professionally manufacture, it is about 6.6 square inches and will cost a few bucks, but it now has about 65 via's (which are not exactly fun to do on a Homebrew board). I may still create a prototype board via Toner Transfer, but it will take some time/work.

The goal for this board is to be compatible (but more flexible) with the Farhan Minima Transceiver Project. I also plan to use this board with/for other Test LAB projects.

More project info to follow .  .  .

--

Saturday, February 4, 2012

Propeller GUI

UPDATED, Feb 5, 2012 Rev C

I am planning a GUI for my Propeller Amateur Radio Projects. As show on the previous post, I have the hardware cobbled together, but was stuck on the strategy of assigning processor pin to the LCD Display and the Encoders. After more than several hours and reading conflicting strategies and OBJ(ect) module support documents. I decided to just pick a pin assignment and get things started. The wires that I will use behind the "Propeller Proto USB" board are small and can be changed if another more sensible strategy is discovered later. Note: first attempt was abandoned, this page has be updated.

See Propeller Object Exchange "jm_lcd4_ez" download file.

My current pin assignment plan is as follows:

Note: I have updated the following to reflect current project pin usage.



Schematics

       P8X32A
     ┌────┬────┐ 
     ┤0      31├ RS232         0V    5V    0V   P16   P17   P18   N/C   N/C
     ┤1      30├ RS232         │     │     │     │     │     │     │     │
     ┤2      29├ I2C           │VSS  │VDD  │VO   │R/S  │R/W  │E    │DB0  │DB1
     ┤3      28├ I2C           ┴1    ┴2    ┴3    ┴4    ┴5    ┴6    ┴7    ┴8
     ┤4      27├ RF         ┌────────────────────────────────────────────────┐  LCD 16X2
     ┤5      26├ Encdr1B    │ 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16│  HD44780-BASED
     ┤6      25├ Encdr1A    └────────────────────────────────────────────────┘  SSC2F16DLNW-E
     ┤7      24├ Encdr1P       ┬9    ┬10   ┬11   ┬12   ┬13   ┬14   ┬15   ┬16
     ┤VSS   VDD├               │DB2  │DB3  │DB4  │DB5  │DB6  │DB7  │A(+) │K(-)             
     ┤BOEn   XO├               │     │     │     │     │     │     │     │
     ┤RESn   XI├              N/C   N/C   P12   P13   P14   P15   5V    P19 via Transistor
     ┤VDD   VSS├                                                             and 2.2k 
     ┤8      23├ Encdr0B                                                  
 Kyd ┤9      22├ Encdr0A
KDit ┤10     21├ Encdr0P
KDah ┤11     20├ Speaker
 DB4 ┤12     19├ BackLight
 DB5 ┤13     18├ E
 DB6 ┤14     17├ RW
 DB7 ┤15     16├ R/S
     └─────────┘ 


PIN ASSIGNMENT
   VSS  - POWER SUPPLY (GND)
   VCC  - POWER SUPPLY (+5V)
   VO   - CONTRAST ADJUST (0-5V)
   R/S  - FLAG TO RECEIVE INSTRUCTION OR DATA (via 2.2k ohm)
            0 - INSTRUCTION
            1 - DATA
   R/W  - INPUT OR OUTPUT MODE (via 2.2k ohm)
            0 - WRITE TO LCD MODULE
            1 - READ FROM LCD MODULE
   E    - ENABLE SIGNAL (via 2.2k ohm)   
   DB0  - DATA BUS LINE 0 (not connected)    
   DB1  - DATA BUS LINE 1 (not connected)    
   DB2  - DATA BUS LINE 2 (not connected)    
   DB3  - DATA BUS LINE 3 (not connected)    
   DB4  - DATA BUS LINE 4 (via 2.2k ohm)
   DB5  - DATA BUS LINE 5 (via 2.2k ohm) 
   DB6  - DATA BUS LINE 6 (via 2.2k ohm) 
   DB7  - DATA BUS LINE 7 (via 2.2k ohm) (MSB)
   A(+) - BACKLIGHT 5V
   K(-) - BACKLIGHT - via 2.2K ohm and Transistor to GND, Base to P19 via 220 ohm Resistor




In addition to the above, I plan to use pin 19 for the LCD Backlight control (which is outside the scope of most published Objects), normally the backlight (LCD pin 15) is connected to a variable resister.

Note: Because the LCD is actually a TTL (5v) device, 2.2k ohm resisters are suggested in series with all data lines connected to the Propeller (a 3.3v device). These resistors will allow bidirectional level compatibility.

More research is needed before I assign of the Encoders and Speaker pins, but I think they will be in the 20 to 27 in range. My goal will be to reserve pins  0-7 for application I/O and 28-31 for standard Propeller Functions (i.e., I2C).

Note: There are many contributed OBJ's in the Propeller Object Exchange Library for an LCD Display, but many have conflicting pin assignments/usage. The above is just the strategy I selected.

UPDATE

The LCD Driver selection for my Arduino project GUI was much simpler - I have now invested about two days in this effort for the Propeller . And yet, the selected LCD driver does not always correctly initialize the LCD. More research and experimenting is necessary. :-(

--

Saturday, October 1, 2011

LC Display and Encoders Received

I received my ordered LC Displays and Encoder/Switches (see previous post).

Simple Development and
Test Configuration
It has been several years since I have programmed a PIC or other Micro Processor. The following is a quick build to provide a test circuit for getting back up to speed. The processor is the green circuit board on right side of photo. It is a Teensy 2.0 , which is a Arduino look/works-a-like.

The connection to the PC for programming and interaction is via the mini-USB. Power is supplied via the USB or external battery as shown here.

Add on software allows the Arduino Interactive Development Environmental (IDE) to work with the Teensy. In fact most Arduino Sketches (a C like program) run without alterations. I chose the Teensy because of it small size,  it is similar in size to my normal projects.

The Sketch that I have put together is to test and exercise of these parts. It is a simple multi-tasking Scheduler and State Machines. My goals is to develop and provide a simple template for my future multi-tasking Sketches. I plans to merge the Arduino or Teensy with my micro 9-Volt Transmitters (as previous posted) to create interesting more complex projects.

The two Rotary Encoders (center photo) are not completely hooked up yet. My plan is to use Interrupts to decode their input.

As seen by the photo, several tasks (4) provide sample text within several fields on the two line display and controls the LC BackLight Brightness. So far, the multi-tasking Scheduler and State Machines are working as planned.

I wrote several macros to implement Task Switching, Checkpointing, and Scheduling. I remember doing something similar in Assemble Code many years ago by counting clock cycles. These implementation in C was easy in comparison.

No, it is not a full featured multi-tasking Scheduler implementation, but it will do the multiple tasks/things that I require.


UPDATE
There appears to be an old and raging debate about the use and license of the Teensy and it's bootloader, see:

I do not know the current status of the concerns?

More research is necessary.

--

Friday, September 16, 2011

Project Parts

I found a couple of inexpensive parts on eBay, which will be used for a planed and future projects.

Links and photos are bookmarked here for later reference.

16 X 2  LCD 

2-Bit Gray Code Rotary Encoders
with Push Button

I hope the sellers do not mind as the Photos were copied here from their eBay web page.


UPDATE
I found a interesting Post on Arduino and Encoders, saved here for later use:

--