borcio992 napisał(a):
Spójrz na tą linijkę:
while( (c=uart_getc()) != 0x0d) uart_putc(c);
Jeśli twój UART nie zdąży (a to jest pewne na bank) odebrać żadnego znaku (nic się nie doda do bufora) to powinien ciebie program spamować samymi '0' (ta linijka: if ( UART_RxHead == UART_RxTail ) return 0;).
Ale z jakiejś przyczyny wysyła śmieci, czyli wysyła to co jest w buforze.
Przy inicjacji zmiennych Tail i Head masz zera ??
Albo czasami zdefiniowany bufor nie jest za mały na maksymalną "długość ogona i głowy" ?? i czytasz z pamięci która do ciebie nie należy ??
Przy inicjacji zmiennych mam zera, znaczy nie było ich ale już mam i nic to nie zmieniło.. odnośnie czytania z pamięci tej co do mnie nie należy to możliwe że tak jest, mógł by to być dobry trop, ale nie wiem jak temu zapobiec. Zaraz będę próbował innego sposobu odebrania konkretnej długości stringa, może to się uda.
------------------------ [ Dodano po: 15 minutach ]Antystatyczny napisał(a):
Ja to robię w tern sposób:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Mam pytanie odnośnie tego sposobu, za co w tej funkcji jest odpowiedzialna zmienna usart_nr?
------------------------ [ Dodano po: 49 minutach ]Na szybko zrobiłem trochę innym sposobem, ale efekt podobny.. Zrobiłem żeby odebrać łańcuch na 10 znaków, nadal tylko pierwszy jest poprawnie
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Efekt:
