Hallo, welche Gründe gibt es warum ein Arduino, also eigentlich nur der 328P Chip mitten im Programm resettet? Ich benutze den Watchdog auf eine ISR, sleep Mode ebenfalls aber auch wenn ich alles was mit wdt und sleep auskommentiere resettet er manchmal. Da ein JTAG Debbuging mit der Arduino IDE nicht möglich ist suche ich weitere Ursachen. Kann man einen Brown Out irgendwie abfragen? Ich habe eine 3.3V Version, vielleicht schlägt der ja zu früh zu? Und was ist mit einem Puffer Überlauf der seriellen Daten, die reinkommen? Kann das auch dazu führen? Welches Programm kann ich in Verbindung mit einem Diamex ISP Programmer verwenden um Fuses zu setzen? Bin nicht so der AVR Kenner. Gruss, Christian
Chris J. schrieb: > Kann man einen Brown Out irgendwie abfragen? Laut Datenblatt schon. Da gibt es ein Register, in dem die Reset-Ursache festgehalten wird...
Noch ein Tip? Störungen von Außen über die Peripherie und sonstige Verdrahtung, die wir aber auch nicht kennen.
Ich will es einfacher machen: Welche Software bietet mir einen guten Kofort Fuses zu setzen? Das BOD Bit zum Bleistift?
Chris J. schrieb: > Und was ist mit einem Puffer Überlauf der seriellen Daten, die > reinkommen? Kann das auch dazu führen? Das kommt drauf an, wie das Programm zu Pufferverwaltung aufgebaut ist, und ob es einen Pufferüberlauf geordnet verhindert.
Wolfgang schrieb: > Das kommt drauf an, wie das Programm zu Pufferverwaltung aufgebaut ist, > und ob es einen Pufferüberlauf geordnet verhindert Serial (UART0) und Softserial aus der eingebauten Lib..... AVR Studio ist etwas aufgeblasen, was ist mit PonyProg2000? Kann das den Diamex ansteuern?
AVR8-Burn-O-Mat (benötigt Java 7 oder 8 und Avrdude). Heute ist offensichtlich wieder Freitag.
Ich tippe auf eine fehlende ISR bei aktiviertem Interrupt. mfg Achim
J. Zimmermann schrieb: > Ich tippe auf eine fehlende ISR bei aktiviertem Interrupt. > mfg > Achim Hmmm... die habe ich. ISR(WDT_vect) { WDTCR |= (1<<WDIE); } AVR Burn O Mat !!! Genau die hatte ich im Blick, nur vergessen über die Zeit. Boah..... noch bis 18 Uhr arbeiten heute.... erst dann wieder an das Hobby :-(( Reset Cause ermitteln. Mit External Reste scheint wohl der Reset Pin gemeint zu sein? unsigned char ResetSrc = MCUSR; // save reset source MCUSR = 0x00; // cleared for next reset detection ... // further initialisation if (ResetSrc & PORF) cputs("PWR RESET\n\r"); if (ResetSrc & EXTRF) cputs("EXT RESET\n\r"); if (ResetSrc & BORF) cputs("BOD RESET\n\r"); if (ResetSrc & WDRF) cputs("WDT RESET\n\r");
Beitrag #5632550 wurde vom Autor gelöscht.
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.