Jump to content
simpleavr

EZ430Trainer - a retro style single board computer

Recommended Posts

A Retro Style Basic Computer

IMAG0291.jpg

 
 
 
Description
 

        The EZ430trainer system turns the low-cost TI LaunchPad into a microcontroller trainer via simple hardware and software enrichments.

 
        The EZ430trainer is made up of a
        . TI LaunchPad, w/ msp430g2553 mcu
        . A "Paradiso UI Shield", adding basic I/O capabilites.
        . A "Eztrainer Monitor" firmware, providing monitor and assembler capabilites.
 

        The intention of the EZ430trainer is to bring in a "low-cost" computer training system that resembles the 1st generation hobby based microprocessor systems that surfaced in the mid-70's. These systems offer the best computer training as users interacts w/ the CPU almost directly. Programming are done via entering machine code directly or via simple assemblers. Users need to understand very well the cpu architecture in order to work on such systems.

 
Parts / Bill of Materials
 
        . TI Launchpad V1.5 kit (w/ msp430g2553 mcu)
        . 4 digit 7 segment LED display Common Anode
        . 4 digit 7 segment LED display Common Cathode
        . 20 x tactile button
        . buzzer 3V (Optional)
 
 
 

IMAG0293.jpg

 
 
 
        the LED display is commonly available in ebay, look for those 0.4" or 0.36" 4 digit displays, you will want to make sure it's common cathode and the pin layout matches (most do)

 
       ___a__
      |      |        (0) A  F (1)(2) B
     f|      | b      -+--+--+--+--+--+
       ___g__        |                 |
     e|      | c     |Pin1             |
      |      |        -+--+--+--+--+--+
       ___d__          E  D  .  C  G (3)
 
 
Paradiso UI Shield Schematic
 
               MSP430G2553 on TI Launchpad
             -----------------
         /|\|                 |
          | |                 |
          --|RST              |
            |                 |     +---------------+  +---------------+
            |  as digit 0 P2.2|-----| _   _   _   _ |  | _   _   _   _ | led modules
            |  as digit 1 P2.4|-----|| | | | | | | ||  || | | | | | | || 1x common cathode
            |  as digit 2 P2.5|-----||-| |-| |-| |-||  ||-| |-| |-| |-|| 2x common anode
            |  as digit 3 P2.7|-----||_|.|_|.|_|.|_||  ||_|.|_|.|_|.|_||
            |                 |     +---------------+  +---------------+
            |                 |        | segment a to g + dot........
            |                 |       /                                 ....\
            |                 |      /                                       \
            |   segment A P1.7|-----+-----+-----+-----+-----+-----+-----+-----+
            |                 | _=_ | _=_ | _=_ | _=_ | _=_ | _=_ | _=_ | _=_ |
            |   segment B P2.3|-o o-+-o o-+-o o-+-o o-+-o o-+-o o-+-o o-+-o o-+
            |                 | _=_ | _=_ | _=_ | _=_ | _=_ | _=_ | _=_ |
            |   segment c P1.7|-o o-+-o o-+-o o-+-o o-+-o o-+-o o-+-o o-+
            |                 | _=_ | _=_ | _=_ | _=_ | _=_ | _=_ |
            |   segment D P2.0|-o o-+-o o-+-o o-+-o o-+-o o-+-o o-+
            |                 | _=_ | _=_ | _=_ | _=_ | _=_ |
            |   segment E P2.6|-o o-+-o o-+-o o-+-o o-+-o o-+
            |                 | _=_ | _=_ | _=_ | _=_ |
            |   segment F P1.6|-o o-+-o o-+-o o-+-o o-+
            |                 | _=_ | _=_ | _=_ |
            |   segment G P2.7|-o o-+-o o-+-o o-+
            |                 | _=_ |
            |   segment H P1.5|-o o-+           (not all buttons populated)
            |                 |
             -----------------
 
 
 
IMAG0260.jpg
 
 
 

   mapping of buttons. Ex. A-F .. buon across segment A and F pins

 
                [A-F] [A-.] [A-G] [b-A] [D-A] [C-A]
 
                [A-E] [b-F] [b-.] [b-G] [D-B] [C-B]
 
                      [b-E] [D-F] [D-.] [D-G] [C-D]
 
                      [D-E] [C-E] [C-F] [C-.] [C-G]
 
          +-----------------------------------------+
          | +-----------------+ +-----------------+ |
          | |  _   _   _   _  | |  _   _   _   _  | |
          | | | | | | | | | | | | | | | | | | | | | |
          | | |-| |-| |-| |-| | | |-| |-| |-| |-| | |
          | | |_|.|_|.|_|.|_|.| | |_|.|_|.|_|.|_|.| |
          | +-----------------+ +-----------------+ |
          |                mnp  rtx  s    j         |
          |           [  ] [7 ] [8 ] [9 ] [F ] [Ad] | Address
          |                          b/w  ei     << |
          |           [  ] [4 ] [5 ] [6 ] [E ] [Md] | Mode / Last
          |                               d    . >> |
          |                [1 ] [2 ] [3 ] [D ] [Rg] | Register / Next
          |                     a    b    c         |
          |                [0 ] [A ] [b ] [C ] [+ ] | Advance / Enter
          |                                         |
          +-----------------------------------------+
 
Paradiso UI Shield features
 
        . 8 x 7 segment display
        . 22 tactile switch positions w/ 20 switch filled
        . Prototyping area
        . requires software mutliplexing to drive segments
        . requires software matrix scanning for key inputs
        . has no led driving / current limiting capabilities
 
EZ430trainer Monitor features
 
    . (1) LMC Little Man Computer emulator built-in
    . (2) One-pass assembler generating msp430 machine code
    . (3) Direct machine code entry for msp430
    . Correct support for pseudo-op codes, ex. RET implemented as MOV @SP+,PC
    . Interface w/ Paradiso UI Shield and UART terminal
    . Program storage starts at flash 0xe000 at 256 byte blocks
    . Program edit at ram 0x0280 for each 256 byte blocks
    . Basic IO routines
      . number printing
      . string printing
      . wait key w/
      . timer at 1/100 sec intervals

 
 
Memory Space
 
          +------------------------------------------------+
          |0x0000-0x0007   Special Func Registers          |
          |0x0008-0x00ff    8-bit Periphercals             |
          |0x0100-0x01ff   16-bit Periphercals             |
          |0x0200        + 512 byte RAM -------------------|
          |  0200-  027f | Monitor Use                     |
          |  0280-  037f | Program Edit Buffer             |
          |  0380-  03ff | Monitor Use, Stack              |
          |       0x03ff-+---------------------------------|
          | ....                                           |
          |0x1000        + Data Flash ---------------------|
          |  1000-  103f | Data Flash Bank 0               |
          |  1040-  107f | Data Flash Bank 0               |
          |  1080-  10bf | Data Flash Bank 0               |
          |  10c0-  10ff | Data Flash Bank 0 (Factory Data)|
          |       0x10ff +---------------------------------|
          | ....                                           |
          |0xc000        + Program Flash ------------------|
          |  c000-  deff-| Monitor Code                    |
          |  dd00-  dfff-| Bios code / dd00 is entry point |
          |  e000-  efff-| 16 banks of User Code           |
          |  f000-  ffbf-| 16 banks of LMC code            |
          |  ffc0-  ffff | Interrupt Vectors               |
          |       0xffff +---------------------------------|
          +------------------------------------------------+
 
 


 
full operating instructions can be found here if u are interested in the details.
 
/EDIT Dec 12, 2012 furnishing source and gerber files.
 

D55524_5x10.zip is the production ready seeedstudio compliance file package

ez430trainer.tgz are source files in tgz format (tarred, gzipped)

(*) this project can only be built with msp430gcc (cygwin or linux)

lmc.c contains only the LMC machine (compiles on mps430gcc and CCSV4), for CCS, create a lmc project and rename lmc.c to main.c to build
 
 

 

Share this post


Link to post
Share on other sites

i know it's incomplete. i am working on making sure the source code also compiles on CCS. it will be done and uploaded (along w/ seeed files) within the next few days.

 

i don't want to hold it off too much for the POTM entry. this project has been 90% complete for a few weeks already. i got some free time (spared from christmas shopping from wife) this weekend so i did the web page, pull together the write-ups, photos, videos, etc.

 

will refine the write-up and what ever based on your comments.

Share this post


Link to post
Share on other sites

I'm not sure you can call it "sandwich" either.

No cheese... no lettuce or pickles.... Overall, no filler. ;)

 

 

All you need is the displays and (enough) buttons.

Share this post


Link to post
Share on other sites

i had uploaded source and gerber files as completion to this project entry. if u feel that anything is missing, please reply to this thread and i will try to furnish it.

 

i tried to make this project compiled w/ CCS but there are just too many issues that i can / don't have time to solve.

 

Ex.

. CCS assembler and gcc as syntax are very different.

. CCS requires more ram, this project need to use most of the ram as an edit buffer for the msp430 assembler, i am not able to reduce it.

 

 

thanks oPossum on assembler help.

Share this post


Link to post
Share on other sites

That is excellent project. It reminds of good old times. It's like Gakken's GMC-4 .

gmc4_photo.jpg

 

Of course GMC-4 is only 4 bit and your retro computer is way more powerful.  :smile:

Share this post


Link to post
Share on other sites

Hi Chris,

 

Do you have a better schematic?  The one you posted doesn't make sense.  For example, it looks like P1.7 is connect to every segment on the display effectively shorting them all together.

 

Regards, Mike

Share this post


Link to post
Share on other sites

@@Mac

 

Hi Mike, my bad, did not spend enough time to check on the ascii diagrams. They should be like so, w/ the "booster" + LP layout it is easier to see.

 

I took the lazy approach and map the msp430g2553 pinout w/ the LED pinouts (by just super-imposing most pins on top).

 

I used a1 or P1.1 and b2 for P2.,2 in my diagrams.

 

The whole button scanning scheme is just use all segments and add button in all available paths.

 

I.e.

Segment A as line, crosses path w/ B, C, D, E, F, G, H (7)

Segment B as line, crosses path w/ C, D, E, F, G, H (6)..... B-A is same as A-B so cannot use again, 1 less button

This gives 7+6+5+4+3+2+1 possible buttons = 28, but the PCB was designed to hold just 22.

                                         Gnd b6 b7       a7 a6 b5 b4 b3
   +=============================================================================+
   |  .  .  .  .  .  .  .  .  .  .  .  .  o  o  o  o  o  o  o  o  o  o  .  .  .  |
   |  .  .  .  .  .  .  .  .  .  .  .  .  .  |  |_____   |  |  |  |  |  .  .  .  |
   |  .  .  .  .  .  .  .  .  .  .  .  .  .  |_____   |  |  |  |  |  |  .  .  .  |
   |     +  .  . (0)-A--F-(1)(2)-B  .  +  .  +  .  | (0)-A--F-(1)(2)-B  .  .  +  |
   |  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  |  .  .  .  .  .  .  .  .  .  |
   |  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  |__.  .  .  .  .  .  .  .  .  |
   |  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  |  .  .  .  .  .  .  .  .  |
   |  .  +  .  .  E  D (.) C  G (3) .  +  .  +  .  .  E  D (.) C  G (3) .  .  +  |
   |  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  |  |  |  |  |  .  .  .  |
   |  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  |  |  |  |  |  .  .  .  |
   |  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  |  |  |  |  |  .  .  .  |
   |  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  |  |  |  |  |  .  .  .  |
   |  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  |  |  |  |  |  .  .  .  |
   |  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  |  |  |  |  |  .  .  .  |
   |  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  |  |  |  |  |  .  .  .  |
   |  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  |  |  |  |  |  .  .  .  |
   |  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  |  |  |  |  |  .  .  .  |
   |  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  |  |  |  |  |  .  .  .  |
   |  .  .  .  .  .  .  .  .  .  .  .  .  o  o  o  o  o  o  o  o  o  o  .  .  .  |
   +=============================================================================+
                                         Vcc a0 a1 a2 a3 a4 a5 b0 b1 b2


               MSP430G2553 on TI Launchpad
             -----------------    
         /|\|                 |  
          | |                 | 
          --|RST              |
            |                 |     +---------------+  +---------------+
            |  as digit 0 P2.2|-----| _   _   _   _ |  | _   _   _   _ | led modules
            |  as digit 1 P2.4|-----|| | | | | | | ||  || | | | | | | || 1x common cathode 
            |  as digit 2 P2.5|-----||-| |-| |-| |-||  ||-| |-| |-| |-|| 2x common anode  
            |  as digit 3 P2.7|-----||_|.|_|.|_|.|_||  ||_|.|_|.|_|.|_||   
            |                 |     +---------------+  +---------------+
            |                 |        | segment a to g + dot........
            |                 |       /                                 ....\
            |                 |      /                                       \
            |   segment A P1.7|-----+-----+-----+-----+-----+-----+-----+-----+
            |                 | _=_ | _=_ | _=_ | _=_ | _=_ | _=_ | _=_ | _=_ |
            |   segment B P2.3|-o o-+-o o-+-o o-+-o o-+-o o-+-o o-+-o o-+-o o-+
            |                 | _=_ | _=_ | _=_ | _=_ | _=_ | _=_ | _=_ |
            |   segment C P2.0|-o o-+-o o-+-o o-+-o o-+-o o-+-o o-+-o o-+
            |                 | _=_ | _=_ | _=_ | _=_ | _=_ | _=_ |
            |   segment D P1.4|-o o-+-o o-+-o o-+-o o-+-o o-+-o o-+
            |                 | _=_ | _=_ | _=_ | _=_ | _=_ |
            |   segment E P2.6|-o o-+-o o-+-o o-+-o o-+-o o-+
            |                 | _=_ | _=_ | _=_ | _=_ |
            |   segment F P1.6|-o o-+-o o-+-o o-+-o o-+
            |                 | _=_ | _=_ | _=_ |
            |   segment G P2.1|-o o-+-o o-+-o o-+
            |                 | _=_ |
            |   segment H P1.5|-o o-+ (not all buttons populated)
            |                 |  
             -----------------

From led.h, the #defines are the most accurate, as it had been built and run.

 

Also you can easily change what pin to use by changing the #defines. Just put in BIT numbers for the desired digit / segment. And put in zero for not use.

#define SEG_A_P1    (1<<7)
#define SEG_B_P1    0x00
#define SEG_C_P1    0x00
#define SEG_D_P1    (1<<4)
#define SEG_E_P1    0x00
#define SEG_F_P1    (1<<6)
#define SEG_G_P1    0x00
#define SEG_d_P1    (1<<5)
#define DIGIT_0_P1  0x00
#define DIGIT_1_P1  0x00
#define DIGIT_2_P1  0x00
#define DIGIT_3_P1  0x00


#define SEG_A_P2    0x00
#define SEG_B_P2    (1<<3)
#define SEG_C_P2    (1<<0)
#define SEG_D_P2    0x00
#define SEG_E_P2    (1<<6)
#define SEG_F_P2    0x00
#define SEG_G_P2    (1<<1)
#define SEG_d_P2    0x00
#define DIGIT_0_P2  (1<<7)
#define DIGIT_1_P2  (1<<5)
#define DIGIT_2_P2  (1<<4)
#define DIGIT_3_P2  (1<<2)
 

 

Share this post


Link to post
Share on other sites

That was the intention, to re-create those micro trainers of the mid 70s.

 

In the end, The editor, disassembler turned out too hard to use, and you could loss interest using it standalone. I think the reason that being one has to have a good knowledge of msp430 assembly language / machine code to use it properly. And the msp430 instruction set is not small.

 

OTOH, the LMC interpreter is easy (w/ it's limited instruction set) and serve me well when I need to demonstrate "how do computers work".

 

I recently implement the TMS0800 calculator chip and turn the H/W into a vintage calculator

 

http://forum.43oh.com/topic/4232-simulating-a-ti-calculator-with-crazy-11-bit-opcodes/?p=39596

 

This could be a good platform for many little things.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...