Hallo Forengemeide, mir ist klar das wenn ich einen rjmp 0x000 ausführe das mein Programm neu startet. Doch gibt es auch die Möglichkeit den ATMega88 so zu starten als wäre ein Reset ausgeführt worden?
Du willst also einen Hardreset im Programm erzwingen. Dann nimm den Watchdog.
> mir ist klar das wenn ich einen rjmp 0x000 ausführe das mein Programm > neu startet. Mehr oder weniger. Mehr weniger als mehr mehr. > Doch gibt es auch die Möglichkeit den ATMega88 so zu starten als wäre > ein Reset ausgeführt worden? Watchdog-Reset sollte im Regelfall reichen (das ist kein 'Reset' im Sinne von 'externer Reset', das Ergebnis ist aber das selbe). Rest steht im Datenplatt.
So nehme ich mal an das ich damit recht gut fahren werde. • Bit 3 – WDRF: Watchdog system reset flag This bit is set if a watchdog system reset occurs. The bit is reset by a power-on reset, or by writing a logic zero to the flag.
> Einen Port-Pin an den Reset-Pin legen und via Software auslösen? Langt nicht. Der Reset-Pin muss für eine definierte (Mindest-)Zeit low sein um einem zuverlässigen Reset zu gewährleisten - währendessen geht der Ausgangs-Pin schon auf High-Z. Watchdog ist das Mittel der Wahl. > So nehme ich mal an das ich damit recht gut fahren werde. > Bit 3 – WDRF: Watchdog system reset flag Weiterlesen!
g457 schrieb: >> Einen Port-Pin an den Reset-Pin legen und via Software auslösen? > > Langt nicht. Der Reset-Pin muss für eine definierte (Mindest-)Zeit low > sein um einem zuverlässigen Reset zu gewährleisten - währendessen geht > der Ausgangs-Pin schon auf High-Z. > > Watchdog ist das Mittel der Wahl. > >> So nehme ich mal an das ich damit recht gut fahren werde. >> Bit 3 – WDRF: Watchdog system reset flag > > Weiterlesen! das währe mit ein paar µF in den Griff zu kriegen (sinnvoll ist die methode trotzdem nicht) der Watchdog ist das einfachste und billigste was man nehmen kann (wird von lufa z.b. auch zum bootloadersprung benutzt )
ICh komme nun aber nach echt langem lesen noch nicht ganz dahinter wie das geht. WDTON =1 WDE=1 WDIE=0 Sollte doch richtig sein.
> Sollte doch richtig sein.
Nope. Datenplatt Kapitel '10.8 Watchdog timer' lesen. Danach dann die
fertigen Routinen aus <avr/wdt.h> aus der avr-libc nehmen.
> Würde ich C benutzen hätte ich nicht eingangs geschrieben > rjmp 0x000 Das geht erstens auch in C (inline-Assembler regelt), zweitens sind die hier relevanten Teile in der avr-Libs sowieso in Assembler geschrieben und drittens schau endlich ins Datenplatt, da steht fertig nutzbarer Beispielcode drin.
Was meinst Du woher ich die von mir geposteten Infos habe. Aber danke für Deine freundlich Art.
Hatter aber Recht, die Assemblerbeispiele für den Wachhund stehen im Datenblatt und sie funktionieren auch. Nicht ´rummaulen!
Wer mault rum? So wie ich das sehe bin ich wohl Blind. Könntet mir einer mal sagen auf welcher Seite?
Hi >So wie ich das sehe bin ich wohl Blind. Könntet mir einer mal sagen auf >welcher Seite? Es gibt ein Kapitel 'System Control and Reset'->'Watchdog Timer'. In meinen Datenblättern so um die S.50. Und am Ende davon sind Assembler- und C-Beispiele zum aktivieren des WD und zum ändern des Time-Outs. Nur interessehalber: Wozu soll das Ganze gut sein? MfG Spess
Ich habe in meiner 40-jährigen Berufszeit noch nie eine Applikation gehabt, wo es nötig gewesen wäre, einen Hard-Reset zu generieren. Also: wozu braucht man das?
Tilmann schrieb: > Ich habe in meiner 40-jährigen Berufszeit noch nie eine Applikation > gehabt, wo es nötig gewesen wäre, einen Hard-Reset zu generieren. Also: > wozu braucht man das? Um z.B. wieder in den Bootloader zurück zu springen?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.