Vorwort: -------- Bitte dieses HowTo unbedingt vor dem ersten Aufspielen von EtherKISS gründlich lesen! Wir haben uns bemüht, gängige Stolpersteine aufzuführen und Tipps zu deren Vermeidung zu geben. Trotzdem: der Einsatz dieser Software erfolgt ausschliesslich auf eigene Gefahr! Die Autoren haben sich zwar grösste Mühe gegeben, dass alles so wie beabsichtigt funktioniert, jedoch sind Fehlfunktionen nicht auszuschliessen. Es besteht gegenüber den Autoren kein Haftungsanspruch jeglicher Art. Dies wird mit dem Einsatz der Software anerkannt. Mögliche Probleme beim Programmieren über den ISP-Anschluss: ------------------------------------------------------------ Schaltungsbedingt ist der ISP-Anschluss des ATmega an den selben Pins wie auch der Ethernet-Chip angeschlossen. Es kann daher vorkommen, dass der Ethernet-Chip während des Programmiervorgangs "dazwischenfunkt", da er sich nicht den Reset-Anschluss mit dem ATmega teilt, und bei einem Reset des ATmega daher nicht mit resettet wird! (Achtung, jetzt NICHT die beiden Reset-Eingänge nachträglich miteinander verbinden, hier herrschen unterschiedliche Spannungen!!!) Durch diesen Umstand kann es vorkommen, dass der Programmierprozess gestört wird. Meistens wird der Prozessor schon nicht korrekt identifiziert, sonst werden spätestens beim Vergleichen des Flash-Inhaltes mit dem zu flashenden Programm Unterschiede festgestellt werden. In diesem Fall einfach den Programmiervorgang wiederholen bis er erfolgreich verlaufen ist. Es hat sich gezeigt, dass bei nicht angeschlossenem Ethernet die Fehler deutlich zurückgehen bzw. gar nicht erst auftreten. Wer sicher gehen möchte, der entferne einfach vor dem Programmieren des Net-IO das Ethernetkabel. Ein Wort zu den "Fuses": ------------------------ Bei den sog. "Fuses" handelt es sich um interne Konfigurationseinstellungen des Prozessors die z.B. angeben was für eine Taktquelle angeschlossen ist, wo der Prozessor booten soll etc.. Sind sie falsch eingestellt, kann EtherKISS unter Umständen nicht funktionieren, das Board vom Programmer nicht erkannt werden, oder man kann sich sogar vom Prozessor aussperren und ihn dann nicht mehr ohne weiteres (nur mit einem speziellen HV-Programmer) neu programmieren! Wir empfehlen daher unbedingt ein geeignetes Tool zu verwenden, was die Modifikation der "gefährlichen" Fuses gar nicht erst oder nur in einem Expertenmodus zulässt. Zu beachten ist ebenfalls die inverse Logik der Fuses! Weitere Informationen zu den Fuses würden den Rahmen sprengen und sollten daher vom interessierten Leser im Internet recherchiert werden. Fabrikneue ATmega werden mit voreingestellten Fuses ausgeliefert, die nicht für den Einsatz von EtherKISS auf dem Net-IO geeignet eingestellt sind. Daher sollten die Fuses noch vor dem Beginn der Prozedur auf die empfohlenen Werte hin kontrolliert und ggf. eingestellt werden. Wie das genau geht, hängt vom verwendeten Programmiertool ab und kann daher hier nicht detailliert erklärt werden. Es ist zu beachten, dass bei fabrikneuen ATmega die Programmiergeschwindigkeit des verwendeten Programmers eventuell herabgesetzt werden muss bis die richtigen Fuses eingestellt worden sind! Ist der Programmer zu schnell für den ATmega, wird dieser falsch oder meist gar nicht erkannt. Dies ist ein sehr beliebter Fehler. Erste Inbetriebnahme: --------------------- Bevor das Net-IO-Board mit der EtherKISS-Firmware bespielt wird, sollte ein Funktionstest des noch unveränderten Boards mit der bereits im Controller eventuell aufgespielten Demo-Software des Bausatzanbieters vorgenommen werden! Diese Software sollte auch mit einem Programmiertool ausgelesen und abgespeichert werden! Hierbei auch das EEPROM mit den Konfigrationseinstellungen nicht vergessen. Jetzt sollten die Fuses des verwendeten Prozessors kontrolliert und ggf. richtig eingestellt werden. Die aktuellen Fuse-Einstellungen sollten sicherheitshalber notiert werden. Für einen ATmega32 werden die Fuses L-Fuse: 0xFF (0x3F bei Nutzung des Brown-Out-Detektors) H-Fuse: 0xC7 empfohlen. Die empfohlenen Fuses für einen ATmega644(P) und den ATmega1284P sind: L-Fuse: 0xF7 H-Fuse: 0xD7 E-Fuse: 0xFF (0xFC bei Nutzung des Brown-Out-Detektors) Diese Fuses setzen die Prozessoren auf ext. Quarz, lange Startzeit und Erhaltung des EEPROM bei Flashen neuer Software. Achtung: wird beim ATmega644 der TFTP-Bootloader verwendet, so sind andere Fuseeinstellungen zu wählen! Details hierzu siehe das TFTP-Bootloader-HowTo. Nach dem Aufspielen der EtherKISS-Firmware auf das Net-IO sollte das EEPROM mit den Netzwerk-Konfigurationseinstellungen nicht gelöscht worden sein. Ein gelöschtes EEPROM wird von der EtherKISS-Firmware festgestellt und das Board nimmt in diesem Fall Standardwerte an, mit denen eine erste Kontaktaufnahme möglich ist. Es kann sein, dass das EEPROM für EtherKISS unsinnige Werte enthält, die jedoch nicht als solche erkannt und trotzdem geladen werden. In diesem Fall sind die Standardeinstellungen von den angegebenen Werten abweichend und müssen mit den jeweilien Befehlen korrigiert werden. Siehe hierzu den Abschnitt "Standardwerte". Die erste Konfiguration MUSS in der Regel über die serielle Schnittstelle vorgenommen werden, da der Ethernetteil noch z.T. mit Initialwerten arbeitet und daher wahrscheinlich nicht erreichbar ist. Einstellen der ADC-Referenz: ---------------------------- Der ADC-Wandler im ATmega benötigt eine Referenzspannung, gegen die die jeweils anliegenden Spannungen an den ADC-Eingängen verglichen werden. Bei EtherKISS ist diese Referenz durch programminterne Vorgaben fest auf +5V eingestellt, eine seperate Zuführung an die AREF-Klemme des NetIO DARF nicht mehr erfolgen. Der Jumper J4 (AREF) sollte trotzdem in die Stellung "ext." gesteckt werden, und an der AREF-Klemme ein zusätzlicher Kondensator (100nF) zur benachbarten GND-Klemme nachgerüstet werden. Dies wird von Atmel so empfohlen, der Kondensator wurde leider beim NetIO vergessen. Die notwendige Referenzspannung wird prozessorintern erzeugt und braucht nicht nochmal extern zugeführt werden. Anmerkung: Ob dieser Kondensator wirklich notwendig ist, ist schwer zu sagen, empfohlen wird er jedenfalls. Weiterhin funktioniert EtherKISS auch einwandfrei falls der AREF-Jumper doch auf "int." steht, und somit +5V nochmal extern an den AREF-Pin des ATmega zugeführt werden. Dies soll allerdings laut Datenblatt nicht passieren wenn die prozessorinterne Referenz verwendet wird. Daher den Jumper möglichst immer auf "ext." stecken und gleich auch noch den zusätzlichen Kondensator hinzufügen. In einer späteren Version ist es eventuell geplant, dass die zu verwendende Referenz in der Software ausgewählt werden kann (intern +5V oder extern zugeführt). Zu beachten ist in jedem Fall, dass die Spannung an den ADC-Pins +5V nicht überschreiten darf. Konfiguration über die serielle Schnittstelle: ---------------------------------------------- Dies ist die generelle Prozedur zur Konfiguration der Platine über die serielle Schnittstelle. Sie ist zur ersten Inbetriebnahme, sowie nach jedem Bespielen der Boards mit einer neuen Firmware notwendig. * Das Board spannungsfrei machen * Den Jumper J11 in die Position "prog." stecken * Das Board über ein 1:1-Kabel an eine serielle Schnittstelle des PC anschliessen * Das Ethernet NUR anschliessen wenn es schon konfiguriert wurde! (siehe unten) * Ein ASCII-Terminalprogramm starten, Schnittstelle auf 9600 Baud, 8 Datenbits, keine Parität und ein Stopbit einstellen. Es darf keine Flusskontrolle (weder Software noch Hardware) verwendet werden. * Das Board mit Spannung versorgen, es erscheint die Einschaltmeldung, alle aktuellen Einstellungen werden angezeigt und ein Konsolenprompt erscheint. Die angezeigten Meldungen sollten aufmerksam auf Fehlermeldungen hin durchgelesen werden! Werden Fehlermeldungen (ENC28J60 nicht gefunden, ...) angezeigt, sollte diesen jetzt nachgegangen und die Fehler behoben werden. Ein eventuell angeschlossenes LCD-Display zeigt, sofern es erkannt wurde, zur Information die serielle Baudrate an. Da ein LCD-Display auch eine mögliche Fehlerquelle darstellt, wird ein Anschluss bei der ersten Inbetriebnahme nicht unbedingt empfohlen! Wichtig: das Board startet bei gesetztem "prog"-Jumper IMMER mit 9600 Baud, unabhängig davon, was für eine Baudrate für den KISS-Betrieb konfiguriert wurde! Im Konfigurationsmodus funktioniert KISS nicht, auch AX25IP und TELNET sind abgeschaltet. Es werden lediglich PING-Pakete und ARP-Anfragen bearbeitet, das Versenden von eigenen Pings ist ebenfalls möglich. Die Netzwerkfunktionen sollten jedoch erst NACH der vollständigen Konfiguration der Netzwerkeinstellungen benutzt werden. Jetzt können alle Betriebsparameter angesehen und verändert werden. Eine Ausgabe aller möglichen Kommandos inklusive einer kurzen Beschreibung des Kommandos erhält man mit den "HELP"-Kommando. Alle Parameteränderungen werden grundsätzlich sofort in das EEPROM übernommen. Einige Parameter sollten bzw. können nicht im laufenden Betrieb geändert werden, hier ist ein Neustart zwingend erforderlich. Bei Abfragen von Werten, dies geschieht durch Eingabe des jeweiligen Kommandos ohne zusätzliche Argumente, wird der aktuell verwendete (!) Wert angezeigt. Sollte schon ein geänderter Wert ins EEPROM geschrieben worden sein, so wird dieser NICHT angezeigt, sondern der noch aktuell verwendete Wert! Wird ein unkonfiguriertes EEPROM vorgefunden, so verwendet das Board automatisch die intern fest eingestellte Standardwerte. Das EEPROM bleibt in diesem Fall unverändert bis ein vom Standardwert abweichender Wert eingestellt wird. Für Fortgeschrittene: Wer die EtherKISS-Firmware selst übersetzt, kann in der Datei "config.h" die Standard- einstellungen ändern und so das Board direkt mit seinen Einstellungen starten lassen. Ethernet konfigurieren: ----------------------- Bevor das Board weiter konfiguriert wird, MUSS die MAC-Adresse des Ethernet- Controllers auf jeden Fall geändert werden! Das Board startet bei fehlerhafter bzw. nicht konfigurierter MAC-Adresse im EERPROM immer mit der Adresse 00:20:DE:AD:BE:EF. Dies ist somit auch nach einem Flashen des Boards der Fall wenn das EEPROM gelöscht wurde! * Die MAC-Adresse einstellen: die auf dem Aufkleber befindliche MAC-Adresse durch Doppelpunkte getrennt in das Board eingeben. Kommando: MAC xx:xx:xx:xx:xx:xx Nach der Eingabe einer neuen MAC ist das Board UNBEDINGT mittels "RESET"- Kommando neu zu starten! Sicherer ist es jedoch, vor allem wenn schon ein Netzwerkkabel angeschlossen war, das Board kurze Zeit stromlos zu machen. Dies löscht im günstigen Fall auch gleich die MAC-Tabelle eines angeschlossenen Switches oder PC, da der Netzwerk-Link in diesem Fall auch zusammenbricht. Alle IP-Adressen werden durch Punkte getrennt mit diesen Kommandos eingegeben: * Die eigene IP-Adresse des Boards einstellen: Kommando: IP xxx.xxx.xxx.xxx * Die eigene Subnetzmaske einstellen: Kommando: NET xxx.xxx.xxx.xxx * Das Standard-Gateway des eigenen Subnetzes einstellen: Kommando: ROUTER xxx.xxx.xxx.xxx Jetzt sollte das Board erneut resettet bzw. kurz stromlos gemacht werden. Alle Änderungen wurden sofort nach deren Eingabe im EEPROM abgelegt und werden erst bei einem Neustart übernommen. Das Netzwerkkabel kann nun eingesteckt werden und die Netzverbindung mit dem PING-Kommando überprüft werden. * Kommando: PING Eingehende Pings von anderen Netzteilnehmern sollten ebenfalls beantwortet werden. Für einen Test des eingestellen Standard-Gateways sollte auch eine IP-Adresse ausserhalb des eigenen Subnetzes angepingt werden. Hinweis: Sollte im Betrieb auf dem Ethernet keine Aktivität herrschen, z.B. wenn das Kabel nicht eingesteckt ist, dann führt die Firmware nach 1200 Sekunden einen Zwangsreset aus. KISS konfigurieren: ------------------- Für den KISS-Betrieb muss die zu verwendende Baudrate und der Dialekt eingestellt werden. * Die KISS-Baudrate einstellen: Kommando: KISSBAUD <9600, 19200, 38400, 57600, 115200> * Den KISS-Dialekt einstellen: Kommando: KISSTYPE bzw. Alle KISS-Dialekte verwenden 8 Datenbits, keine Parität und ein Stop-Bit (8N1), sowie keinerlei Flusskontrolle. Zur Erinnerung: die KISS-Baudrate wird NUR verwendet, wenn sich das Board nicht mittels "prog"-Jumper im Programmiermodus und der Jumper J11 sich in Position "normal" befindet! Je nach Art der KISS-Gegenstelle ist nun ggf. ein gekreuztes serielles Anschlusskabel (Nullmodem-Kabel) erforderlich! Wer sicher gehen möchte, verbindet nur die Leitungen RX, TX und GND und schliesst die Statusleitungen nicht an, das Net-IO kann diese in der Standardausführung sowieso nicht bedienen. AX25IP konfigurieren: --------------------- Für den AX25IP-Betrieb muss die IP-Adresse der Gegenstelle eingetragen werden, für die verwendeten UDP-Portnummer sind Standardwerte hinterlegt (Port 10093), die in der Regel nicht geändert werden müssen wenn zwischen zwei EtherKISS- Boards eine Verbindung aufbaut werden soll. Zur Erinnerung: es ist NUR UDP-Verkehr möglich! Dies ist besonders zu beachten falls die Gegenstelle kein anderes Net-IO mit EtherKISS ist. * Die IP-Adresse der AX25IP-Gegenstelle einstellen: Kommando: REMOTEIP xxx.xxx.xxx.xxx Sollen abweichende UDP-Portnummern verwendet werden, so sind diese wie folgt einzustellen. * Eine eigene, abweichende UDP-Portnummer für AX25IP einstellen: Kommando: LOCALPORT * Eine abweichende UDP-Portnummer der Gegenstelle für AX25IP einstellen: Kommando: REMOTEPORT Ein Reset des Boards ist nun empfehlenswert bzw. erforderlich. Es erfolgt (noch) KEINE Analyse der durchgeleiteten AX.25-Pakete, diese werden unabhängig vom nächsten Zielrufzeichen im AX.25-Pfad immer an die eingestellte Gegenstelle geschickt, egal ob sie der richtige Empfänger ist oder nicht. Dies entspricht dem direkten Ersatz eines HF-Links durch einen Ethernet-Link. Die Analyse der weitergeleiteten Pakete ist für einen der grösseren Prozessoren (ATmega644 oder besser) vorgesehen, sie passte leider nicht mehr in den ATmega32. Telnet konfigurieren: --------------------- Telnet ist standardmässig auf Port 23 aktiv, dies ist der in der Regel für Telnet verwendete Port und sollte daher mit Telnet-Clients erreichbar sein. GANZ WICHTIG: Der Telnet-Port steht in der Grundkonfiguration jedem offen und jeder kann Einstellungen des Boards verändern! Daher sollte er unbedingt vom Sysop mit einem Passwort versehen werden. Der Telnet-Port kann mit dem Befehl TELNETPORT geändert werden. * Kommando: TELNETPORT <1 - 65534> Die Portänderung wird erst beim nächsten Neustart aktiv. Ein neues bzw. bestehendes Kennwort kann mit dem SETPASS-Befehl gesetzt werden: * Kommando: SETPASS Ist ein Passwort gesetzt, wird bei einer eingehenden Telnetverbindung ein Login- Prompt gesendet und die Angabe des Passwortes ist zum Fortsetzen zwingend erforderlich. Es ist derzeit nicht möglich, das Board wieder ohne Passwort zu betreiben wenn es mit einem Passwort versehen wurde! Der Telnet-Server verfügt über einen Timeout-Mechanismus, der Verbindungen nach drei Minuten Inaktivität automatisch beendet. Wird der Login mittels Passwort verwendet, so besteht ein Zeitfenster von 20 Sekunden zur Eingabe des Passwortes. Innerhalb dieses Zeitraumes ist eine beliebige Anzahl Versuche möglich, jedoch muss nach 20 Sekunden das richtige Passwort eingegeben worden sein, sonst wird die Verbindung ebenfalls beendet. Eine Telnetverbindung kann durch den "QUIT"-Befehl beendet werden. Es ist nur eine gleichzeitige Telnetverbindung erlaubt, weitere eingehenden Verbindungen werden kommentarlos abgelehnt. Mit Hilfe von Telnet kann das Board von Ferne konfiguriert und abgefragt werden. Wir weisen aber ausdrücklich darauf hin, dass eine bestehende Telnetverbindung die Funktion des Boards stark beeinflusst, da sie sehr Ressourcen fressend ist. Daher sollte sie nur so lange wie nötig gehalten, und in jedem Fall mit "QUIT" beendet werden. Ausgaben des Boards sollten grundsätzlich abgewartet und nicht durch die Eingabe von neuen Befehlen unterbrochen werden! Dies kann zum Auslösen des Watchdogs und einem Neustart des Boards führen. Falls die Ausgaben des Boards sehr langsam eintrudeln, dies ist oftmals auf Windows-Systemen der Fall, dann kann ein Patch des Windows IP Stack Abhilfe schaffen. Näheres hierzu findet man im Internet unter dem Stichwort Nagle-Algorithmus. Konfiguration beenden: ---------------------- * Das Board stromlos machen * Den Jumper J11 wieder in Position "normal" stecken Jetzt werden die Einstellungen für KISS und AX25IP berücksichtigt, auf der seriellen Schnittstelle ist nun kein Konsolenbetrieb mehr möglich! Sofern Telnet konfiguriert wurde, ist das Board nun unter der eingestellten Portnummer mit dem ggf. gesetzten Passwort erreichbar. Ein Umstecken des Jumpers J11 hat im Betrieb keine Auswirkungen, der Betriebsmodus wird erst beim nächsten Reboot gewechselt. Standardwerte: -------------- Diese Werte verwendet EtherKISS nach einem Flash-Vorgang wenn noch keine Konfiguration durchgeführt wurde: Einstellung : Wert Befehl zum Ändern ------------------------------------------------------------------------------- Terminal-Baudrate : 9600 Baud - (wenn J11 in "prog."-Position) KISS-Dialekt : KISS KISSTYPE KISS-Baudrate : 57600 Baud KISSBAUD MAC-Adresse : 00:20:DE:AD:BE:EF MAC eigene IP-Adresse : 192.168.0.90 IP Subnetzmaske : 255.255.255.0 NET Default-Router : 192.168.0.1 ROUTER eigener AX25IP UDP-Port : 10093 LOCALPORT entfernter AX25IP UDP-Port: 10093 REMOTEPORT entfernte IP-Adresse : 192.168.0.91 REMOTEIP Telnet TCP-Port : 23 TELNETPORT Telnet-Passwort : nicht gesetzt SETPASS digitaler IO an Port C : 0 (alle aus) DOUT Zwangsreset : 1200 Sekunden - (nur bei Netzwerkinaktivität) LCD-Display anschliessen: ------------------------- Es ist der Anschluss eines 2x40 LCD mit HD44780 oder einem kompatiblen Controller vorgesehen. Für nähere Informationen siehe LCD.txt. Ist ein LCD-Display angeschlossen, so werden automatisch wechselnde Statusinformationen angezeigt (Uptime/KISS-Modus, KISS- und AX25IP-Statistik, Netzwerkstatus, ...) Befehle für den täglichen Bedarf: --------------------------------- EtherKISS ist generell wartungsfrei, es existieren jedoch ein paar Befehle, die dem Sysop noch zusätzliche Möglichkeiten eröffnen. Diese sollen hier noch kurz vorgestellt werden. Die Analogeingänge können mit dem Befehl "ADC" abgefragt und angezeigt werden. Die Abfrage erfolgt kontinuierlich im Hintergrund, es dauert 8 Sekunden, bis der gleiche Kanal erneut abgefragt und der angezeigte Wert aktualisiert wird. Die ausgegebenen Werte liegen im Bereich zwischen 0 und 1023, wobei 0 einer Spannung von 0V und 1023 der AREF-Spannung (Jumper J4) entspricht (max. 5V). Der AREF-Jumper sollte in Position "int." gesteckt sein und muss nur bei externer Referenz auf "ext." gesteckt werden. --- Die digitalen IO-Pins des Prozessorports C, welcher direkt auf die 25pol. DSUB-Buchse geführt ist, lassen sich mit dem Befehl "DOUT" abfragen und verändern. Wurde ein Standardschema gespeichert, so wird dieses beim Start geladen und am Port wieder ausgegeben. Ein paar Beispiele: "DOUT" zeigt die aktuellen Zustände der Portpins an "DOUT 1 1" setzt Pin 1 von Port C auf HIGH (5V) "DOUT 1 0" setzt Pin 1 von Port C auf LOW (0V) "DOUT S" speichert den aktuellen Zustand des Ports C als Default im EEPROM Generell: "DOUT <0|1>" Achtung, die Pins des Port C haben nichts mit den Pin-Nummer des DSUB-Anschlusses zu tun! Im Net-IO-Manual gibt es eine Tabelle, welcher Pin des Port C an welchen Pin der DSUB-Buchse geführt ist. (Port C Pin 0 -> DSUB Pin 2, Port C Pin 1 -> DSUB Pin 3 usw.) Die Pins sind direkt und ungepuffert auf den Prozessor geführt, daher ist beim Anschluss von externer Peripherie auf die Spezifikationen zu achten um den ATmega nicht zu beschädigen! --- Eine Ausgabe der internen Statistiken und einiger Einstellungen ist mit dem "VERSION"-Befehl möglich. Diese Angaben entsprechen auch weitestgehend denen, die auf einem eventuell angeschlossenen LCD-Display angezeigt werden. Bugs, Fragen und sonstiges: --------------------------- Wer Fragen, Probleme bei der Inbetriebnahme und dem Betrieb, Verbesserungsvorschläge oder Bugs gefunden hat, der kann sich gerne bei uns melden. Bitte fertigt im Fehlerfall eine möglichst ausführliche Beschreibung an und legt einen Mitschnitt des Ausgabe des "VERSION"-Befehls bei falls das Board erreichbar gewesen ist. Bei KISS- oder AX25IP-Problemen ist auch ein Monitor-Trace der Gegenstelle interessant, falls es sich dabei um eine Nodesoftware handelt. Bitte gebt dann immer mit an, welche Monitoreinstellungen aktiv waren. EMail: etherkiss@gmx.de dg9obu@gmx.de df2au@gmx.de Packet: dg9obu@db0uhi.#nds.deu.eu df2au@db0fc.#nds.deu.eu DL-Convers Kanal #170 Homepages: http://dg9obu.nordlink.org http://df2au.nordlink.org