mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR chip: wie kann man einen reset programmieren?


Autor: Guillaume Bugnard (gjom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello

Ich habe einen ATMega64 Kontroller der eine Luftpumpe steuert, mit 
Bascom AVR (Version 1.11.8.3) programmiert und möchte jetzt einen Knopf, 
der einen Reset vom internen Program auslöst, auf dem System bauen. Wie 
kann ich das am besten programmieren? Mit dem Watchdog timer läuft es 
nicht immer...

Danke!

Gjom

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
asm
 jmp 0x0
end asm

oder so in der art ^^

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guillaume Bugnard wrote:
> kann ich das am besten programmieren? Mit dem Watchdog timer läuft es
> nicht immer...

Dann solltest du diesem Phänomen nachgehen.
Der Sinn eines Watchdog Timers ist es ja gerade, den µC zu
reseten, egal in welchem Zustand sich der gerade befindet.
Und zwar immer.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wobei ein Kopf für Reset ja nicht unbedingt dem umständlichen Weg über 
Abfrage und Watchdog gehen müsste. Was spricht gegen den Klassiker mit 
dem Taster direkt an der Reset Leitung?

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man den Taster abfragt und bei aktivem Zustand den Watchdog für 
erzwungenen Reset verwendet, dann geht es genau dann nicht, wenn die 
Abfrage nach dem Taster unterbleibt und folglich garnichts passiert. Und 
das passiert u.U. bei einem Programmfehler.

Wenn schon so, dann muss der Taster als umgedrehte Totmanntaste 
realisiert werden. D.h. der Watchdog wird vorneweg eingeschaltet und 
dort wo der Taster abgefragt wird, wird der Watchdog genau dann 
zurückgesetzt wenn der Taster inaktiv ist. Ist er aktiv wird der 
Wachhund nicht gestreichelt, und drückt man lange genug wird der sauer 
und beisst zu.

Autor: Guillaume Bugnard (gjom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Kaiser wrote:
> Was spricht gegen den Klassiker mit
> dem Taster direkt an der Reset Leitung?

Am Anfang wollte ich, dass, wenn der Knopf gedrückt wird, der Kontroller 
zuerst einen Wert auf dem LCD Anzeige schreibt, dann 1 Sekunde wartet 
und erst dann den Reset macht. Aber wird dieses Wert alle 50ms zu einem 
PC mit LabView geschickt und dort gespeichert. Das heisst, jetzt kann 
ich den Reset Pin benütze

Die Methode mit dem Assembler hatte ich nicht gedacht! Werde ich noch 
ausprobieren!

Und die Erklärung mit dem Abtasten vom Knopf und Interaktion mit dem 
Watchdog macht Sinn, wieso es nicht immer funktioniert hat!

Danke!

Autor: Guillaume Bugnard (gjom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch eine Frage, altert einen Reset eigentlich den Hardware? Also darf 
ich diese Funktion (durch den Pin) so oft wie ich es will benützen oder 
gibt es einen Risiko, dass meine Platine kaputt wird?

Sorry für diese Anfängerfrage, aber ich bin Maschineningenieur, und es 
ist meine erste Erfahrung mit Elektronik ;-)

Autor: Gerhard. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Komisch dass eine endlose Warteschleife nicht den Watchdog zuverlaessig 
zubeissen laesst. Alle meine Programme mit RS232 interface haben eine 
Kommand mit dem man den RESET durch eine endlose Warteschleife erzwingt 
und habe noch nie damit ein Problem gehabt. Mache ich genauso bei PIC, 
AVR, und ARM.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei jmp auf 0x00 gilt es halt zu bedenken, dass nix initialisiert wird 
(Register). Den Vorteil haste aber beim WD.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gerhard. wrote:

> Kommand mit dem man den RESET durch eine endlose Warteschleife erzwingt
> und habe noch nie damit ein Problem gehabt.

Du hast wahrscheinlich auch noch nie einen Programmfehler gehabt, oder 
eine klemmende Peripherie auf die ewig gewartet wird, oder  ...

Autor: Olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Sinn des WD ist es ja gerade bei solchen Sachen auszulösen.
Sprich, Programm macht Grütze...

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Statt bei Tastendruck den Watchdog einzuschalten und dann ne 
Endlosschleife laufen zu lassen, würd ich eher den Watchdog durchlaufen 
lassen, und den Watchdog-Reset nur ausführen, wenn der Taster nicht 
gedrückt ist.

So könnte der Taster auch noch für normale Funktionen verwendet werden, 
und der Chip resettet zuverlässig, sobald der Taster länger als die 
WD-Timeout-Zeit gedrückt gehalten wird.

/Ernst

Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
verbind doch n I/O Pin mit dem Reset-pin.. dann kannst du ganz einfach 
per software resetten indem du diesen (als ausgang geschalteten) I/O Pin 
auf LOW schaltest. Sobald der Reset eingetreten ist wird der Pin als 
Eingang wieder in den Hochohmigen Zustand geschaltet. Dein Reset 
benötigt dann halt noch dringend einen stärkeren Pullup, hier macht sich 
wohl ein 10kohm widerstand nach vcc ganz gut.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.