Hallo
Annahme: Stopwatch steht bei 40
If Stopwatch3 < 80 ---> ist True
If Stopwatch3 < 80+80 ---> ist aber ebenfalls True
Wo ist denn das "else" geblieben? < 160 wird nur geprüft, wenn die StopWatch >= 80 ist...
Warum eigentlich 80+80 und nicht gleich 160?
So sieht man auf einen Blick ohne großen Kommentar, wie der Wert entsteht. Da es sich um Konstanten handelt, wird beim Kompilieren beides gleich übersetzt:
Code:
// testzeile +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if (getStopwatch3() < 80)
24c: 80 91 b8 00 lds r24, 0x00B8
250: 90 91 b9 00 lds r25, 0x00B9
254: 80 35 cpi r24, 0x50 ; 80
256: 91 05 cpc r25, r1
258: 90 f0 brcs .+36 ; 0x27e <eigenefunktion+0x32>
{
setLEDs(63);
//PORTC |= IO_PC7;
//PORTC |= IO_PC5;
}
else if (getStopwatch3() < 80+80)
25a: 80 91 b8 00 lds r24, 0x00B8
25e: 90 91 b9 00 lds r25, 0x00B9
262: 80 3a cpi r24, 0xA0 ; 160
264: 91 05 cpc r25, r1
266: 20 f4 brcc .+8 ; 0x270 <eigenefunktion+0x24>
//testzeile
{
setLEDs(0);
268: 80 e0 ldi r24, 0x00 ; 0
26a: 0e 94 a6 01 call 0x34c <setLEDs>
26e: 08 95 ret
//PORTC &= ~IO_PC7;
//PORTC &= ~IO_PC5;
}
else if (getStopwatch3() < 80+80+80)
270: 80 91 b8 00 lds r24, 0x00B8
274: 90 91 b9 00 lds r25, 0x00B9
278: 80 3f cpi r24, 0xF0 ; 240
27a: 91 05 cpc r25, r1
27c: 10 f4 brcc .+4 ; 0x282 <eigenefunktion+0x36>
{
setLEDs(63);
27e: 8f e3 ldi r24, 0x3F ; 63
280: f4 cf rjmp .-24 ; 0x26a <eigenefunktion+0x1e>
//PORTC |= IO_PC7;
//PORTC |= IO_PC5;
}
else if (getStopwatch3() < 80+80+80+100)
282: 80 91 b8 00 lds r24, 0x00B8
286: 90 91 b9 00 lds r25, 0x00B9
28a: 84 55 subi r24, 0x54 ; 84
28c: 91 40 sbci r25, 0x01 ; 1
28e: 60 f3 brcs .-40 ; 0x268 <eigenefunktion+0x1c>
{
setLEDs(0);
//PORTC &= ~IO_PC7;
//PORTC &= ~IO_PC5;
}
else setStopwatch3(0);
290: 10 92 b9 00 sts 0x00B9, r1
294: 10 92 b8 00 sts 0x00B8, r1
298: 08 95 ret
0000029a <main>:
}
// testzeile +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Bei meinem RP6 funktioniert das Programm oben wie erwartet. Wenn man z.b. die 100 in 1000 ändert, sieht man deutlich den geänderten Blinkrythmus. Warum dein Piepen nicht funktioniert liegt möglicherweise an der Erweiterung.
Gruß
mic
Lesezeichen