Hi da. Habe in einigen Geräten auf einer Platine einen AtMega16A werkeln. Dieser läuft mit 14.746MHz und ist mit 5V versorgt. Er hat einen externen Watchdog inkl. BOD; Der interne ist zusätzlich auf 2,7V geflagt. Clockselect ist auf "EXTHIFXTALRES_16KCK_64MS", denke das sollte passen. CKopt wurde aber bisher nicht geflagt, wird aber nachgeholt. Von 14 Geräten sind nun zwei dieser Platinen zurück gekommen, die einen wirklich merkwürdigen Fehler aufwiesen. Es scheint so, als ob der Hauptcode ausserhalb der ISRs nicht mehr abgearbeitet wird. Die externe LED blinkt beim Warmup und normal-Lauf des Programmes wie sie sollte (Über Timer ISR). Es gibt nach 2Minuten einen wechsel der Freqenz dessen - wie es auch sein sollte. Daher denke ich, dass die ADCs auch laufen. LCD Display wird aber z.B. nicht mehr angesprochen. Bei der ersten Platine konnte man die Platine einfach mit einem neu Aufspielen des Programmes wieder in Gang setzen, sodass alles wieder wie gewollt funktionierte. Wir haben nun die Geräte-Art drei Tage an und aus geschaltet und verschiedene Tests gefahren ohne dass wir den Fehler nochmals bekamen. Die mir vorliegende Platine ist von den Spannungen aussen herum Okay. Leider kann ich den Flash nicht diffen, da das Fusebit gesetzt ist ;) Ich habe gelesen, dass solch komische Dinge auch passieren können wenn beim Startup die Spannungen an den Pins höher werden wie VCC vom µC. Muss ich aber noch komplett checken. Gibt es noch weitere Fehlerquellen die eine solche Blödsinnigkeit generieren könnte? Bastel mal weiter, Björn
Werden irgendwelche Werte im EEPROM gespeichert, die beim Wiederanfahren von dort geholt werden und bei unsinnigen Werten das Programm lahm legen können?
ich würde ein code review empfehlen, von min. zwei personen.
Gibt es externe Bauteile die einen Interrupt erzeugen? Hatte vor einigen Jahren den Fall, dass ein fehlerhaftes ASIC beim µC Interrupts erzeugt hat, dieser ist andauernd in die ISR gesprungen und der main - task wurde nicht mehr korrekt abgearbeitet.
rm fragte: >Gibt es externe Bauteile die einen Interrupt erzeugen? Offenbar... >Er hat einen externen Watchdog inkl. BOD
> Der interne ist zusätzlich auf 2,7V geflagt.
Was mit den 14.4MHz zuviel ist. Der A geht laut Datenblatt bei 2.7V nur
bis 8MHz. Da kann er im Powerdown-Delirium evtl. einige Befehle falsch
verstehen... Setz den internen BOD mal deutlich höher.
BTW: Wenn du schon sowas vermutest, ist es besser, das gleich selber zu
reproduzieren. Mach einfach mal wackelige Stromversorgung von Hand. Bei
mir hat schon das Gewackel des Bananensteckers in der NT-Buchse
gereicht, das Flash nach ca. 20s zuverlässig zu ruinieren...
...nicht das Ihr meint ich würde mich nicht melden ;) Bin grade am Tests fahren und Source sichten. Die Platine hängt grade am wobbel und wird gestresst ;) Kabel aufspleissen und funken mit Netzteil generieren hat sie jedenfalls nicht geschockt. Melde mich wenn es was neues gibt.
:
Bearbeitet durch User
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.