PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATMEGA644p resettet sich selbst ?



Blamaster
11.07.2009, 15:02
Hi,

ich habe ein Problem mit dem ATMEGA644p. Ich sende Daten über die Rs232 Schnittstelle an den 644p.

Die Datensätze (bestehend aus 5 Byte) werden vom Pc in Abständen von ca. 50ms an den 644p gesendet.

Nach einer gewissen zeit (kann ich keine genauen Angaben machen) resettet sich der Controller von alleine und gelangt in einen Zustand als hätte man ihn gerade frisch geflasht.

Kann es dafür eine logische Erklärung geben ?

In der Uart Empfangsroutine wird nichts anderes gemacht als das ankommende byte auf kreterien zu überprüfen und dann bei übereinstimmung ins pwm timerregister zu schreiben.

Ich hoffe jemand kann mir helfen diesem Mysterium auf den Grund zu gehen.

mfg Yannic

PicNick
11.07.2009, 15:07
Kann es dafür eine logische Erklärung geben ?
Da bin ich mir sicher.

Du wirst aber deinen Code herzeigen müssen, sonst kann dir keiner helfen.

Zum Arzt musst du ja auch persönlich gehen :-)

Blamaster
11.07.2009, 15:19
Dabei gibt es ein kleines aber feines Problem ;)

Ich programmiere für jemanden eine Pc Software. Er möchte seinen Controllercode allerdings nicht rausgeben. Somit kann ich zum Code der sich auf dem Controller befindet nicht mehr sagen als ich erfahre.

Nur kann man sowas grundsätzlich nicht schon auf einen gewissen bereich eingrenzen ?

Denn das Problem tritt ja nur beim übertragen der Daten vom Pc zum µC auf. Und auf dem µC ist die Uart Routine ja nicht gerade groß und fehleranfällig wenn sich nichts anderes macht als die angekommenden Daten auf vorgegeben Werte zu überprüfen und diese dann in den Pwm kanäle zu schreiben.

mfg Yannic

McJenso
11.07.2009, 15:49
Hallo,

ohne Informationen zur Hard- und Software ist es nicht möglich dir zu helfen.
Nur ein Senario von vielen. In der Software wird versehentlich ein Ausgang gesetzt, der dazu führt, dass die Versorgungsspannung absinkt. Über die Fusebits ist Brownout detektion aktiviert und es kommt zum Reset. Eventuell wird auch ein Interrupt ohne dazugehörige Routine ausgelöst.

Gruß

Jens

Blamaster
11.07.2009, 17:22
Hi,

ich weiß selber das es so unglaublich schwer sein muss eine einschätzung abzugeben (geht mir ja genauso)

Aber eine Sache grenzt das ganze jetzt wohl noch weiter ein. Er hat nun mal das Enagle URXC aus dem Code genommen so das ja nichtmal mehr die Routine aufgerufen wird. Der Controller somit mit den ampfangenen Daten nichts macht. Trotzdem resettet sich der Controller.

Brownout wurde auch deaktiviert.

mfg Yannic

Thomas$
11.07.2009, 17:44
schreibst du viel in den flash oder irgendwo anders hin so das der speicher mal volll wird?

PicNick
11.07.2009, 17:45
wenn Brown-out entfällt und die Reset-Leitung koscher ist (Pullup nach +)
wenn der Watchdog disabled ist, wenn weiters die Spannung sauber stabil ist, muss ich annehmen, dass der Hund in der µC Software liegt.
Er sollte mal überhaupt alle Interrupts disablen (bzw. NICHT enablen), nicht nur den URXC, und mal sehen, was dann passiert.

Der Kollege scheint sehr heikel zu sein, muss ja eine gigantische Innovation drin stecken, die sonst sicher noch keinem eingefallen ist.

Ich schick dir eine PN

EDIT: Kannst du nicht selber ein µC Programm machen, mit dem du vernünftig testen kannst ?

Besserwessi
11.07.2009, 20:58
Ein paar weitere mögliche Ursachen:
1) Ist der Watchdog wirklich aus ? Das geht bei einigen µCs nur über die Fuses.
2) Stack durcheinander / Überlauf
3) Sprung ausserhalb der Reichweite ?
4) AVCC nicht richtig versorgt -> browout springt zu früh an



Um die Ursache eines Resets zu erkennen gibt es das Register MCUSR. Da Steht dirn was den Reset ausgelöst hat. Das sollte man testweise mal gleich am Anfang zu PC senden. Das sollte ds suchen vereinfachen.

doctorPit2
10.06.2012, 10:40
Schreib einfach mal ans Ende Deines Programmes mal ein "END" . Damit war bei mir der Fehler behoben..