C8051F020 Reset immer wieder

Gast #3919514
Lesenswert?
• ▲
▼
Hallo,

ich arbeite momentan mit dem C8051F020 Mikrocontroller der Marke Silabs.
Ich baue ein Roboterauto, dass innerhalb eines Quadrats einer Linie 
folgt (die Linien sind der Rahmen des Quadrats).
Wenn das Auto eine Querlinie erkennt, macht es eine Linkskurve und folgt 
anschließend wieder der Linie.

Nun habe ich aber das Problem, dass der Controller immer wieder einen 
Reset auslöst.
Das passiert zufällig (kein gewisses Schema erkennbar) und oft auch 
mehrmals hintereinander.
Der Watchdog-Timer is disabled. Das Problem besteht auch, wenn alle 
Interrupts und das Globale Interrupt disabled sind.

Ich habe mir auch schon gedacht, dass es mit der Spannungsversorgung 
zusammenhängen könnte.
Habe dann den Controller nicht mit der Batterie (ca. 10V aus 
AAA-Batterien, die mit einem LM2596 DC-Converter auf 3,3V runtergeregelt 
werden),
sondern auch mit einem DC-Generator versorgt. Kein Erfolg.
Habe außerdem auch schon versucht, die Versorgungsspannung mit einem 
Elko zu puffern (1000uF, 50V), ebenfalls nutzlos.

Hat von euch jemand eine Idee was die Ursache für das Problem sein 
könnte?
Vielen Dank schonmal!
Gast #3919736
Lesenswert?
• ▲
▼
Überschreibst Du Dir vielleicht den Stack und damit eine 
Rücksprungadresse, so dass der Prozessor irgendwo ins Nirvana springt 
und dann so lange seine Adresse hochzählt, bis er wieder bei Null 
angekommen ist?
Gast #3934303
Lesenswert?
• ▲
▼
Hi,

deine Beschreibung der Hardware lässt vermuten, dass sie noch 
verbesserungswürdig ist (z.B. die Sache mit den Pufferkondensatoren => 
nicht nur dicke Caps verwenden, auch 100nF haben zusätzlich ihre 
Daseinsberechtigung). Desweiteren wäre interessant zu wissen, wie das 
Resetsignal beschaltet ist. Was sind denn für Motoren verbaut bzw. wie 
werden diese versorgt? => Schaltplan!

Peter hat es schon angedeutet, lass dir mal den Status des 
RSTSRC-Registers nach so einem Reset geben.

Wenn du Interrupts etc. deaktiviert und auch den Komparator als 
Resetquelle deaktiviert hast, kommt ein verkorkster Stack eigentlich nur 
bei Assemblerprogrammierung infrage oder wenn du einen verbeulten 
Pointer hast - aber das wurde auch bereits erwähnt, ohne den Code zu 
kennen ist das schwer zu beurteilen.

Ralf

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.