mikrocontroller.net

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


Autor: Stephan Mustermann (johnwurst)
Datum:

Bewertung
0 lesenswert
nicht 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:


#include <avr/io.h>
#include <avr/interrupt.h> 



int main (void)
{
   DDRC |= (1 << PC1); // Set LED as output
   
   TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode
   TIMSK |= (1 << OCIE1A); // Enable CTC interrupt
   
   sei(); //  Enable global interrupts
   OCR1A   = 50; // Set CTC compare value 

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

   for (;;) //Endlosschleife
   {
   __asm volatile ("nop");
   }
}

//Compare Timer ISR
ISR(TIMER1_COMPA_vect)
{
   PORTC ^= (1 << PC1); // Toggle the LED
} 


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

Autor: A. K. (prx)
Datum:

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

Autor: Stephan Mustermann (johnwurst)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.