Controller Takt

OP #2741004
Lesenswert?

Hallo zusammen,
irgendwie habe ich gerade ein Problem mit meinem Controller Takt.
Die Fuses habe ich wie im Anhang gezeigt eingestellt.
Nun habe ich um den Takt zu testen dieses Programm hier geschrieben:
1
/* Bit setzen */
2
#define sbit(var, bit) ((var) |= (1 << (bit)))
3

4
/* Bit löschen */
5
#define cbit(var, bit) ((var) &= (unsigned)~(1 << (bit)))
6

7
/* Byte definieren*/
8
#define byte uint8_t
9

10
/* Bit togglen */
11
#define tbit(var,bit) ((var) ^= (1 << (bit)))
12

13
#include <avr/io.h>
14
#include <avr/interrupt.h>
15

16
int main(void)
17
{
18
  sbit (DDRB,PB2);
19
  init_pwm();
20
    while(1)
21
    {
22
    }
23
}
24

25

26
void init_pwm (void)
27
{
28
  cli();          // Interrupts kurz deaktivieren
29

30
  TCCR1B = 4;        // Interrupt = Takt/256
31
  TIMSK1 |= (1<<TOIE1);   // Interrupt freischalten
32
  sei();                  // Interrupts global einschalten
33
}
34

35
//Timer 1 Interrupt
36
ISR(TIMER1_OVF_vect) {
37
  tbit (PORTB,PB2);
38
}

An PORTB, PB2 ist eine LED angeschlossen. Da mein Controller an einem 
20MHz Quarz betrieben wird sollte die LED doch nun mit der Frequenz 
20.000.000/256/256 = 305 blinken. Tut sie aber nicht, real dauert das 
umschalten zwischen an und aus ca. 1,5sec was nicht mal 1Hz entspricht. 
Was habe ich falsch gemacht?
Angehängte Dateien:

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