Hallo ich dachte immer char und int_8t wäre das selbe. Dieses C Programm zeigt mir gerade, dass es wohl nicht so ist^^ Ich habe ein Programm welches über die Serie Schnittstelle Daten an meinen Controller sendet. Allerdings scheint dieses Programm Probleme mit Sonderzeichen zu haben. Statt ü sendet es die Zahl 195 anschließend 188. Statt ü sendet es die Zahl 195 anschließend 159. Das unten stehende Programm funktioniert so. Es passt diesen Fehler entsprechend an. Schreibe ich allerdings statt char empfangen =0; das hier int_8t empfangen =0; funktioniert meine Auswertung nicht mehr. Die Zeichen 195 und 188 bzw 159 werden aber trotzdem in mein Array empfangspuffer übertragen. Wie kann das sein?
1 | ISR(USARTC1_RXC_vect) |
2 | {
|
3 | char empfangen =0; |
4 | empfangen = USARTC1.DATA; |
5 | |
6 | if (paket_wird_empfangen ==1) |
7 | {
|
8 | if (empfangen == '$') //36Wenn das Schlusszeichen $ empfangen wurde |
9 | {
|
10 | paket_empfangen =1; |
11 | paket_wird_empfangen =0; |
12 | }
|
13 | else
|
14 | {
|
15 | if(empfangen!= 195) //Anfangszeichen für Sonderzeichen nicht werten |
16 | {
|
17 | //Sonderzeichen anpassen
|
18 | if(empfangen ==188) empfangen ='ü'; |
19 | if(empfangen ==159) empfangen ='ß'; |
20 | |
21 | empfangspuffer[empfangspuffer_zaehler] = empfangen; |
22 | empfangspuffer_zaehler++; |
23 | }
|
24 | |
25 | }
|
26 | }
|
27 | |
28 | if (empfangen == '#') //35 =# |
29 | {
|
30 | paket_wird_empfangen =1; |
31 | }
|
32 | |
33 | }
|