Counter/Timer Ausführungszeit stimmt nicht mit Rechnung überein

OP #1502500
Lesenswert?

Hi,
ich versuche eine definierte Frequenz mittels dem Timer/Counter und dem 
CTC Modus zu erreichen. Hierzu folgender Code für einen Atmel Mega8:
1
#include <avr/io.h>
2
#include <avr/interrupt.h> 
3

4

5

6
int main (void)
7
{
8
   DDRC |= (1 << PC1); // Set LED as output
9
   
10
   TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode
11
   TIMSK |= (1 << OCIE1A); // Enable CTC interrupt
12
   
13
   sei(); //  Enable global interrupts
14
   OCR1A   = 50; // Set CTC compare value 
15

16
   TCCR1B |= (1 << CS10); // Start timer at Fcpu
17

18
   for (;;) //Endlosschleife
19
   {
20
   __asm volatile ("nop");
21
   }
22
}
23

24
//Compare Timer ISR
25
ISR(TIMER1_COMPA_vect)
26
{
27
   PORTC ^= (1 << PC1); // Toggle the LED
28
}

Der Controller läuft mit einem Takt von 3,6864Mhz. Wenn ich das alles 
richtig verstanden habe müsste meine Led mit folgender Frequenz 
leuchten:

F(led) = Takt(cpu) / (2* (1+ OCR1A))

Die 2-3 Ticks, die er fürs Toggeln braucht dürften vernachlässigbar 
sein. Rein rechnerisch komme ich so auf 36,14kHz... mit dem Oszi 
gemessen habe ich aber 9,664KhZ ?! Woher kommt die Differenz?

Gruß
Stephan
OP #1502541
Lesenswert?

Ui... manchmal liegt die Lösung so nah =) Ich benutze ein vorgefertigtes 
Programmier Bord "myAvr", auf dem der Quarz bereits eingelötet ist, aber 
scheinbar nicht per fuseBits aktiviert. Habe etwas Angst da mit den Bits 
rumzupspielen, ohne zu wissen was ich tue.
AVR Prog bietet mir da einige Auswahlmöglichkeiten. Ich vermute ext XTAL 
(medium Freq) ist mein Mann oder?

Gruß und danke für die flotte Hilfe
Gast #1502619
Lesenswert?

>Habe etwas Angst da mit den Bits rumzupspielen, ohne zu wissen was ich tue.

Das sollte man auch niemals tun. Aber die gute Nachricht: Das "ohne zu 
wissen" kannst Du ändern, z. B. einfach ne halbe Stunde Zeit nehmen und 
alles im Datenblatt lesen, was zu dem Thema drinsteht. Danach kann Dich 
(fast) nix mehr erschüttern :-)

>Ich vermute ext XTAL (medium Freq) ist mein Mann oder?

Jepp.

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