Moin zusammen! Ich habe bei einem AT90USB gerade ein sehr seltsames Verhalten ... Der Controller (AT90USB1287) läuft nun seit ca. 6 Monaten mit einer Firmware, die das CDC-Beispiel (virtueller Comport über USB) von Atmel integriert hat. An dem Beispiel-Code hab ich auch nicht viel geändert - nur die PLL auf meine externen 16MHz angepasst (natürlich auch in Fuses berücksichtigt). Nach 6 Monaten quittiert der Controller plötzlich seinen Dienst und generiert ein Reset ... läuft an ... 0.5 - 1s ... wieder Reset. Sehr komisch ... also spiele ich mal eine Firmware drauf, in der die App-Note von Atmel auskommentiert ist. Und siehe da ... kein Reset mehr, sondern läuft normal an und führt seine Aufgaben durch. Die Frage ist jetzt: Was kann sich mit der Zeit verändern, sodass der USB-Teil der Firmware bzw. die Nutzung der USB-Hardware solche Resets verursachen kann? Dabei ist es auch egal, ob ein Host-PC angesteckt ist oder nicht. Die Watchdog-Fuse ist deaktiviert. An den Wachtog timings des CDC-Codes habe ich auch schon herumgespielt, ohne dass sie davon das Reset .. Anlauf-Verhalten geändert hätte. Übrigens habe ich auch einige Geräte, die bereits 12Monate mit der gleichen Firmware laufen - keine Probleme.
Vielleicht ein defekter Kondensator? Möglicherweise bricht einfach die Spannungsversorgung zusammen und BOD schlägt an. Lass dir mal den Reset-Grund ausgeben. Dazu gibts nen paar Flags im MCUCSR. MfG Marius
Hm, is ne Idee, den MCUCSR zu nutzen! Kondensatoren glaub ich aber nicht - die Spannung sieht absolut sauber aus am Oszi.
Hab das Verhalten nochmals untersucht ... In die Firmware ist ja ein Teil der CDC - App Note (Virtual COM Port) von Atmel eingeflossen. Nun scheint es so zu sein, dass diese den ID-Pin abfragt, ob er sich mitten im Betriebgeändert hat (und damit die Rolle unseres USB-Gerätes). Wenn dem so ist, wird wohl bewusst der Watchdog angeschaltet, und mit einer while(1); wird ein Reset provoziert. In der Beispiel-Datei "usb_task.c" aus dem Atmel-Beispiel sieht das dann so aus:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
Jetzt ist die Frage, warum lief dass dann eine Weile und dann schlägt plötzlich immer wieder dieser Mechanismus zu?
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.