Forum: Mikrocontroller und Digitale Elektronik ATMega16 vergisst teilweise sein Programm - leider bisher nicht nachvollziehbar


von Björn G. (tueftler)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

Werden irgendwelche Werte im EEPROM gespeichert, die beim Wiederanfahren 
von dort geholt werden und bei unsinnigen Werten das Programm lahm legen 
können?

von Lowtzow .. (lowtzow)


Lesenswert?

ich würde ein code review empfehlen, von min. zwei personen.

von rm (Gast)


Lesenswert?

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.

von Mikrogigant (Gast)


Lesenswert?

rm fragte:

>Gibt es externe Bauteile die einen Interrupt erzeugen?
Offenbar...
>Er hat einen externen Watchdog inkl. BOD

von Georg A. (georga)


Lesenswert?

> 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...

von Björn G. (tueftler)


Lesenswert?

...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
Noch kein Account? Hier anmelden.