Ich stehe vor einem recht eigenartigen Problem mit dem ENC28J60, aber der Reihe nach. Ich habe für das AVR-NET-IO-Board, bestückt mit einem 644-er, einen LAN-BootLoader geschrieben. Der basiert prinzipiell auf dem Radig-Stack, es wurde jedoch der ganze TCP-Teil entfernt und die Kommunikation läuft nur über UDP/IP, weil für den kompletten Stack im Bootbereich einfach nicht genug Platz vorhanden ist. Das ganze funktioniert auch wirklich problemlos. Der BootLoader startet, wartet ein paar Sekunden ob eventuell ein UDP-Telegramm vom PC eintrifft um im BootLoader zu bleiben und wenn nicht wird die Applikation gestartet, wie das eben bei einem BootLoader so üblich ist! Die Applikation hat jedoch schon einen kompletten stack implementiert, reagiert aber auch auf ein bestimmtes UDP-Telegramm, mit dem man wieder den BootLoader starten kann. Das klappt auch wunderbar, aber ... ... wenn aus der Applikation der BootLoader gestartet wird (jmp 0x7000), dann wird für den ENC28J60 nur der Softreset durchlaufen und jetzt passiert etwas Eigenartiges. Es schaut alles super aus, aber es werden keine UDP-Telegramme empfangen. ARP kommen komischerweise durch aber anpingen geht auch nicht. Es ist aber nicht so, dass sich das nicht irgendwann fangen würde. Nach einiger Zeit (zwischen 30 Sekunden und 2 Minuten) kommt plötzlich doch ein UDP-Telegramm durch und ab dann funktioniert wieder alles prima. Ach ja, UDP-Telegramme senden geht sofort nach dem "Softreset", weil ich schicke Testtelegramme zu einem UDP-Terminal-Programm am PC !!! Kann jemand von euch mit dieser Schilderung etwas anfangen ??? Danke und LG Klaus
Ja, habe das gleiche Problem. Aber bisher auch keine Lösung. Gruss Axel
Hi Axel, na super, da sind wir schon zwei, bin gespannt ob vielleicht doch Jemand eine Lösung anbieten kann? Was ich am Wochenende versuchen werde ist ein "HardReset" des ENC28J60. Ich werden den RESET mit dem (bei mir freien) PB1 verbinden und den Kontroller so rücksetzen, mal sehen ob das etwas bringt ??? LG Klaus
Klaus M. schrieb: > nur der Softreset durchlaufen Soviel ich weiß ist, dass im Softreset bestimmte Register nicht zurückgesetzt werden. Könnte eine Ursache sein.
... schrieb: > Soviel ich weiß ist, dass im Softreset bestimmte Register nicht > > zurückgesetzt werden. Öhm, anders herum, bei dem Softreset werden alle Register zurückgesetzt. Evtl. muss erst eine erneute Initialisierung des ENC erfolgen.
> Soviel ich weiß ist, dass im Softreset bestimmte Register nicht > zurückgesetzt werden. Könnte eine Ursache sein. Ja klar, nur was konkret ??? Lauf Datenblatt wird zwischen Power-on Reset und System Reset unterschieden, wobei der System Reset entweder durch Runterziehen des RESET-Pin oder via SPI-Kommando ausgelöst werden kann. Die Register scheinen jedenfalls immer rückgesetzt zu werden, nur ist nach POR der dual port buffer undefiniert und nach einem System Reset behält er den alten Zustand. Aber das sollte ja egal sein, weil ja in beiden Fällen dann der selbe Initialisierungscode durchlaufen wird. Also ich verstehe das Verhalten einfach nicht ?
Das Errata hat da noch einen Hinweis: Module: Reset After sending an SPI Reset command, the PHY clock is stopped but the ESTAT.CLKRDY bit is not cleared. Therefore, polling the CLKRDY bit will not work to detect if the PHY is ready. Additionally, the hardware start-up time of 300 µs may expire before the device is ready to operate. Work around: After issuing the Reset command, wait at least 1 ms in firmware for the device to be ready. Danach sollte erst die Initialisierung des ENC beginnen.
Das darf doch nicht wahr sein, habe den Fehler eben gefunden. So deppert muss man mal sein :-( Mein BootLoader und die Applikation verwenden unterschiedliche MAC-Adressen. Die Applikation war ein modifiziertes Beispiel vom MikroC-Compiler und ich habe nicht auf die MAC-Adresse geachtet. Jetzt ist das ganze natürlich auch erklärbar, warum es sich nach einer gewissen Zeit wie von selbst "bereinigt" und plötzlich alles wieder geht. Mann oh Mann, manchesmal sieht man vor lauter Bäume den Wald nicht mehr! Trotzdem Danke für die Hinweise und Axel vielleicht hast ja das selbe Problem wie ich ;-) LG aus Wien Klaus
Klaus, danke für den Tip, scheine tatsächlich dasselbe Problem zu haben. Gruss Axel
Hi Axel,
> danke für den Tip, scheine tatsächlich dasselbe Problem zu haben.
das heißt du hast auch einen eigenen LAN-BootLoader entwickelt, was kann
der denn so ???
Ich bin jedenfalls sehr erstaunt mit welchen Tempo man via LAN eine neue
Firmware in so einen ATmegaXXX schießen kann. Bei grossen
FLASH-Bereichen so ab 644 aufwärts, kann das ja über die USB schon
ziemlich lange dauern und via LAN geht's im "Höllentempo" ;-)
LG Klaus
Ich habe einen hier aus der Codesammlung verwendet. Also nicht selbst entwickelt, nur an meine Bedürfnisse angepasst. Ja, das Programmieren geht wirklich schick. Wobei bisher die Zeit, bis der dann wieder ging, schon nervend war. Aber das werde ich am Wochenende mal angehen. Was vor allem schön ist, ist, dass ich die im Haus verteilten Module auf die Art sehr schön updaten kann. Dabei starte ich den Bootvorgang über Telnet. Gruss Axel
Axel Laufenberg schrieb: > Was vor allem schön ist, ist, dass ich die im Haus verteilten Module auf > die Art sehr schön updaten kann. Dabei starte ich den Bootvorgang über > Telnet. Machst es also ähnlich wie ich, nur habe ich meinen BootLoader komplett selbst entwickelt und der kann etwas mehr wie die üblichen. So weiß ich z.B. ob und welche Applikation geladen ist, auch deren Version etc. und alle meine Applikationen hören auch direkt via UDP/IP auf ein spezielles Kommando, mit dem ich jeweils den BootLoader wieder starten kann, das erspart den Umweg über Telnet. Manche BootLoader sind ja dermaßen kompliziert zu bedienen, daß es mich abgeschreckt hat sie zu verwenden. Na dann viel Erfolg und Spaß mit deinen verteilten Modulen LG Klaus
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.