Programmable Curcuit Board
//MAS 863.09 How to Build (almost) Anything
//Boris Kizelshteyn


For this assignment we were asked to create a programmable cuircuit board, cables to attach it to a PC and to program it to say Hello World!

To complete this assignment I took the following steps:

1. I milled the board using the Modela fabrication machine and cad.py on the provided cad file. This process ewas pretty straigh forward, though it takes a bit of practice to zero the drill bit just right, I made one board where the etching was way too deep. I found teh extending teh tape beyond the length of the board really helped to keep it flat and secure during milling.

2. I soldered on the parts. I found that spreading them all out on a piece of paper and marking what they were, made for a much easier time while soldering. This part went pretty smooth.

3. Now came time to make the cables. I originally wanted to make a dasa board and use USB, but I ran into some bad luck. I milled my dasa board and went to work soldering, but I put in the wrong voltage component and then when I went to replace it, I used the glue gun to remove the solder and ended up destroying the whole board. This happened to me twice actually, once here and another time when I had to switch out the processor on the chip later in the process. Anyway, I never got the glue gun solder removal working and I never finished the Dasa, I just made the serial cables.

4. Making the serial cables was mostly trial and error for me, I remade the cables 3x and finally they worked. I found that ignoring the colors and just matching up the numbers worked best for me. Getting the tiny wires into the little clips was really a chore and I wondered if there wasn't a tool we were missing. What would have saved a tremendous amount of time would have been a working set of cables and a chip, so that we could test different aspects of what we had built. A faulty cable caused me to fry my chip and the have to use the glue gun, which removed everything off my chip, which made me have to remake it. Lot's of time. If I had this to do over again, I would have aited until someone I knew had thier cables made and working and would have borrowed them to test.

5. Programming was really easy once I figured out what the steps to doing it were. A really well organized tut on how to do it is here. Since I had this tut and I was feeling very IHTFP, I decided to mod the file to say "IHTFP Hello World! IHTFP".

fab@localhost:~/Desktop$ gavrasm hello.serial.45.asm
+------------------------------------------------------------+
| gavrasm gerd's AVR assembler Version 2.1 (C)2006 by DG4FAC |
+------------------------------------------------------------+
Compiling Source file: hello.serial.45.asm
-------
Pass:        1
Line: 14
Warning 009: Include defs not necessary, using internal values!
  File: hello.serial.45.asm, Line: 14
  Source line: .include "tn45def.inc"
111 lines done.

Pass 1 ok.
-------
Pass:        2
Line: 14
Warning 009: Include defs not necessary, using internal values!
  File: hello.serial.45.asm, Line: 14
  Source line: .include "tn45def.inc"
111 lines done.

Warning 001: 1 symbol(s) defined, but not used!


41 words code, 13 words constants, total=54 =  2.6%

2 warnings!
Compilation completed, no errors. Bye, bye ...
fab@localhost:~/Desktop$ avrdude -p t45 -c bsd -U flash:w:hello.serial.45.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9206
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "hello.serial.45.hex"
avrdude: input file hello.serial.45.hex auto detected as Intel Hex
avrdude: writing flash (108 bytes):

Writing | ################################################## | 100% 0.04s

avrdude: 108 bytes of flash written
avrdude: verifying flash memory against hello.serial.45.hex:
avrdude: load data flash data from input file hello.serial.45.hex:
avrdude: input file hello.serial.45.hex auto detected as Intel Hex
avrdude: input file hello.serial.45.hex contains 108 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.03s

avrdude: verifying ...
avrdude: 108 bytes of flash verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

fab@localhost:~/Desktop$


 (dec 10  hex a)
67496: I  (dec 73  hex 49)
67497: H  (dec 72  hex 48)
67498: T  (dec 84  hex 54)
67499: F  (dec 70  hex 46)
67500: P  (dec 80  hex 50)
67501:    (dec 32  hex 20)
67502: H  (dec 72  hex 48)
67503: e  (dec 101  hex 65)
67504: l  (dec 108  hex 6c)
67505: l  (dec 108  hex 6c)
67506: o  (dec 111  hex 6f)
67507:    (dec 32  hex 20)
67508: W  (dec 87  hex 57)
67509: o  (dec 111  hex 6f)
67510: r  (dec 114  hex 72)
67511: l  (dec 108  hex 6c)
67512: d  (dec 100  hex 64)
67513: !  (dec 33  hex 21)
67514:    (dec 32  hex 20)
67515: I  (dec 73  hex 49)
67516: H  (dec 72  hex 48)
67517: T  (dec 84  hex 54)
67518: F  (dec 70  hex 46)
67519: P  (dec 80  hex 50)
67520:
 (dec 10  hex a)

Attached is my moded source.

IHTPF hello.serial.45.asm

//Conclusion


All in all this wasn't a hard assignment given the concepts and skills aquired. I wished the directions were clearer and that we had a working model to use when testing, but perhaps not having these things made me learn more. My next step is to mode the chip so I can use a USB cable to both program and power the AVG proc. This will be alot more useful than the serials.