Hallo Checkbox,
willkommen im AVR-PRAXiS Forum.
Hast du schon mal ein Programm für einen Mikrocontroller geschrieben oder einen AVR Mikrocontroller programmiert?
Wenn nicht, würde ich mich zuerst mit zwei Sachen auseinandersetzen:
(1) Schreibe ein Grundprogramm, welches den logischen Zustand eines Portpins in einem bestimmten Zeitintervall ändert (LED toggeln). Du kannst erst mal als Systemtaktquelle den internen RC Oszillator verwenden, dieser ist von Werk aus eingestellt, brauchst also keine Fusebits ändern.
(2) Danach würde ich mit den Fusebits für die Systemtaktquelle aueinandersetzen (CKSEL3..0, SUT1..0, CKOPT, CKDIV8), so dass du einen Quarz (an XTAL2/1 Pins) verwenden kannst.
Einen speziellen Link zu deinem Problem habe ich nicht, es erscheint mir aber relativ einfach zu lösen. Voraussetzung ist allerdings, dass du nicht schon bei dem LED-Blink-Programm hängst.
Folgendes wird dir wahrscheinlich noch nicht besonders weiterhelfen, aber trotzdem schon mal der Hinweis auf eine mögliche Lösung:
- Du konfiguriertst einen Timer und aktivierst den Timerinterrupt (Overflow oder Compare)
- Die Timerinterruptroutine wird zyklisch aufgerufen, du hast hier also eine Zeitbasis. In der Interruptroutine verwendest du für Minuten und Stunden Zählvariablen, ggf. verwendest du zusätzlich noch eine weitere Variable, die du als Teiler nutzt, falls die Interruptroutine zu schnell aufgerufen wird.
- Im Hauptprogramm fragst du permanent Minuten und Stunden ab und reagierst entsprechend drauf.
Die Zeitbasis kann man auch durch Pausen erzeugen (_delay_ms(zeit)), so dass du keinen Interrupt benötigst, dies halte ich aber nicht für sehr elegant und auch nur für kleine einfache Programme geeignet. Es könnte aber für dich schon ausreichen, es ist auch einfacher zu verstehen, zu lösen (Ausgabe auf einem LCD ist aber noch nicht berücksichtigt)
Vielleicht durchsuchst du auch mal unser Forum nach ein paar Stichworten.
Grüße,
Dirk