Hi,
du könntest auch den Watchdog starten und den AVR dann in eine Endlosschleife schicken
Gruß
Chris
Hi,
du könntest auch den Watchdog starten und den AVR dann in eine Endlosschleife schicken
Gruß
Chris
Wsk8, aber da muss das Programm doch an dieser stelle vorbeilaufen um das Signal zu bekommen.
Che Guevara, was ist ein Watchdog und wie wende ich ihn an?
Was ich meine ist (habe so etwas gelesen) ein Ohr was die ganze zeit lauscht ob ein Signal auf einem bestimmten Port kommt. Wenn ja wird das Signal dem Programmablauf vorgezogen und reargiert dann irgendwie.
Gruß
Hi,
meinst du vielleicht einen Interrupt an einem Pin? Irgendwie blick ich jetzt doch nicht mehr so ganz durch, was du willst.
Drück dich bitte mal sachlich korrekt & eindeutig aus
Ein Watchdog ist eine Art Timer, bei dessen Überlauf der AVR resettet wird.
Er wird üblicherweise verwendet, um das hängenbleiben eines µCs zu erkennen und darauf zu reagieren.
Gruß
Chris
Ja, er meint wohl einen Interrupt. Aber ein Interrupt unterbricht dein Programm nicht ewig und fängt dann von Vorne an, sondern
Programm läuft ... Interrupt wird ausgelöst -> Interruptcode wird abgearbeitet ... Programm läuft normal weiter.
Wär toll wenn du dich etwas konkreter ausdrückst. Du klingst grad etwa so: Ich habe gehört, wenn ein Auto nicht funktioniert, dann muss man in ein Loch eine Flüssigkeit schütten.
mfg
Wie es genau in C aussehen muss kann ich dir nicht sagen...
Bei Bascom würde es so ablaufen...
Gruss, JoeCode:... Config Pind.2 = Input 'Am Atmega8 der Int0-Pin ... Config Timer1 = Timer , Prescale = 8 ' Timer konfigurieren und Takt einstellen Config Int0 = Change ' Interrupt bei >wechselnder Flanke< des Echosignal starten On Int0 Interuproutine_Name ' Bei Interrupt zu InteruptSubroutine springen Enable Int0 ' Wenn auf Echo gewartet wird wechselt Echo-Signal auf High Enable Interrupts ' Interrupts global aktivieren ... SPRUNGMARKE_A Hauptprogramm blabla Hauptprogramm ... Interuptroutine_Name: ' Interrupt startet bei Signalwechsel am Int0-Pin If Pind.2 = 1 Then ' Wenn Pin zu High wechselt ... Goto SPRUNGMARKE_A ' Oder z.b. eine Variable setzen, die im Main immerwieder abgefragt wird End if Return
JAAAA... Microchips kann man essen... aber der Geschmack ist furchtbar.
Das mit dem Watchdog klingt doch gut. Wenn ich einen Taster drücke wird der Grenzwert überschritten (z.B. eine erhöhung von 0 auf 1) und das Programm wird RESETET. Also es Startet einfach ganz von vorne ohne den Reset-Knopf zu drücken.
Aber wie wende ich so einen Watchdog an, an einem ATMega32 (ich Programmiere in C mit AVR). Habe geguckt werde aber aus dem Watchdog nicht schlau.
Sorry wenn ich mich nicht gut ausdrücke. Bin aber ganz neu in der Thematik.
Gruß
Hi,
ich verstehe das eigentliche Problem nicht. Warum willst du den Reset-Taster nicht nutzen, der genau die Funktion erfüllt, die du wünscht. Stattdessen willst du einen weiteren Schalter/Taster anlöten, der technisch nichts an deiner vorhandenen Konfiguration ändert.
Wenn du unbedingt den zus. Taster wünschst, würde ich zu Joe's Lösung tendieren, einen Taster am Int0-Pin abzufragen, in der Interrupt-Routine ein Flag (Variable) setzen und in der Main-Loop das Flag prüfen. Dann kannst du von dort an deinen Programmanfang springen, z.B. zur Initialisierung der Variablen.
MfG
Tido
---------------------------------------------------
Have you tried turning it off and on again???
---------------------------------------------------
Lesezeichen