Forum: Mikrocontroller und Digitale Elektronik Mega16 vergisst plötzlich beim Lauf sein Programm


von Björn G. (tueftler)


Lesenswert?

Hi Ihr da.

Habe hier ein Problem, dass der kleine Mega16 plötzlich im Programmlauf 
sein Programm "verliert".
Ich muß es dann nochmals flashen, danach geht alles wieder als sei 
nichts passiert.

Der Mega1280, der auf der gleichen Schaltung potentialgetrennt sitzt, 
hat diese Probleme nie gemacht - wie auch bisher alle anderen 
programmierten Atmels die ich in den Fingern hatte.

Abblockkondensatoren sollten alle richtig sein und den Zeitpunkt des 
"vergessens" konnte ich bisher nicht exakt bestimmen (mal nach 10h mit 
mehrmaligem an/aus - mal nach 3min).

Habt Ihr dieses Phänomen auch schon einmal beobachten können und evtl. 
eine Lösung bzw. einen Ansatzpunkt für mich?

Gruß, Björn

von Manfred B. (vorbeigeschlendert)


Lesenswert?

Björn G. wrote:
> Hi Ihr da.
>
> Habe hier ein Problem, dass der kleine Mega16 plötzlich im Programmlauf
> sein Programm "verliert".

zu diesem Zeitpunkt schon mal das Flash ausgelesen?
also ehe du

>Ich muß es dann nochmals flashen, danach geht alles wieder als sei
>nichts passiert.

[...]

> Habt Ihr dieses Phänomen auch schon einmal beobachten können und evtl.
> eine Lösung bzw. einen Ansatzpunkt für mich?

nein

von Stephan W. (Firma: Watterott electronic) (welectronic) Benutzerseite


Lesenswert?

Hast die Brown Out Detection Bits gesetzt?

von Sebastian (Gast)


Lesenswert?

Woher weißt du, dass er sein programm vergisst?
Lies mal den Flash aus, wenn das Problem wieder auftritt. Wahrscheinlich 
steht noch das gleiche drin was du reingeschrieben hast.

Passen die Fuses noch, nachdem er sich auf aufgehängt hat?

Vielleicht fällt die Spannung recht langsam ab wenn du abschaltest? 
Brown-out-detection an oder externen Resetbaustein vorgesehen? Hab 
gehört, dass in solchen Zuständen schonmal Fuses kippen. Wenn jetzt die 
Clock-Fuses nicht mehr passen kann es schon sein, dass er nichts mehr 
tut.

Sebastian

von Björn G. (tueftler)


Lesenswert?

Tachschen!

Das ging aber flott :-)

Das aufgespielte Programm vergleichen konnte ich bisher noch nicht, da 
das Gerät schnell, schnell fertig werden mußte - was natürlich nun nich 
so geklappt hatte ;-)

BrownOutDetection ist meines Wissens auf 4,3V gestellt. Werde es aber 
auch nochmal genau überprüfen.

Es kann auch nicht an einem Bestückungsfehler dieser einen Platine 
liegen, da mir das Phänomen auch bei weiteren Platinen (der gleichen 
Bauart) aufgefallen ist.

Ist ja interessant, dass die Fuses, je nach dem wie unglücklich die 
Spannung abfällt, kippen könnten - Davon hatte ich bisher noch nie 
gehört - wäre aber eine gute Erklärung für das ganze.

Kann das ganze erst Montag in der Fa. testen, da ich heute einmal einen 
Tag Urlaub verbraucht hatte, jeappie...

Björn

von Martin (Gast)


Lesenswert?

Schaltplan posten!

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Es wurde schon berichtet, dass sowas passieren kann, wenn die 
Betriebsspannung langsam abstirbt. Die Brown-Out-Detection sollte das 
aber effektiv verhindern. Poste mal Deinen Schaltplan, wenn alles OK 
ist, hast Du ja vielleicht ein defektes Exemplar erwischt.

von Simon K. (simon) Benutzerseite


Lesenswert?

Wahrscheinlich hängt sich der Prozessor nur irgendwo auf...

von Sebastian (Gast)


Lesenswert?

Dann sollte aber doch ein neustart was bringen, oder? Also Spannung aus 
und ein. Oder hat das der Threadopener garnicht probiert?

Sebastian

von Björn G. (tueftler)


Lesenswert?

Na klar hat der das probiert - Siehe erster Post, steht alles drin :-)

Der hat, wie oben beschrieben, das ganze auch schon bei mehreren 
Platinen vorgefunden...

Ich kann ja einmal einen Watchdog rein programmieren, kann jedoch nicht 
daran liegen, da der Controller nach Spannung on/off auch nicht wieder 
anläuft.

Ich glaube auch, das die Fuses bei irgendeinem Betriebszustand kippen - 
werde ich Montag einmal durchtesten.

Björn

von Sebastian (Gast)


Lesenswert?

Hatte auch nicht gedacht, dass du's nicht mit aus-an probiert hattest. 
Aber es stand nicht explizit dort, dass nach dem Auftreten des Fehlers 
ein aus-an nichts hilft. Und fragen kostet ja nichts ;-)

Die Idee mit dem Watchdog hört sich für mich gut an. Wenn die BOD 
wirklich an ist sollten die Fuses ja eigentlich noch passen. Ein 
Umprogrammieren des Flash wäre mir völlig unverständlich (außer du hast 
richtig dicke Bugs in deiner Software).
Wie schaut denn deine Spannungsversorgung aus? Sind da recht große 
Kapazitäten drin? Vielleicht krigt der AVR überhaupt keinen Reset, weil 
er die ganze Zeit noch Spannung hat. Dann bleibt er natürlich munter 
weiter am gleichen Softwarebug hängen.

Sebastian

von Tim (Gast)


Lesenswert?

Wird das interne EEProm verwendet?
Wenn Ja, dann die Brown Out Detection einschalten und auf 4,2V stellen 
sonst kippen unter umständen die Bits.
Der Fehler würde sich aber erst nach mehrmaligem Ein und Ausschalten 
zeigen.

SPM in den Fuses abschalten könnte ein workaround sein...
(ist natürlich keine lösung)

von Björn G. (tueftler)


Lesenswert?

Hi Ihr da.

@Sebastian: War ja nicht bös gemeint - wollte nur einmal auf den 
Anfangthread verweisen ;-)

Hatte nun wieder ein wenig testen können, leider jedoch den Fehlerfall 
nicht mehr nachstellen können :-(

Habe nun einfach einmal den Brownout aktiviert.
Das interne EEprom wird übrigens nicht verwendet.

Der Reset funktioniert scheinbar - Hatte einmal ein Oszi dran 
gehalten...

Wenn es wieder auftritt, werde ich die anderen angesprochenen Dinge 
einmal testen und Feedback geben.

Danke ersteinmal für Eure Tips!

Bis denn
Björn

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.