www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik [Atmega88] Quarz falsch laut Timer1?


Autor: Kalka (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Huhu Zusammen,

ich habe im Moment ein kleines Problem mit meinem Quarz. Angeschloßen 
ist ein 12MHz quarz mit 22pF Kondensatoren. Im AVR-Studio habe ich dann 
die Einstellung unter den "Fuses" auf

"Ext. Full-Swing Crystal; Startup Time PWRDWN/RESET: 16K CK/14K + 0ms"

gesetzt. Der Controller lief soweit auch. Nun wollte ich auch mal die 
Frequenz testen, indem ich einen Timer dazu programmierte. Letzlich habe 
ich mich dann für Timer1, also dem 16 Bit Timer entschieden.
Mein Ziel war es dann einen 1s Timer zu erstellen.

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

volatile  char P_D;

  void InitTimer1()
  {
    //Bit 0..2: Source: CPU-Freq/256
    //Bit    3: Timer Vergleich durchführen
    TCCR1B = 0b000001100;

    //Vergleichswert
    OCR1A = 46875;

    //Bit 1: Interrupt on Match!
    TIMSK1 = 0b00000010;
  }

int main () 
{
  //PortD -> Ausgang
  DDRD  = 0xff;

  //PortB -> Ausgang; LED Ein
  DDRB  = 0xff;
  PORTB = 0b00000001;

  InitTimer1();

  sei();

  while(1) 
  {
    PORTD = P_D;
  }                        
 
   return 0;
}


ISR (TIMER1_COMPA_vect)
{
  P_D++;
}

Der Code ist eigentlich recht kurz gehalten, vielleicht könntet ihr ihn 
ja mal überfliegen. Meine Rechnung um die entsprechenden Werte zu 
erlangen:

F = 12MHz
Pre = 256

F/Pre = AnzÜberläufe/Sekunde

 = 46875

-> Und das ist dann der entsprechende Vergleichswert.

Wenn ich das Programm allerdings starte, erhöht sich Port D leider nur 
etwa alle 8 Sekunden anstatt jede Sekunde.

Meine Frage nun: Ist der Programmcode falsch? Oder habe ich bei den 
Fuses einen Fehler gemacht?

viele Grüße, Thomas

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
CKDIV8 Fuse deaktiviert?

Autor: Kalka (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey,

vielen Dank, das war schon die Lösung g

Viele Grüße, Thomas

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.