HulaHup schrieb:
> Wie macht ihr es, dass nur einmal was gesendet wird?
Indem es auch einen 'Fehlerzustand' 'Kein Fehler' gibt. Tritt ein Fehler
auf, wird der entsprechende Fehlerzustand gesetzt. Die Senderoutine
sendet den Fehler und danach wird der Fehler wieder auf 'kein Fehler'
gesetzt.
1 | ....
|
2 |
|
3 | Flag = 0xFF; // es gibt keinen Fehler
|
4 |
|
5 | while(1)
|
6 | {
|
7 |
|
8 | switch(Flag)
|
9 | {
|
10 | case 0: TransmitChar('0');break;
|
11 | case 1: TransmitChar('1');break;
|
12 | case 2: TransmitChar('2');break;
|
13 | }
|
14 | Flag = 0xFF; // für kein Fehler
|
15 |
|
16 | ....
|
du solltest übrigens lieber ein paar #define anstelle dieser Konstanten
im Code benutzen. Das macht das ganze wesentlich lesbarer
1 | #define OVERFLOW_ERROR 0x01
|
2 | #define FRAMING_ERROR 0x02
|
3 | ...
|
4 | #define NO_ERROR 0xFF
|
5 |
|
6 | ...
|
7 |
|
8 | Flag = NO_ERROR;
|
9 |
|
10 | while(1)
|
11 | {
|
12 |
|
13 | if( Flag != NO_ERROR )
|
14 | {
|
15 | switch(Flag)
|
16 | {
|
17 | case OVERFLOW_ERROR: TransmitChar('0');break;
|
18 | case FRAMING_ERROR: TransmitChar('1');break;
|
19 | case UART_ERROR: TransmitChar('2');break;
|
20 | }
|
21 | Flag = NO_ERROR; // für kein Fehler
|
22 | }
|
23 |
|
24 | ....
|