Hallo zusammen,
ich bin gerade dabei meine Quelltexte kritisch zu durchsuchen und komme
so wieder bei den Grundlagenfragen an, von denen ich ganz vergessen
hatte, daß ich noch gar nicht die Standardlösungen kenne.
Jetzt geht es mir um die Implemtierung eines Timeouts (reine Software,
ohne Watchdog). Wie wird das normal gelöst? Meine jetzige Lösung ist:
1 | // Timer-Variable wird extern jede Millisekunde in Interrupt hochgezählt.
|
2 | extern glu_millis unit_least24_t;
|
3 |
|
4 | uint_fast8_t initMyHardware (void)
|
5 | {
|
6 |
|
7 | uint_least24_t timeout;
|
8 | int_fast16_t diff;
|
9 |
|
10 | powerOnMyHardware();
|
11 |
|
12 | timeout = glu_millis + HWTIMEOUT;
|
13 | while(!isHardwareReady()) {
|
14 | if (diff = timeout-glu_millis, diff < 0) {
|
15 | return STATUS_TIMEOUT;
|
16 | }
|
17 | }
|
18 |
|
19 | // weiter gehts ...
|
20 |
|
21 | }
|
Wie sieht für dieses Klasse von Problemen die "gute Standardlösung" aus?
Viele Grüße
W.T.