www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega: Watchdog killt uC??


Autor: Kogel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

kleines Problem: kann einen Atmega 128 nicht mehr über SPI flashen.

Vermutung:
Habe Watchdog auf kürzeste Zeit gestellt. Watchdog Reset schlägt zu,
leider funktioniert die WD disable routine nicht...
-> alle 13ms gibt es einen reset des µC

-> neu flashen geht nicht mehr (habe auch SW ohne watchdog versucht,
die vorher lief und auf anderem Board läuft)

-> atmega macht immer noch resets nach 13ms (sehe ich an Port-Signalen
aufm Osci)

Fragen:
Kann es sein, dass er sich den Watchdog-enable Zustand im
nichtflüchtigen Speicher merkt? (Habe natürlich schon spannungslos
geschaltet. Habe aber nicht das WDTON fuse programmiert, d.h. initial
WD state disabled.)

Kann das SPI flashen von Watchdog gestört werden??

Oder habe ich durch irgend eine andere Ursache just gleichzeitig den uC
geschossen???

Hat da jemand Erfahrung? Ich will erstmal nicht noch ein zweites Board
zum Testen nehmen....

Autor: Marco S. (masterof)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
abo

Autor: Jörn-h. G. (joern_g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SPI flashen kannst du (abgesehen von Bugs beim Tiny13) nicht mit so
etwas disablen. Geflöashed wird ja durch und während eines Resets, bei
dem der Watchdog auch nicht mehr arbeitet.

Hast du mal probiert einfach per SPI den Chip zu erasen - das hilft bei
merkwürdigen Phänomenen manchmal.

Wenn nicht einmal das geht, dann musst du mal deinen Programmer prüfen,
also mit Oszi (hast du ja) MISO, MOSI und CLK angucken, ob die Signale
alle da sind und gut aussehen.

Wenn kein Clock, dann den von aussen zuführen (Suche benutzen im
Forum).

Wenn Clock und MOSI da, aber keine MISO, dann ...??

Den Reset hast du nicht zufällig disabled per Fuses?

ISP auch nicht?

cu joern

Autor: Laeubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
versuch mal den reset Manuell auf GND zu ziehen!
Das hat mir schon manchmal geholfen wenn der AVR nicht mehr wollte (ich
hatte das problem bereits so 4 - 5 x keine Ahnung WAS das auslöst, aber
der Programmer sagt dan immer "Entering Programming Sequence failed")
mit manuellem auf GND ziehen ging es dann, hat vermutlich mit Spikes zu
tun durch schnelles schalten/reset sodass der Programmer Reset nicht
mehr sauber nach GND ziehen kann.

Autor: Kogel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke für die Tipp's. Problem leider immer noch nicht gelöst...

Allerdings habe ich eine interessante Entdeckung gemacht. Die SW landet
sehr wohl im Flash des atmega.

Ich habe verschiedene Programme geflashed und über die download
funktion von usip wieder zurückgelesen. Tatsächlich sind die Programme
jeweils korrekt im Flash gelandet. Ausserdem kann ich anhand der Port
Pins auch sehen, dass ich andere SW geflashed habe.

Trotzdem macht der uC weiterhin alle ca. 13ms einen (scheinbar) reset.

Ich Versuche folgende Routine (mehr oder weniger aus dem Datasheet) zum
Watchdog disablen:

int main(void)                 // Main runs under the AvrX Stack
{
  // no interrupt shall occure between the next four lines
  MCUCSR &=0x80; // clear the reset source bits
  asm volatile ( "wdr" );  // reset watchdog timer
  WDTCR |= (_BV(WDCE) | _BV(WDE) );  // set both bits
  WDTCR = 0x00;  // clear WDE during next 4 cycles
}

Werde mir jetzt erstmal die Hardware genauer ansehen, ob ich noch was
anderes herausfinden kann was nicht mit dem WD zu tun hat...

Autor: Laeubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich glaub nicht das es mit dem WD zu tun hat...
Hast du nen Relais in deiner Schaltung? BOD aktiviert?
Hatte mal das problem das den Spannungseinbruch den ein Realis
verursachte beim Schalten meine AVR wegen aktivierter BOD reseten
lies.

Ich weiß jezt nicht genau, aber man kann irgenwie festellen was die
Resetquelle war (BOD, WD, PO) eventuell mal ne soft schreiben die je
nach Resetquelle eine Pin high sezt dann wiest du wenigstens shconmal
was die Quelle ist.
Ansonsten würde ich fast auf einen kurzschluss tippen.. hast du den
Chip mal erased?

Autor: Kogel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist zum heulen, habe gerade mal diesen Code runtergeladen, Port
klappert sehr schnell (externer 16-MHz Oscillator läuft) aber nur 13ms
danach kurze Unterbrechung und wieder von vorne. Kein Relais oder
andere Lasten, kein Timer nichts....

Da ich irgendwie nicht an den WD glauben kann, muss wohl doch ein Chip
defekt vorliegen, aber ein sehr merkwürdiger :-( (Versorgung ist
einwandfrei, externer Reset konstant high)

int main(void)
{
  WDTCR=0x07;

    // init LED output
    DDRD |= (_BV(PD6) | _BV(PD7));
    PORTD &= ~_BV(PD6);  // LED off at start
    PORTD &= ~_BV(PD7);  // LED off at start

  while(1)
  {
    PORTD |= _BV(PD7);  // LED off at start
    PORTD &= ~_BV(PD7);  // LED off at start
  }
}

Autor: Kogel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Er läuft wieder....

Irgendwie muss die WDTON fuse gekippt sein (habe sie nie programmiert,
eine entspr. Sequenz steht gar nicht im makefile).

Interessant was so alles passieren kann...

Passiert das schon mal das sich fuses einfach so verändern? Evtl. durch
ESD da ich gerade recht viel mit der Platine gemacht habe? (ins Gehäuse
eingebaut und wieder ausgebaut)

Autor: Ludwig Wagner (lordludwig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
durch ESD kann so etwas sehr leicht passieren, sei froh das dein chip
noch lebt!!!

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für einen Programmer benutzt Du?

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.