(AVR-Programmiergrät)
 
(9 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== AVR-Programmiergrät ==
+
* [[AVR-Programmiergrät (RS232)]]
 
+
* [[AVR-Programmiergrät (USB)]]
[[Bild:AVRISP.png|thumb|200px|die Schematik]]
+
* [[AVR-Board mit Ethernet]]
[[Bild:AVRisp.jpeg|thumb|200px|die fertige Platine (ältere Version)]]
+
* [[Mikrocontroller/TouchSensor]]
 
+
AVRs sind Mikrocontroller mit den man allerhand anstellen kann. Die Frage die sich stellt ist nur, wie bekommt man das Programm in die kleinen Steinchen. Dafür hat der Hersteller Atmel sich eine Schnittstelle erdacht. Mit dieser Schnittstelle kann man den Controller seriell programmieren. Danach behält er die Daten in seinem Flash und jedes mal, wenn man Spannung anlegt geht die Post ab und das Programm läuft.
+
 
+
Da Atmel relativ freundlich ist was Entwicklungsumgebungen angeht, kann man bei Atmel auch fast alles für Lau bekommen, außer die Hardware halt. Die kostet logischerweise ein bischen Geld. Da aber auch der Hobbybastler für Atmel eine Zielgruppe darstellt, hat er es dieser Gruppe einfach gemacht und einen relativ einfachen Programmer geschrieben. Dieser Programmer kann auch AVRs in Schaltung programmieren (ISP). Dies ist ausführlich in der [http://www.atmel.com/dyn/products/app_notes.asp?family_id=607 Application Note 910] beschrieben. Dies hier ist ein vereinfachter Nachbau der im Prinzip aber das selbe tut, nur mit minimaler Hardware.
+
 
+
Da es Nachfragen nach diesem Programmiergerät gibt, werden wir in Kürze einige Platinen fräsen und unter die Leute bringen. Aber man wird schnell merken das es das Henne-EI-Problem gibt, denn auf den Programmer befindet sich ja auch ein Controller, der erst mal programmiert sein will. Auch hier werden wir Abhilfe schaffen und versuchen ein Komplettset anzubieten mit allen nötigen Teilen und einem fertig programmierten Controller.
+
 
+
Die jetzige Version ist noch auf eine vorhandene RS232 angewiesen, um betrieben zu werden. Man kann natürlich auch mit einen USB-RS232-Wandler arbeiten. Eine USB-Version ist in Vorbereitung.
+
 
+
Die Spannungsversorgung erfolgt über die Zielschaltung in der der zu programmierende Controller steckt. Man muss also auf die Pinbelegung des Steckers achten. Als Programm kann mensch [http://www.bsdhome.com/avrdude/ AVRdude] benutzen. AVRdude gibt es für Unixe und Windows (darwinports, FreeBSD-Ports etc.). Nach der Installation muss man nach einer ''avrdude.conf'' suchen. Dort ist AVR910 als Programmiergerät einzutragen. AVR-Studio bringt selbst ein Programm mit, welches  auch mit diesem Programmiergerät funktioniert.
+
 
+
Direkt [[Platinenfräse|fräsbare]] oder [[Platinen ätzen|ätzbare]] Layouts sollten im SVN zu finden sein.
+
 
+
=== Bauteilliste ===
+
 
+
{| border="1" cellspacing="0" cellpadding="2"
+
|----- bgcolor="#eeeeff"
+
!Anzahl !! Bauteil
+
|-----
+
| 5 || C1, C2, C3, C4, C5: 0.1 uF
+
|-----
+
| 1 || R1: 270 Ohm
+
|-----
+
| 1 || R2: 470 Ohm
+
|-----
+
| 1 || IC1: AT90S233P
+
|-----
+
| 1 || IC2: MAX232
+
|-----
+
| 1 || X1: SUB-D-9-Buchse
+
|-----
+
| 1 || JP1: 2x5 Pinleiste
+
|-----
+
| 1 || JP2: 2x1 Pinleiste
+
|-----
+
| 1 || S1: 4-Pin Taster NO (offen per default)
+
|-----
+
| 1 || LED1: Dual-LED, im Zweifelsfall eine Standard-LED
+
|-----
+
|}
+
 
+
== AVR-Board mit Ethernet ==
+
 
+
 
+
=== Der Schaltplan ===
+
 
+
[[Bild:AVR-Ethernetboard.jpg|thumb|200px|die Schematik]]
+
 
+
[[Bild:Bestueckungsplan.png|thumb|200px|der Bestückungsplan]]
+
 
+
[[Bild:AVR-webserver.jpeg|thumb|200px|funktionsfähige Platine]]
+
 
+
Der Schaltplan gestaltet sich recht übersichtlich. Im großen und ganzen verrichten drei ICs die Arbeit. Da wären zum einen der [http://www.atmel.com/dyn/products/product_card.asp?part_id=2014 ATmega32 von Atmel] der mit den internen RC-Oszilator läuft und der [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1335&dDocName=en022889 ENC28J60 von Microchip] der mit einem 25MHz externen Grundwellen Quarz läuft. Verbunden sind die beiden ICs per [http://en.wikipedia.org/wiki/Serial_Peripheral_Interface SPI-BUS], einen sparsamen seriellen 4-Drahtbus. Der [http://www.maxim-ic.com/quick_view2.cfm/qv_pk/1798 MAX232] sorgt für das anpassen der Logikpegel der RS232 an die des ATmega32. Der ATmega32 sorgt für die Verarbeitung der vom ENC28J60 empfangenden Ethernetframes, wobei der ENC28J60 einige Frames zwischenspeichern kann, damit nicht so schnell Frames verloren gehen. Der [http://de.wikipedia/org/wiki/Internetprotokollfamilie TCP/IP-Stack] wird komplett im ATmega32 realisiert. Das Platinenlayout ist einseitig ausgelegt und mit DIL-Gehäusen bestückt, so das es auch für den nicht so begabten Löter eine Chance gibt das Projekt hardwareseitig ohne Verluste zu Ende zu bringen. Einzig ein kleiner Drop-Down-Wandler ist in SMD gemacht, besitzt aber dafür auch nur 8 Beinchen. Die Stromaufnahme der Platine liegt ca. bei 150mA, kann aber durch diverse Sleep-Stufen noch reduziert werden. Zusätzlich ist das Board noch mit zwei Pinleisten bestückt, damit kann man anderweitig mit der Außenwelt in kontakt treten. So sind z.B. die 8ADC Eingänge nach außen geführt, welche bei entsprechender Programmierung eine genauigkeit von 10-bit haben, oder man verwendet sie einfach als digitale Ein-/Aus-gänge. Desweiteren wird ein I2C Bus, JTAG-Interface ( wenn eingeschaltet ), PWM-Ausgänge, Komperatoren, Timereingänge und die Anschlussmöglichkeit für einen RTC-Quarz ( 32.768kHz ) um eine RTC in Software zu bauen geboten.
+
 
+
=== Bauteilliste ===
+
 
+
Für das Atmelbord mit Ethernetcontroller werden folgende Bauteile benötigt. Die Gesamtkosten in Prototypstückzahlen betragen so etwa 25 Euro.
+
 
+
{| border="1" cellspacing="0" cellpadding="2"
+
|----- bgcolor="#eeeeff"
+
!Anzahl !! Bauteil
+
|-----
+
| 1 || IC1: [http://cgi.segor.de/user-cgi-bin/sidestep2.pl?foto=1&Q=atmega32-16pu&M=1 ATmega32P]
+
|-----
+
| 1 || IC2: [http://cgi.segor.de/user-cgi-bin/sidestep2.pl?foto=1&Q=MC33269&M=1 MC33269-SO8]
+
|-----
+
| 1 || IC3: [http://cgi.segor.de/user-cgi-bin/sidestep2.pl?foto=1&Q=MAX232&M=1 MAX232]
+
|-----
+
| 1 || U1: [http://cgi.segor.de/user-cgi-bin/sidestep2.pl?foto=1&Q=ENC28J60&M=1 ENC28J60-DIL]
+
|-----
+
| 1 || J1-0: [http://cgi.segor.de/user-cgi-bin/sidestep2.pl?foto=1&Q=jack&M=1 FastJack 10/100Base m.LED]
+
|-----
+
| 1 || Q1: Quarz 25MHz (Grundwellenquarz)
+
|-----
+
| 1 || X1: [http://cgi.segor.de/user-cgi-bin/sidestep2.pl?foto=1&Q=DS09M-90%B4%2Fo.Bolzen&M=1 DS09M-90´/ohne Bolzen]
+
|-----
+
| 1 || D1: 1N4004 Diode
+
|-----
+
| 4 || C1,C12,C6,C7: Kondensator 0,1µF
+
|-----
+
| 2 || C2,C3: Keramikkondensator 10nF
+
|-----
+
| 2 || C4,C5: Keramikkondensator 18pF
+
|-----
+
| 4 || C8-C11: Kondensator 10µF
+
|-----
+
| 4 || R1-R4: Widerstand 51Ohm 1%
+
|-----
+
| 1 || R5: Widerstand 2kOhm 1%
+
|-----
+
| 3 || R6-R8: Widerstand 270Ohm
+
|-----
+
| 1 || L1: Ferritkern 100mA, alternativ geht auch eine Drahtbrücke
+
|-----
+
|}
+
 
+
=== Aufbau- und Prüfplan ===
+
 
+
Zum Aufbau hält man am besten ein Netzteil bereit, damit man die Schaltung Stück für Stück überprüfen kann. Ein altes MobiltTelefonnetzteil sollte es tun. Das Netzteil sollte natürlich Gleichspannung (DC) liefern und bei etwa 150 mA nicht in die Knie gehen. Vor dem Bestücken sollte die Leiterbahnen auf evtl. kurzschlüße und Brücken überprüft werden.
+
 
+
Beim aufbauen werden die kleineren Bauteile zuerst aufgelötet. Zum Beispiel in folgener Reihenfolge:
+
 
+
* Spannungswandler (SMD-Baustein)
+
* Diode
+
* C1, C7, C6
+
 
+
Dann die Stromversorgung anlöten. Strom einschalten. Auf der Kühlfläche unter dem Dropdown-Wandler sollte man nun gegen Masse 3.3V messen. Am Pluspol von C6 sollten auch 3.3V gegen Masse anliegen. An den IC-Sockeln sollte jetzt die Versorgungsspannung geprüft werden. An IC3 sollten an Pin 2 -> 1 3.3V zu finden sein. An U1 sollte die gleiche Spannung zwichen Pin 19,20,15,25,28 -> 11,21,18,22,2 und bei IC1 zwischen Pin 11 -> 10.
+
 
+
* IC3 einlöten, prüfen ob zwischen Pin 2 (GND) und Pin 1 (Vcc) 3.3V zu finden sind. Zwischen Pin 2 und Pin 10 sollten etwa -6 bis -7 V zu messen sein.
+
 
+
* U1 einlöten
+
* Quarz, C4, C5, C3, C2 (C4 und C5 müssen bei einigen Revisionen des ENC28j60 nicht eingelötet werden das der Quarz trotzdem sicher anschwingt, aber sonst nicht)
+
* R5
+
 
+
Am Quarz sollte man nun 25 MHz messen. Das erfordert natürlich ein entsprechendes Gerät.
+
 
+
* R1, R2, R3, R4
+
* L1, alternativ eine Drahtbrücke
+
* RJ45-Jack, überflüssige Plastiknasen kann man abbrechen. Das hält schon.
+
 
+
Board ans LAN anschliessen. Wenn die Link-LED an ist, ist alles in Ordnung.
+
 
+
* Rest einlöten
+
 
+
Ganz zum Schluss lötet man den Atmel ein. Der kann auch gerne gesockelt werden.
+
 
+
=== Software ===
+
 
+
Die Software ist schon recht weit fortgeschritten, aber leider findet sich keine Zeit im moment um sie weiter zu entwickeln. Aber die notwendigsten Sachen gehen bereits und funktioneren auch schon recht gut und stabil. Folgende Protokolle sind implementiert:
+
 
+
* Ethernet
+
* ARP / rARP
+
* IP / TCP (Verbindungs-aufbau und -annahme) / UDP (Verbindungs-aufbau und -annahme) / Ping
+
* DHCP-Client / NTP-Client / DNS-Client
+
 
+
Desweiteren sind 3 kleine Services funktionsfähig, da wären:
+
 
+
* http mit einer statischen seite mit Statistiken, ein Testserver steht [http://www.neo-guerillaz.de:82 hier] zur Verfügung
+
* Telnet-Server für ein bischen spielen
+
* UDP-Echo Server
+
 
+
Das ganze findet ohne Debugausgaben auf der RS232 etwa in 22kByte platz. Da ist also noch ein bischen Platz für eigene Spielereihen. Der ENC28j60 kann im Pollingmode oder im Interuptmode betrieben werden, was die Portierung an andere Gegebenheiten in anderen Schaltugen vereinfacht, zu merken ist das in der Latenz beim Betrieb. Der ganze Stack an sich arbeitet im Hindergrund, man braucht sich also um den ganzen Netzwerkkram nicht kümmern, sondern arbeitet über Handles. Dies erleichtert die Arbeit enorm. Die Services arbeiten weitesgehend parallel, da sich die einzelnen Services sehr gut in Statemaschines verpacken lassen und sich der Stack um das bereitstellen / versenden der Daten kümmert und den ganzen Protokollkram z.b. bei TCP selber erledigt. Unter [http://www.mikrocontroller.net/topic/48519#new www.mikrocontroller.net] wurde mal ein Thread gestartet der sich zu lesen lohnt, auch sollte das [http://www.mikrocontroller.net/articles/ENC28J60 wiki] nicht überlesen werden, da es doch recht interessante links enthält.
+
 
+
=== Firmware übersetzen und flashen ===
+
 
+
Im SVN-Repository gibt es ein Verzeichnis ''webserver''. Der darin enthaltene Code kann mittels ''make'' übersetzt werden.  Wahrscheinlich muss dazu noch das ''makefile'' angepasst werden. Im ''makefile'' wird die MAC-Adresse, die IPV4-Adresse sowie die Netzwekmaske definiert. Mit dem Aufruf von ''make'' werden die Quellen übersetzt. Nach Eingabe von ''make programmer'' wird ''avrdude'' aufgerufen und die Firmware wird in den Atmel geschrieben. Sollte der Atmel hängen, muss man ein- bis zweimal wiederholen.
+
 
+
Mit '''ping''' sollte man den Controller via ICMP ansprechen können. Geht das nicht, helfen sicherlich Tools wie tcpdump oder ethereal beim Debuggen.
+
 
+
=== Anwendung ===
+
 
+
Eine Anwendung ist z.b. die einfache Wandlung von RS232 nach Ethernet. So lassen sich z.b. Geräte ohne Ethernet anbinden, oder wie berichtet wurde kann man auch einen Server der eine RS232 Konsole bietet anbinden. Mit einen Aufsatz kann man den Controller auch mit relativ wenig Hard- und Soft-wareaufwand in einen MP3-Streamingclient umbauen. Möglichkeiten gibt es da viele.
+
 
+
=== Links ===
+
 
+
* [http://lochraster.org/etherrape/ etherrape project page]
+
 
+
== SVN ==
+
 
+
Alle Dateien sollten im SNV vorhanden sein.
+
 
+
Anon-SVN:
+
 
+
svn co svn://anonsvn.h3q.com/svn/mikrokontroller
+
 
+
Entwickler-SVN:
+
 
+
svn co svn+ssh://svn.h3q.com/svn/mikrokontroller
+
 
+
Trac:
+
 
+
Das ist gerade kaputt.
+
 
+
https://anonsvn.h3q.com/projects/mikrokontroller
+
  
 
[[Kategorie:Elektronik]]
 
[[Kategorie:Elektronik]]
[[Kategorie:Projekte]]
 

Aktuelle Version vom 25. Januar 2008, 00:00 Uhr