Quarz zu langsam?

Gast #3922383
Lesenswert?

Hallo zusammen,

ich habe hier einen Attiny2313 den ich mit einem externen Quarz arbeiten 
lassen will.

Auf dem Quarz steht folgendes:
EQZBJ
16.000M
18pF

Nach der Berechnung bin ich auf 2x 30pF für die Kondensatoren gekommen, 
habe allerdings nur 22pF da gehabt - soweit ich das verstanden habe 
sollte das funktionieren.

Ich habe nun ein Programm geschrieben welches in 1s die LEDs blinken 
lässt:
1
#define F_CPU 16000000UL
2

3
#define sbi(ADDRESS,BIT) ((ADDRESS) |= (1<<(BIT)))
4
#define cbi(ADDRESS,BIT) ((ADDRESS) &= ~(1<<(BIT))
5

6
#include <avr/io.h>
7
#include <util/delay.h>
8
#include <avr/interrupt.h>
9

10
ISR (TIMER1_COMPA_vect)
11
{
12
  static int cnt=0;
13
  
14
  if(cnt>0){
15
      PORTD=0xff;
16
      cnt=0;
17
  }else{
18
    PORTD=0x00;
19
    cnt++;
20
  }
21

22
}
23

24
void init(void)
25
{
26
  DDRD=0xff;
27
  PORTD=0x00;
28
  sbi(TCCR1B,WGM12); //ctc ocr1a
29
  
30
  sbi(TCCR1B,CS12);
31
  sbi(TCCR1B,CS10); // 1/1024
32
  OCR1A=15625; // 1 sek
33
  
34
  sbi(TIMSK, OCIE1A);
35
  
36
  sei();
37
}
38

39
int main(void)
40
{
41
  init();
42

43
  while(1)
44
  {
45
    _delay_ms(1);
46
  }
47
}

Allerdings wird der Interrupt nur alle 8s aufgerufen.
Die Fuses sind auf EXTXOSC_8MHZ_XX_14CK_0MS gestellt.

An was kann es denn liegen, dass das Programm langsam abläuft?

Grüße

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren