www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer-Zyklus stimmt nicht


Autor: Scuzzlebut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich nutze das XPLAIN-Evalboard mit dem Atmega128A1 und beschäftige mich 
grade mit dem Timer/Counter.

Ich möchte die LEDs mit einer konstanten Frequenz von 0,5 Hz toggeln.

Wenn ich die Blinkfrequenz mit dem Sekundenzeiger meiner Uhr vergleiche, 
blinken die LEDs nur ein zweimal synchron mit der Uhr und laufen dann 
schneller, bis sie irgendwann wieder "aufsynchronisiert" sind. Ist das 
einfach eine Toleranz die man akzeptieren muss oder mache ich einen 
Fehler?

Ich nutze den Timer-Treiber aus der entsprechenden AppNote von Atmel:

  /* Set period/TOP value. */
  TC_SetPeriod( &TCC0, 31249 );
  /* Interrupt on */
  TC0_SetOverflowIntLevel( &TCC0, TC_OVFINTLVL_LO_gc);
  PMIC.CTRL = PMIC_LOLVLEN_bm;
  sei();
  /* Select clock source. */
  TC0_ConfigClockSource( &TCC0, TC_CLKSEL_DIV64_gc );

Es wird also eine Periode gesetzt, die Interrupts gestartet und ein 
Divider von 64 festgelegt. Die Systemclock ist der interne 
2MHz-Oszillator.

Den Wert von SetPeriod habe ich folgendermaßen berechnet:

Period = (CLKsys/(2*DIV*0,5)) - 1

ergibt

(2000000/(2*64*0,5)) -1 = 31249

Meine ISR für den Overflow sieht folgendermaßen aus:

ISR(TCC0_OVF_vect)
{
  PORTE.OUT ^= 0xFF;
}

Danke schonmal.

Autor: Stefan Wimmer (wswbln)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..."der interne 2MHz Oszillator" ist wohl ein RC-Oszillator?
Dann brauchst Du Dich über Ungenauigkeiten (die auch noch von 
Betriebsspannung und Temperatur abhängig sind) nicht zu wundern.

Schalte doch mal den Quarz an - beim Xmega geht das unter 
Programmkontrolle und nicht mehr über Fuses.

Autor: Scuzzlebut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das ist ein RC. Du meinst den externen Quartz? Auf dem Board ist nur 
einer für die RTC vorhanden.

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.