PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AtMega8 Timer0 will nicht so richtig



the_maniac
29.05.2008, 22:46
Hallo,

Programmiere seit kurzem mit dem ATMega doch ich bekomme einfach keinen Timer zu laufen.

Ich wollte es ohne Interrupt programmieren also mit Overflow

Ich hab den Timer0 auf 1/1024 eingstellt.

Danach wollte ich die Abfrage nach nem Overflowso realisiern:



if(bit_is_set(TIFR,0)) //Wenn das TOV0 gesetzt wird (0.Bit) müsste ja 1 drinstehen
{
TIFR |= (1<<TOV0); //das Bit rücksetzen
cnt++;
}

if(cnt>=100)
{
cnt=0;
PORTB |= (1<<PB0);
}

PORTB &= ~(1<<PB0);


als 2.te Möglichkeit um das TOV0 Register auf gesetzt zu überprüfen wollte ich das machen




if(TIFR & (1 << 0))
{
.....
}



was kann jeweils dran falsch sein ?

mfg

McJenso
31.05.2008, 09:45
Hallo,

bitte stell den kompletten Code, der für das Problem relevant ist, rein. Beschreibe genau was nicht funktioniert. Wenn du schreibst, dass du den Timer nicht zum laufen bringst und ich dann antworte, dass die Initialisierung fehlt, ist dir nicht geholfen. Beschreibe welches Verhalten du erwartest und welches Verhalten sich zeigt.



if(cnt>=100)
{
cnt=0;
PORTB |= (1<<PB0);
}

PORTB &= ~(1<<PB0);
Hier bleibt der Port nur einen Befehl lang gesetzt. Ist das beabsichtigt? Mit einer LED siehst du da nix.

Gruß

Jens