Hi
Ich würde gerne die Timer in meinem ATMEGA 32 aktivieren. Den Timer2
benutze ich bereits für eine Hardware PWM. Timer 1 wollte ich mir für
eine eventuell noch folgende Ansteuerung von Servos ebenfalls
freihalten.
Nun würde ich gerne verschiedene Zeiten messen, also z.B. den zeitlichen
Abstand zwischen zwei Texten, die über den UART reinkommen.
Soweit geht alles, nur die Timer habe ich noch nicht so ganz verstanden
:-)
1 | long timervar=0;
|
2 | int sekunde=0;
|
3 |
|
4 | void timeri()
|
5 | {
|
6 | TCCR0 |= (1<<CS00|1<<CS02);
|
7 | TIMSK |= (1<<TOIE0);
|
8 | }
|
9 |
|
10 | ISR (TIMER0_OVF_vect)
|
11 | {
|
12 | timervar++;
|
13 | if (timervar>=15625)
|
14 | {
|
15 | timervar=0;
|
16 | sekunde++;
|
17 | if (sekunde>=250) sekunde=0;
|
18 | }
|
19 | }
|
Interrupts allgemein sind aktiviert und funktionieren nachweislich
(UART).
Im Hauptprogramm hab ich dann zur Zeit zum Testen eine Dauerschleife
mit:
1 | lcd_loeschen(0);
|
2 | utoa(sekunde,ausgabetext,10);
|
3 | lcd_ausgabe(2,ausgabetext);
|
Nur eben zusammengeschustert...
löscht lcd
wandelt sekunden in Text um
gibt die Sekunden auf dem LCD in Zeile zwei aus
Ich bekomme aber immer nur eine 0 auf dem Display.
Was mach ich noch falsch?
Hab doch garantiert irgendwas grundlegendes vergessen, oder? :-)
Ciao Tobias