Gast
#2262889
Hallo, also ich verwende einen ATmega8 mit 4MHz und will das er jede Minute aufwacht, die Temperatur misst, am LCD ausgibt und wieder in den Idle Mode geht. Ich wollte den Idle Mode verwenden, weil bei diesem die Timer noch verfügbar sind und der µC auch durch den Timer (Interrupt) wieder aufwacht. So jetzt weiß ich aber nicht wie ich das am besten machen soll, das der Timer nur einen (wegen Idle Mode) Interrupt erzeugt (alle 60s). Mit dem Prescaler (1024) komm ich auf 3906,25 Takte pro Sekunde und 234375 Takte bei 60s. Das dieser Wert zu groß für ein 8 / 16 Bit Register ist ist mir schon klar, nur hab ich im "AVR-GCC-Tutorial/Die Timer und Zähler des AVR" das gelesen: "Im CTC Modus des Timers ist es möglich, anstelle der durch die Hardware bedingten Obergrenze des Timers, eine andere Zahl zu benutzen, an der der Timer einen Interrupt auslöst". Dann wollte ich gleich den Timer2 verwenden, aber es erscheint immer eine Fehlermeldung beim Simulieren: stray '\226' in program expected ';' before numeric constant Hier der Timer Code dazu: TCCR2 |= (1<<WGM21); // Timer2 --> CTC Modus TCCR2 |= (1<<CS20) | (1<< CS21) | (1<<CS22); // Prescaler 1024 OCR2 = 234375–1; // Timer vorladen (60s) TIMSK |= (1<< OCIE2); // Compare Interrupt erlauben also denke ich das der Wert für das Register doch zu groß ist?? oder kann ich eine Variable hochzählen lassen, ohne Interrupt??