Moin,
ich blicks im Moment nicht, vielleicht sollte ich auch erst noch einen
Kaffee trinken...
Ich habe hier folgende Zeilen Code :
1 | .....
|
2 | while ((receiveACK()==0) && (Timer< 4)); //Wenn kein ACK und Timer über 4 dann weiter
|
3 | if ((Timer >= 4) && (Try == 3)){
|
4 | timeout = 1; // 3. Versuch und timeout , hier lief was schief !
|
5 | USART0_Puts("Timeout !!");
|
6 | }
|
7 | if (Timer <4){
|
8 | // wir haben einen ACK erhalten !
|
9 | TimerOff();
|
10 | return 0;
|
11 | }
|
12 | TimerOff();
|
13 | } // for try
|
14 |
|
15 |
|
16 |
|
17 | return timeout;
|
ich bekomme immer einen Timeout, obwohl die Funktion receiveACK() eine
return 1;
liefert !
Habe ich da einen Denkfehler ? Dieser Codeschnipsel soll folgendes
machen , es wird solange auf ein ACK gewartet bis entweder eine 1 oder
die Variable Timer (Ein Interrupt der jede Sekunde die Variable um 1
erhöht) >= 4 ist.
Wird die Zeit überschritten, wird das ganze noch 3x aufgerufen,
For-schleife mit der Var. try.
Ich blicks nicht.
Vielleicht sieht Jemand von euch was.
Gruß
Oddel