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!
Hi Hat es sich immer noch nicht herumgesprochen, das man so etwas mit CTC macht? Mit den WGM-Bits dem CTC-Mode konfigurieren. OCR1A mit dem passenden Wert laden. Fertig. MfG Spess
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.