mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR / AT90USB - Alterungseffekt? Rest - Anlauf - Reset durch FW?


Autor: Kay I. (imperator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Marius Wensing (mw1987)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Kay I. (imperator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, is ne Idee, den MCUCSR zu nutzen!

Kondensatoren glaub ich aber nicht - die Spannung sieht absolut sauber 
aus am Oszi.

Autor: Kay I. (imperator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
(...)
   if( g_old_usb_mode != g_usb_mode )
   {
      // ID pin hot state change
#if ( ID_PIN_CHANGE_GENERATE_RESET == ENABLE)
      // Hot ID transition generates wdt reset
      wdtdrv_enable(WDTO_500MS);
      while(1);
(...)

Jetzt ist die Frage, warum lief dass dann eine Weile und dann schlägt 
plötzlich immer wieder dieser Mechanismus zu?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.