Forum: Mikrocontroller und Digitale Elektronik Counter/Timer Ausführungszeit stimmt nicht mit Rechnung überein


von Stephan M. (johnwurst)


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

von (prx) A. K. (prx)


Lesenswert?

Das kommt vom ab Werk aktiven internen Taktoszillator mit seinen 1MHz. 
Quarz dranhängen allein reicht nicht, man muss ihn auch verwenden.

von Stephan M. (johnwurst)


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

von Gast (Gast)


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.

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.