Probleme mit Timer0 (Overflow Interrupt) [gelöst]
Hallo,
Nachdem ich es in den letzten Tagen mit weniger Fehlversuchen als vermutet geschafft habe eine LED mit meinem atmega8 zum leuchten zu bringen, habe ich nun ein Problem mit dem Timer0.
Ich möchte die LED an Port C 0 nach ungefähr 1s zum leuchten bringen.
Da ich an dem atmega8 noch nichts bezüglich der Taktfrequenz geändert habe, läuft dieser auf 1MHz. Ist es dann richtig dass der Timer (Vorteiler: 1024) alle 1000000 / 1204 / 256 = ca. 3,8 pro Sekunde das Overflow Interrupt auslöst? (Im TIMSK Register ist TOIE0 gesetzt und Interrupts sind aktiviert sei () )
Der komplette Quelltext sieht so aus:
Code:
#include <avr/io.h>
#include <inttypes.h>
#include <avr/interrupt.h>
#define OfPS 4
volatile uint8_t ofCount;
SIGNAL(SIG_OVERFLOW0)
{
ofCount++;
}
int main (void)
{
DDRC = 0x05;
PORTC = 0x00;
TCCR0 |= (1 << CS02) | (1 << CS00);
TIMSK |= (1 << TOIE0);
ofCount = 0;
sei ();
while (1)
{
if (ofCount >= OfPS)
{
PORTC |= (1 << PC0);
ofCount = 0;
}
}
}
Der Compiler meckert nicht, die LED fängt aber auch nicht nach ca. 1s an zu leuchten (oder besser gesagt sie fängt gar nie an zu leuchten).
Ich hab den Quelltext auch schon entsprechend abgeändert (PC0 wird im SIG_OVERFLOW0 auf High geschalten -> ist leider auch nichts passiert). Wieso löst er den Interrupt nicht aus?
Ich bin am verzweifeln :( .
MFG
Maximus