Hi! Ich hab folgenden Programmcode:
1 | #include <avr/io.h |
2 | #include <avr/interrupt.h>
|
3 | |
4 | ISR(TIMER1_OVF_vect){ |
5 | if(PORTD & 0x01){ |
6 | PORTD = PORTD & ~(1<<PD0); |
7 | OCR1A = 0xFFFF; // hier |
8 | }
|
9 | else{ |
10 | PORTD = PORTD | (1<<PD0); |
11 | OCR1A = 0xFFFF; // hier |
12 | }
|
13 | }
|
14 | void main(void){ |
15 | DDRD = 0xFF; |
16 | PORTD = 0x00; |
17 | |
18 | init_ctc(8, 0xFFFF); |
19 | while(1){} |
20 | }
|
wie man sieht will ich in meiner Interrupt Routine das Register OCR1A neu beschreiben, damit ich das Ausgangssignal stärker variieren kann... Sobald ich aber OCR1A mit einem anderem Wert als dem als erstes geschriebenen Wert beschreiben will, kommt es mir so vor als ob die Routine nicht mehr aufgerufen wird!? An was kann das liegen? Der obige Code funktioniert aber sobald ich an den markierten stellen 0xFFFF durch irgendetwas anderes ersetzte geht es nicht mehr... Hoffe ihr könnt mir helfen!