Forum: Mikrocontroller und Digitale Elektronik Anfänger-Verständnissfrage,TCNT0,Atmega8


von Attila C. (attila)


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!

von Attila C. (attila)


Lesenswert?

Sorry: Timer 0 muss im ersten Satz stehen!

von spess53 (Gast)


Lesenswert?

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

von Attila C. (attila)


Lesenswert?

Danke Spess! Ich werde es ausprobieren!

von Heinz L. (ducttape)


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.

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
Noch kein Account? Hier anmelden.