Christian L. schrieb:
> Der Code sieht mitlerweile so aus und ich weiß echt nicht, wo noch der
> Bock liegt.
Auf den schnellen Blick sehe ich, dass Deine Funktion uart_gets() den
String nicht terminiert. Das ist böse. Terminierung geht mit
am Ende der Funktion. Aber dafür musst Du ein weiteres Zeichen im Buffer
einplanen, z.B. indem Du schreibst:
Alt:
Neu:
1 | uint8_t StringLen = 1; // minimal len is 1: '\0' as terminator
|
Zweiter Bock:
1 | volatile char empfangen; // das ist ein einzelnes Zeichen!
|
2 | ...
|
3 | uart_gets(empfangen,3); // hier übergibst Du das Zeichen als Buffer!
|
Das ist ebenso böse. Hat der Compiler nicht gemeckert? Wenn ja, warum
ignorierst Du die Meldung?
Warum Du empfangen als volatile deklariert hast, ist mir auch
schleierhaft.
Also:
1 | char empfangen[5];
|
2 | ...
|
3 | uart_gets(empfangen,4);
|
Und dann geht das hier nicht mehr:
Das musst Du anders lösen -> Deine Hausaufgabe ;-)