Jonas Enderlin schrieb:
> Mark Brandis schrieb:
>> Was ist die Fehlermeldung? Und was soll die Zeile hier:
>>
>> ush_RTCmin **;
>>
>> darstellen?
>
> Das war ein schreibfehler es sollte ++ heißen.
Dir ist klar, dass man sich mit Code, den man extra fürs Forum noch
einmal neu tippt, enorm unbeliebt machen kann? Es ist praktisch kaum zu
vermeiden, dass man da Tippfehler einbaut, die im realen Code nicht
vorhanden sind. Die regelmässigen Helfer hier haben dann eine
Riesenfreude, wenn sie dich auf Fehler aufmerksam machen, die in deinem
realen Code gar nicht enthalten sind.
Dreh deine Logik in der Interrupt Routine ein wenig um. Das ist ein
wenig arg vewrwirrend, was du da machst.
Erhöhe die jeweilige Variable und danach siehst du nach, ob du damit
übers Ziel hinausgeschossen bist und korrigierst das entsprechend, indem
du zb wieder bei 0 Sekunden anfängst und dafür 1 Minute mehr zählst.
Sind die Minuten bei 60, dann gehen die wieder auf 0 und dafür wird 1
Stunde mehr gezählt ....
1 | ...
|
2 | ush_RTCsec++;
|
3 |
|
4 | if( ush_RTCsec == 60 )
|
5 | {
|
6 | ush_RTCsec = 0;
|
7 | ush_RTCmin++;
|
8 |
|
9 | if( ush_RTCmin == 60 )
|
10 | {
|
11 | ush_RTCmin = 0;
|
12 | ush_RTChour++;
|
13 |
|
14 | if( ush_RTChour == 24 )
|
15 | ush_RTChour = 0;
|
16 | }
|
17 | }
|
18 |
|
19 | ...
|
siehst du um wieviel einfacher und durchschaubarer diese Logik ist? Bei
deiner Logik muss man erst mal alle Möglichkeite in Gedanken abklappern,
die du da mit den if's und else's aufgebaut hast um sich davon zu
überzeugen, dass in allen Fällen auch wirklich das Richtige passiert.