Mikrocontroller (AVR und AT89Sxxxx) mit zugehoeriger Software fuer das Betriebssystem Linux (i86) ---------------- Disclaimer --------------------------------------------------- WARNUNG: Ich uebernehme keinerlei Garantie fuer die korrekte Funktion der hier vorgestellten Hard- und Software. Insbesondere schliesse ich jegliche Haftung aus, die aus eventuellen Fehlern in Hardware, Software oder Beschreibung resultieren! Der Nachbau dieser Schaltung erfolgt in jedem Falle auf eigenes Risiko! Ich empfehle dringend die Angaben der vorliegenden Beschreibung mit der Dokumentation des PC-Parallelport der Datenblaettern der Mikrocontroller vergleichen, da ich definitiv nicht unfehlbar bin! Das Projekt darf im nicht-kommerziellen Bereich ohne Einschraenkungen genutzt werden. Verbesserungsvorschlaege oder Fehlerhinweise nehme ich gern entgegen, Support kann ich jedoch nur sehr eingeschraenkt leisten. Alle Dateien dieses Pakets unterliegen meinem Urheberrecht! Volker Bosch, 15 Sep. 2000 volker.bosch(at)z.zgs.de ------------------------------------------------------------------------------------- 1. Beschreibung =============== Die vorliegende Schaltung ermoeglicht die Programmierung des ISP-faehigen ATMEL-Mikrocontroller ueber den Parallel-Port eines PCs. Es koennen die Controllerfamilien AT89Sxxxx und AVR (AT90Sxxxx) programmiert werden. Das Projekt gliedert sich in die folgenden Verzeichnisse: pcb Platinenlayout, mit dem PCB Ver.1.6.3 erstellt (siehe http://sourceforge.net/projects/pcb oder ftp.uni-ulm.de) avr-loader Quellen der Software zur Programmierung der AVR-Familie, fuer Linux (Kernel 2.2.16, egcs-2.91.66, glibc2) at89s8252 Quellen der Software zur Programmierung des at89s8252 fuer Linux (Kernel 2.2.16, egcs-2.91.66, glibc2) 2. Hardware =========== Der Programmieradapter entspricht dem Adapter des "STK 200" Starterkits. In Unterverzeichnis "pcb" findet sich das komplette Layout, welches auf einer einseitigen Platine in den Abmessungen 40mm x 40mm realisiert werden kann. Die Datei avr-prg.pcb ist die mit pcb 1.6.3 (http://sourceforge.net/projects/pcb oder ftp://ftp.uni-ulm.de/pub/pcb) erzeugte Layout-Datei. Falls pcb nicht installiert ist, liegt auch der Bestueckplan (avr-prg-best.ps) und das (spiegelbildliche) Layout (avr-prg-ls.ps) vor. Stueckliste: Bez. Beschreibung Bezugsquelle (Best-Nr) -----+----------------------------------------+------------------------- S1 Pfostenstecker, 10pol,gewinkelt Reichelt (D-SUB ST 25) S2 Sub-D,25pol. maennl, m.Loetkelchen Reichelt (PSL 110W) RN1 Widerstandsarray 8+1, 4,7 kOhm Reichelt (SIL 9-8 4,7k) IC1 74HC244 Reichelt (74 HC 244) D1 Bat48, Schottky-Diode (notf. 1N4148) Reichelt (BAT 48) R1 1MegOhm Reichelt (1/4 W 1M) C1 100n, keramischer Kondensator, RM 2,5 Reichelt (Z5U-2,5 100n) C2 100uF/16V, Elko, stehend (radial) Reichelt (rad 100/16) 2 Schrauben M 2,5 x 10 + Muttern Sowie fuer das Kabel: 50 cm Flachkabel 10pol. Reichelt (AWG 28-10G) 2x Pfostenbuchse 10pol, schneid-klemm Reichelt (PFL 10) Das Layout ist sehr einfach zu bestuecken. Der Sub-D-Stecker wird mit den Loetkelchen direkt auf die Loetseite der Platine geloetet. Auf der Bestueckseite sind die Masse-Pins (18 bis 25) mit einer Drahtbruecke zu verbinden und anschliessen mit einem Drahtstueck durch das unterhalb von Pin 25 liegende Loetpad mit der Masseflaeche zu verbinden. Auf der Bestueckseite sind des Weiteren noch zwei Drahtbruecken erforderlich. Der Pfostenstecker sollte eine Ausfuehrung mit Auswurfhebeln sein. Aus mechanischen Gruenden sollte er mit zwei M 2,5-Schrauben auf der Platine befestigt werden. 3. Software =========== 3.1. AVR-Programmiersoftware Im Verzeichnis "avr-loader" findet sich das komplette Projekt. Es sollte sich ohne grosse Anpassungen mittels "make" auf jedem aktuellen i86-Linux-System compilieren lassen (hier: Linux 2.2.16, egcs-2.91.66, glibc2, i586@133MHz). Bei schnellen Rechnern muss ggf. das Timing angepasst werden (siehe Datei port-io.c). Ich arbeite problemlos mit einem 586/133MHz. Falls mir Jemand einen schnelleren Rechner schenkt bin ich gerne bereit die Software auch an diesen anzupassen ;-) Das Programm avr greift direkt auf den Druckerport zu und muss deshalb unter root-Rechten laufen! Bei Aufruf ohne Parameter gibt das Programm die folgende Hilfsseite aus: Usage: avr -t -P -c -C -d -D -l -f Code fmt: -b bin, -s S-Rec, -i I-Hex Data fmt: -B bin, -S:S-Rec, -I I-Hex -e:erase, -p:program, -v:verify -L:show lock bits, -F: show fuse bits -A:force dev target device -- supported devices: AT90S1200,AT90S2313,AT90S2323,AT90S2333 AT90S2343,AT90S4414,AT90S4433,AT90S4434 AT90S8515,AT90S8535 printer port (default: lp0), supported ports: lp0,lp1,lp2 LockBits -- supported LockBits: Lb1,Lb2,Bl12,Bl11,Bl02,Bl01 FuseBits -- supported FuseBits: SPIEN,RCEN,FSTRT,BODLEVEL,BODEN,CKSEL3 CKSEL2,CKSEL1,CKSEL0,EESAVE,SUT1,SUT0 BOOTRST,RSTDSBL Use -f= for resetting fuse bits If no data format given, fmt is determined by file extension 3.2. at89S-Programmiersoftware Die Software unterstuetzt bisher nur den at89s8252. Fuer die Compilerung gilt das im Abschnitt 3.1 gesagte. Auch hier gibt es eine Hilfsseite: at89s8252: Ver:0.1(Built:Sep 15 2000/11:19:30) Usage: at89s8252 -t -P -L -c -C -d -D -l Code fmt: -b bin, -s S-Rec, -i I-Hex Data fmt: -B bin, -S:S-Rec, -I I-Hex -e:erase, -p:program, -v:verify target device. (default: AT89S8252), supported: AT89S8252 printer port (default: lp0), supported: lp0,lp1,lp2 LockBits (supported: LB1,LB2,LB3) Debug level If no data format given, fmt is determined by file extension 15.Sep.2000 Volker Bosch volker.bosch(at)z.zgs.de