Hi Leute !!! In meinem Programm ist durch den Timer1 eine Uhr integriert, die während der gesamten Programmlaufzeit im Hintergrund mitläuft. ------------------------------------- .... Config Timer1 = Timer , Prescale = 64 On Timer1 Uhrzeit Enable Timer1 Enable Interrupts Start Timer1 ..... Uhrzeit: Incr Timer_counter If Timer_counter = 2 Then Timer_counter = 0 Incr Sekunde If Sekunde = 60 Then Sekunde = 0 Incr Minute If Minute = 60 Then Minute = 0 Incr Stunde If Stunde = 24 Then Stunde = 0 End If End If End If Return ------------------------------------- Nun wird der ATTiny45 an einer bestimmten Programmstelle in den IDLE-Modus vesetzt, der ausschließlich durch das Betätigen eines Tasters an PortB.2 wieder beendet werden soll. Die Uhr soll währenddessen aber weiterlaufen, was ja im IDLE-Modus möglich ist. ----------------------- .... Config Int0 = Low Level On Int0 Wakeup Enable Int0 .... Wakeup: return ----------------------- Das funktioniert aber leider nicht, da der IDLE-Modus ja sofort wieder durch den Overflow-Interrupt vom Timer1 beendet wird. Gibt es evtl. eine Möglichkeit festzulegen, welche Interrupts den jeweiligen Sleep-Modus, also in meinem Fall den IDLE-Modus, beenden dürfen? Oder anders ausgedrückt, kann ich den Timer1-Overflow-Interrupt als Trigger für das Beenden des IDLE-Modus irgendwie "verbieten"? Grüße, The SphereX
Der "bestimmte Programmteil", der für IDLE sorgt, wird nach einem INT einfach fortgesetzt. Wenn die Uhr weiterlaufen soll, dann darf man ihr nicht DIN INT verbieten, sondern das Sleep muß in einer Schleife passieren, solange die "Sleep-Bedingung" erfüllt ist. Also z.B. Immer, falls alle Funktion in den Interrupt-Routinen steckt.
D. h. ich muß den µC nach jedem Timer1-Overflow, also jede 500 ms, wieder in den IDLE-Modus versetzen, bis der Taster gedrückt wurde? Also anstatt einfach nur: Config Powermode = Idle das Ganze z. B. so aufbauen? While Taster = 1 Config Powermode = Idle Wend Grüße, The SphereX
Wenn "Config Powermode=IDLE" das Äquivalent zu SLeep(); ist, dann ja. Ich bin halt mehr ein C-Fan und damit BASCOM-hater. Die CPU wird per Sleep Befehl angehalten und wacht beim ersten INT wieder auf. Je nach Sleepmode nicht bei jedem, aber im IDLE-Mode schon. Danach geht's einfach nach dem Sleep weiter. In der BASCOM-Watte verpackt ist das vielleicht nicht so gut zu erkennen. Hab grad bei Dr. Gugl gesehen, das macht auch Sleep. Es ist also nicht nur Config, sondern richtig Äkschen.
Ich hab's gerade mal probiert. Funktioniert tatsächlich so :-) Dann DANKE für den Hinweis, auch wenn dieser von einem BASCOM-Hater kommt ;-) Grüße, The SphereX
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.