Hallo zusammen,
ich steige bei meinem Programm nicht hinter das Problem.
Im Anhang findet Ihr den Code eines -wie ich finde- sehr simplen
Programmes.
Es soll nicht mehr passieren, als dass von einem Zählwert der in der ISR
inkrementiert wird, auf Port C ein einzelnes Bit angezeigt wird.
Jetzt zum Problem:
Wenn (wie im Codebeispiel) die Zeilen
1 | if (clock0.taktbyte.bit2 == 1)
|
2 | {
|
3 | PORTC |= (1 << PC2);
|
4 | }
|
5 | else
|
6 | {
|
7 | PORTC &= ~(1 << PC2);
|
8 | }
|
in der Endlosschleife stehen, bleibt der Wert an PORT C auf 0x00.
Stehen diese Zeilen stattdessen in der ISR...:
1 | SIGNAL(SIG_OVERFLOW0)
|
2 | {
|
3 | TCNT0 = STARTVAL_DEB;
|
4 |
|
5 | clock0.cval++;
|
6 |
|
7 | if (clock0.taktbyte.bit2 == 1)
|
8 | {
|
9 | PORTC |= (1 << PC2);
|
10 | }
|
11 | else
|
12 | {
|
13 | PORTC &= ~(1 << PC2);
|
14 | }
|
15 | }
|
... macht das Programm was es soll und PC2 blinkt.
Kann mir jemand sagen, was ich falsch mache?
Danke für jeden Tipp!!
Grüße
Dennis