Forum: Mikrocontroller und Digitale Elektronik AVR Timer1 will nicht


von Ganymed (Gast)


Lesenswert?

Hallo Leute
Der Winterblues hat mir wohl das Hirn zugekleistert.

Ich nehme gerade eine Schaltung mit einem ATmega88
in Betrieb. Der Prozessor taktet mit 16MHz.
Mein erster Versuch: "Taste schalteteinen blaue LED"
hat noch prima geklappt.
Jetzt soll, mit Hilfe von Timer 1, die gleiche
LED mit etwa 0,4768Hz blinken. Dazu habe ich das folgende
kleine "Programm" geschrieben.
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
4
5
//Makros für die Bitverarbeitung
6
#define SETBIT(adr, bit) (adr |=  (1<<bit))
7
#define CLEARBIT(adr, bit) (adr &= ~(1<<bit))
8
#define TOOGELBIT(adr, bit) (adr ^=  (1<<bit))
9
#define CHECKBIT(adr, bit) (adr  &  (1<<bit))
10
11
//Anschlussklemmen der blauen 3mm LED auf dem Board
12
#define led_blau PORTB3 //blaue LED
13
#define port_led PORTB
14
15
16
int main(void)
17
{
18
 SETBIT(DDRB,DDB3);   //blauer LED Pin zum Ausgangen machen
19
 
20
 TCCR1B  = (1<<CS12); //Vorteiler 256
21
 TIMSK1 = (1<<TOIE1); //16-Bit Timer Überlauf nach 65536
22
 sei();                //16E6Hz / (65536*256) = 0,95Hz
23
24
 while(1)
25
26
 return 0;
27
}
28
29
ISR(TIMER1_OVF_vect)
30
{
31
 TOOGELBIT(port_led,led_blau);
32
}

Aber die LED geht jetzt gar nicht an ;-(

Wo ist das Problem??

von ahnungsloser (Gast)


Lesenswert?

hinter while(1) muss ein simikolon,

sonst wird in der endlosschleife 0 returned

von Justus S. (jussa)


Lesenswert?

Ganymed schrieb:
> Wo ist das Problem??

dein Programm ist durchgelaufen bevor der Interrupt zuschlagen kann...

von ahnungsloser (Gast)


Lesenswert?

ahnungsloser schrieb:
> endlosschleife 0 returned

also die schleife ist momentan keine endlosschleife, weil gleich die 
null zurückgegeben wird

von Ganymed (Gast)


Lesenswert?

Danke
Hab gerade mal eine kleine
Pause gemacht. Jetzt sehe ich
wieder klarer ;-)

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.