1 Mhz mit ATMega8 erzeugen

Gast #3166924
Lesenswert?

Hallo,

ich möchte ein 1 Mhz Rechtecksignal mit einem ATmega8 erzeugen, der mit 
der internen Taktfrequenz von ebenfalls einem Mhz läuft.
Dazu verwende ich den Timer0 ohne Prescaler und lade ihn auf 255 vor. In 
der Interruptroutine wird dann ein Pin getogglet.
1
 
2
TCCR0 |= (1<<CS00);
3
TIMSK |= (1<<TOIE0);
4
sei();
5
ISR(TIMER0_OVF_vect)        
6
{ 
7
  TCNT0 = 254;
8
  PORTC ^= (1<<PC5);
9
}
Die gemessene Frequenz beträgt allerdings nur 12.5Khz. Was läuft hier 
falsch?

Beste Grüße,

Bilbo
#3167010
Lesenswert?

Dafür gibt es doch die CKOUT Fuse oder wie der Name genau war (werde das 
DB jetzt nicht am Handy durchwühlen) dann kriegst du den Takt direkt von 
der Hardware geliefert. Und selbst ohne das, was soll der Quatsch, den 
Pin in der ISR zu wackeln, wenn es die Compare-Outputs gibt? Bei 1 MHz 
Takt geht das eh nicht und einfach mal hochtakten, weil die Software 
schrottig ist, ist leider sehr beliebt. rolleyes
Moderator Persönliche Seite #3167083
Lesenswert?

Thomas W. schrieb:
> Geht denn nicht Timer1 im CTC-Modus mit Hardware-Pintogglen?

Ja, damit kommt man bis maximal fCPU/2.  (So funktionierte der
Software-gesteuerte Taktgenerator auf dem STK500.)

Malte S. schrieb:
> Dafür gibt es doch die CKOUT Fuse oder wie der Name genau war

Hat der ATmega8 meiner Erinnerung nach noch nicht, erst die
Nachfolger ATmega88 & Co.

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