AVR chip: wie kann man einen reset programmieren?

OP #637324
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
#637357
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.
#637375
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.
OP #637455
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!
OP #637459
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 ;-)
Gast #637463
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.
#637603
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  ...
#637653
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
#637980
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren