Anfänger-Verständnissfrage,TCNT0,Atmega8

OP #2626167
Lesenswert?

Hallo!

Ich versuche den Timer 2 schneller laufen zu lassen indem ich in TCNT0 
etwas (z.B. 200) hineinschreibe so dass eben nicht alle 255 Schritte 
durchlaufen werden.

Ich habe herumprobiert und ich komme zu keinem Ergebniss.

1)Gehe ich recht in der Annahme das wenn ich z.B. 200 in TCNT0 schreibe 
der Counter nur noch 55 Schritte zählt?

2) Wo muss das stehen? Ich habe es im main und in der ISR probiert ohne 
Ergebniss.

Mein Programm sieht im Moment so aus:

#define F_CPU 8000000

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

ISR (TIMER0_OVF_vect)
{
  PORTB=0xFF;
}



int main(void)
{
  DDRB=0xFF;
  PORTB=0xFF;
  TCCR0=(1<<CS00);          //Timer 0 konfig
  TIMSK=(1<<TOIE0);          //Overflow interrupt an
  sei();                //Interrupts global an


    while(1)
    {
    PORTB=0x00;
    }
}

Die Manipulation von TCNT0 habe ich nicht mehr drin stehen weil mir wie 
gesagt nicht klar ist was ich falsch mache.

Vielen Dank!
#2626212
Lesenswert?

Timer0 unterstützt afaik beim ATmega8 kein PWM. Und auch keine 
timer-compare operation. Ich find im TIFR vom Mega 8 jetzt auch kein 
Flag das einen OC-interrupt für Timer0 darstellen würde.

Sofern Timer2 noch verfügbar ist, mach's mit dem. Ist auch 8bit und der 
kann's. Timer1 ginge auch, ist aber von den Optionen her etwas 
überladen, für'n Anfang würd ich den T2 nehmen.

Dazu setzt Du im Register TCCR2 das WGM21 Bit für CTC (und mit CS-Flags 
den Prescaler), OCR2 auf den Wert bis zu dem er zählen soll und in TIFR 
das OCIE2 bit.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren