Hallo Forum! Ich will ein Relais für einen einstellbaren Zeitraum zwischen meinetwegen 30 Minuten und 3 Stunden ansteuern. Ich als AVR-Einsteiger würde den 8 Bit-Timer scharfschalten und nach jedem Überlauf (SIG_OVERFLOW0)einen Integer hochzählen. Für die ganz langen Laufzeiten halt auch entsprechend geschachtelte Integers. Ist die Herangehensweise so OK oder bin ich da auf dem woodway? Wie realisiert Ihr sowas? THX Stefan
Mit nem 16-Bit-Timer brauchste nicht so oft die Variablen zu erhöhen. Nur wenn Du Strom sparen willst (sleep), musst Du evtl. einen asynchron getakteten 8-Bit-Timer nehmen (was dann aber nen zusätzlichen Quarz erfordert). Abgesehen davon sind die SIG_IRGENDWAS-Sachen längst veraltet. Nimm ISR für die Interrupt-Handler und die dazugehörigen Vektornamen (z.B. TIMER0_OVF_vect).
Hallo, für den Anfang, sollte das reichen und funktioniert auch. Wenn dein Controller nichts anderes machen soll, was zeitkritisch ist, nimm den 1MHz Takt (eventuell mit Quarz, je nach Genauigkeit) und schalte den Vorteiler für den Timer auf die niedrigste Stufe. Sollte das ganze noch stromsparend (Batteriebetrieb) werden, könnte man den AVR schlafen legen, muss aber nicht sein :) Achja... wenn du einen 16 Bit Timer hast, nimm den
> Ich als AVR-Einsteiger würde den 8 Bit-Timer scharfschalten und nach > jedem Überlauf (SIG_OVERFLOW0)einen Integer hochzählen. Im Prinzip geht das wohl nicht anders, eine Busy-Loop mit NOP-Befehlen ist sicherlich keine bessere Wahl. > Für die ganz langen Laufzeiten halt auch entsprechend geschachtelte > Integers. Wenn Du in C programmierst, kannst Du auch gleich einen 32Bit-Integer verwenden. Elmar
@ plinepa (Gast) >Ist die Herangehensweise so OK oder bin ich da auf dem woodway? Das passt. Sinnvollerweise einen Quarz mit niedriger Frequenz und die Prescaler der Timer nutzen. @ Johannes M. (johnny-m) >Nur wenn Du Strom sparen willst (sleep), musst Du evtl. einen asynchron Strom sparen? Bei einer Relaisanstuerung? ;-) Mfg Falk
Falk Brunner wrote:
> Strom sparen? Bei einer Relaisanstuerung? ;-)
Kleinvieh macht auch Mist...;-)
ich würde das glaube ich mit Sleep machen, aber nicht wegen dem Strom.. ich will meinen fleißigen Rechnerlein doch auch mal ne Pause gönnen :D außerdem wär das ein Anlass für mich, mal zu schauen wie das mit dem Sleep überhaupt geht (man lernt es eben doch erst wenn man es auch braucht^^)
Ist es eine Option, eine RTC mit Alarm - Ausgang zu benutzen? Prinzip: AVR stellt Uhr (x+3min) -> Alarmausgang stellt Relais. Bei Maxim habe ich irgendwo einmal so eine Application gesehen. Sicher bin ich mir alerdings, das ich das mal im AN eines LM75 gesehen habe. Der steuerte ein Lüfterrelais an, wenn eine bestimmte Tempeartur unter/überschritten wurde. Programmiert wurde die Temperatur über I²C. Wenn interssiert kann ich es ja mal raussuchen.
> Strom sparen? Bei einer Relaisanstuerung? ;-)
Kein Problem.
Wird bei vielen batteriegespeisten Datenloggern mit Stromstoßrelais
realisiert. ;)
Mit dem Watchdog Interrupt kann man alle ca 8 sec einen Zaehler hochzählen. Wenn man sonst nix zu tun hat, schläft der Prozessor relativ tief.
@ Herr Mueller (herrmueller) >Mit dem Watchdog Interrupt kann man alle ca 8 sec einen Zaehler >hochzählen. Wenn man sonst nix zu tun hat, schläft der Prozessor relativ >tief. Leider ist der aber alles andere als genau. Dann lieber ein Uhrenquarz. Siehe Sleep Mode. MfG Falk
@Kai
> ich will meinen fleißigen Rechnerlein doch auch mal ne Pause gönnen
Ist der in der Gewerkschaft? ;-)
@plinepa: Wie schon gesagt wurde: nimm ein Stromstoßrelais, welches bei dieser Spannung arbeitet oder ein bistabiles Relais, dann musst du nur einen kurzen Stromimpuls zum Einschalten und einen zum Ausschalten geben. Das spart dann jede Menge Energie. mfg gast
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.