Hallo,
ich habe erst vor kurzem mit Mikrocontrollern angefangen und stehe nun
vor einem Problem mit den Timern beim Atmega8.
Zum Testen habe ich eine LED an Pin PB0 angeschlossen.
Hier einmal mein Code:
1 | #include <avr/io.h>
|
2 | #include <avr/interrupt.h>
|
3 |
|
4 | #define F_CPU 8000000UL // 8 MHz
|
5 |
|
6 | ISR (TIMER0_OVF_vect){
|
7 | PORTB |= (1 << PB0);
|
8 | }
|
9 |
|
10 | int main(){
|
11 | DDRB = (1 << PB0);
|
12 | PORTB = 0;
|
13 |
|
14 | TCCR0 = (1 << CS00);
|
15 | TIMSK |= (1 << TOIE0);
|
16 |
|
17 | sei();
|
18 |
|
19 | while(1){
|
20 | //PORTB |= (1 << PB0);
|
21 | }
|
22 | return 0;
|
23 | }
|
Ich habe den Code auf das Nötigste reduziert, um den Fehler besser
finden zu können.
Anscheinend wird aber die Interruptfunktion nicht ein einziges Mal
aufgerufen, da die LED aus bleibt.
In der Schaltung sollte kein Fehler sein, da die LED leuchtet wenn ich
den Port in der main()-Funktion aktiviere.
Ich suche schon die ganze Zeit im Datenblatt/Internet, ob ich nicht
etwas wichtiges vergessen habe, kann aber leider nichts finden. Auch mit
einem Atmega88 funktioniert es nicht.
Low-Fuse: 0xe4 High-Fuse: 0xd9
gcc-Version 4.8.2 (Gentoo 4.8.2 p1.0, pie-0.5.8)
Ich hoffe ich habe keine Information vergessen und mir kann jemand
helfen.
mfg Kevin