ATtiny24 Timer/Counter 1 Fast PWM 8-Bit Mode

Gast #6963147
Lesenswert?

Hallo,
folgendes Programm erzeugt bei mir, nach meinem Verständnis, eine 
falsche Frequenz. Weiß jemand was ich falsch gemacht habe?
1
#define BV(bit) (1 << (bit))
2
int __attribute__((OS_main)) main(void)
3
{
4
  DDRB = BV(PB0);
5
  TCCR1A = BV(WGM12) | BV(WGM10);  // 0101 Fast PWM, 8-bit
6
  TCCR1B = BV(CS11) | BV(CS10);  // 64
7
  
8
  while (1)
9
  {
10
    if (TIFR1 & BV(TOV1))
11
    {
12
      PORTB ^= BV(PB0);
13
      TIFR1 = BV(TOV1);
14
    }
15
  }
16
  return 1;
17
}
Der Controller arbeitet mit dem Internen Takt von 8MHz.
Deshalb erwarte ich ca. alle 2ms eine Flanke. (256 * 64 / 8.000.000)s
Dennoch sehe ich am Oszilloskop die Flanken nur alle 4ms.
Die Fuse-Bits sind wie folgt programmiert:
1
SELFPRGEN = [ ]
2
RSTDISBL = [ ]
3
DWEN = [ ]
4
SPIEN = [X]
5
WDTON = [ ]
6
EESAVE = [ ]
7
BODLEVEL = DISABLED
8
CKDIV8 = [ ]
9
CKOUT = [ ]
10
SUT_CKSEL = INTRCOSC_8MHZ_6CK_14CK_64MS_DEFAULT
11

12
EXTENDED = 0xFF (valid)
13
HIGH = 0xDF (valid)
14
LOW = 0xE2 (valid)

Herzlichen Dank,
Simon

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