(Der Schaltplan)
(Der Schaltplan)
 
(6 dazwischenliegende Versionen des gleichen Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
== Der Schaltplan ==
 
== Der Schaltplan ==
  
'''Update: unter [http://213.239.212.163/mediawiki/index.php/Microwebserver] befindet sich die weiterentwickelte Version'''
+
'''Inzwischen wird auch das Pollin AVR-NET IO unterstützt, also sich die neue Seite ankucken lohnt sich!'''
 +
 
 +
'''Update: unter [http://wiki.neo-guerillaz.de/mediawiki/index.php/Hauptseite] befindet sich die weiterentwickelte Version'''
  
 
[[Bild:AVR-Ethernetboard.jpg|thumb|200px|die Schematik]]
 
[[Bild:AVR-Ethernetboard.jpg|thumb|200px|die Schematik]]
Zeile 112: Zeile 114:
 
== Links ==
 
== Links ==
  
 +
* [http://wiki.neo-guerillaz.de/mediawiki/index.php/Hauptseite OpenMCP project page]
 
* [http://lochraster.org/etherrape/ etherrape project page]
 
* [http://lochraster.org/etherrape/ etherrape project page]
 +
* [http://www.ulrichradig.de/home/index.php/avr/eth_m32_ex ETH_m32_EX die bekannt Version von Ulrich Radig]
 +
* [http://www.mikrocontroller.net/articles/Miniwebserver Weitere Projekte zum Thema]
  
 
== SVN ==
 
== SVN ==

Aktuelle Version vom 21. April 2009, 14:41 Uhr

Der Schaltplan

Inzwischen wird auch das Pollin AVR-NET IO unterstützt, also sich die neue Seite ankucken lohnt sich!

Update: unter [1] befindet sich die weiterentwickelte Version

die Schematik
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 ATmega32 von Atmel (alternativ kann auch ein Pinkompatibler ATmega644 eingesetzt werden, der mehr Flash und RAM hat) der mit den internen RC-Oszilator läuft und der ENC28J60 von Microchip der mit einem 25MHz externen Grundwellen Quarz läuft. Verbunden sind die beiden ICs per SPI-BUS, einen sparsamen seriellen 4-Drahtbus. Der 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 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.

Anzahl Bauteil
1 IC1: ATmega32P
1 IC2: MC33269-SO8
1 IC3: MAX232
1 U1: ENC28J60-DIL
1 J1-0: FastJack 10/100Base m.LED
1 Q1: Quarz 25MHz (Grundwellenquarz)
1 X1: 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

der Bestückungsplan

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 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 www.mikrocontroller.net wurde mal ein Thread gestartet der sich zu lesen lohnt, auch sollte das 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

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