[Atmega88] Quarz falsch laut Timer1?

Gast #1436997
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.
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3

4
volatile  char P_D;
5

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

12
    //Vergleichswert
13
    OCR1A = 46875;
14

15
    //Bit 1: Interrupt on Match!
16
    TIMSK1 = 0b00000010;
17
  }
18

19
int main () 
20
{
21
  //PortD -> Ausgang
22
  DDRD  = 0xff;
23

24
  //PortB -> Ausgang; LED Ein
25
  DDRB  = 0xff;
26
  PORTB = 0b00000001;
27

28
  InitTimer1();
29

30
  sei();
31

32
  while(1) 
33
  {
34
    PORTD = P_D;
35
  }                        
36
 
37
   return 0;
38
}
39

40

41
ISR (TIMER1_COMPA_vect)
42
{
43
  P_D++;
44
}

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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.