Forum: Mikrocontroller und Digitale Elektronik Controller Takt


von Samuel M. (samuel_m)


Angehängte Dateien:

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?

von nicht gast (Gast)


Lesenswert?

Timer1 ist ein 16-bit Timer

von spess53 (Gast)


Lesenswert?

Hi

>20.000.000/256/256

Das ist ein 16-Bit-Timer

MfG Spess

von Samuel M. (samuel_m)


Lesenswert?

Okay danke, das erklärt einiges :-)
Habe auch keinen 20MHz Quarz sondern einen 10MHz, dann passt es.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.