
Zitat von
Krampfda
ich habe keine ahnung, wo das problem genau sitzt ^^
Ich auch nicht. Habe den Code jetzt auch mal probiert, was soll ich schreiben, es geht.
Mit if(TCNT0==0xff) hast du bewiesen, dass der Zähler hoch läuft. Da TOV0 nicht gesetzt wird, scheint es ein Problem beim Überlauf zu geben. Das Flag wird aber erst mit dem Wechsel von 0xff zu 0x00 gesetzt. Wenn du Lust hast, kannst du der Sache mit folgendem Code auf den Grund gehen. Es wird dir bei der Lösung aber wohl nicht weiter helfen.
Code:
int main(void)
{
DDRB = 0x01;
TCCR0 = (1<<CS02)|(1<<CS00);
TIMSK = (1<<TOIE0);
//sei(); ist nur ein Test Nix mit Interrupt
TCNT0 = 0x01; //Wir wollen Prüfen, ob 0x00 wieder erreicht wird
while(1)
{
if(TCNT0==0x00)
{
PORTB = 0x01;
}
}
/* Wird nie erreicht */
return 0;
}
Leuchtet die LED findet ein Überlauf statt. Das Flag TOV0 müsste gesetzt sein.
Wie hilft dir das? Keine Ahnung. Sorry.
Hardewar? Okay, schließt du aus.
Gruß
Jens
edit:Mir ist noch eine Möglichkeit eingefallen. Schau mal ob du auch die richtigen Headerdateien, die vom Atmega8, einbindest. Nicht das der Interruptvektor weißdergeier wohin zeigt.
Lesezeichen