Cieszę się, że udało ci się samemu rozwiązać problem. Jak widzisz był błahy - a już byłeś przekonany, że cię to przerasta
Odnośnie twojego nowego celu, to absolutnie i kompletnie nie rozumiem co ty chcesz usyskać:
Kod:
lcd_str(IrData);
o jaką 14 bitową ramkę ci chodzi ???? W ogóle taki zapis powinien wywalać ci obrzydliwego warninga, na którego jak widzę nie zwracasz w ogóle uwagi - a niedobrze .... bo tyle pisałem w książce, żeby warningi traktować jak błędy na początku nauki. Jako poważne błędy.
Ale do rzeczy - widzę, że nie rozumiesz za bardzo jeszcze co to są typy danych w C
.... i musisz to dokładnie przestudiować jeszcze raz. Na razie abstrahując od tego celu, zapis taki jak wyżej powoduje, że zamiast argumentu do tej funkcji lcd_str(), który ma być wskaźnikiem typu char na tekst ty sobie niefrasobliwie wpisujesz po prostu zmienną IrData, która jest typu uint16_t i w ogóle nie jest wskaźnikiem. I o tym KRZYCZY ci kompilator w warningu, że robisz pan błąd, że tak nie można bo wyjdą głupoty i krzaki na LCD
.... ale ty to kompilujesz a potem się dziwisz że krzaki na ekranie.
Dodam, że zmienna IrData nie powinna być w ogóle wykorzystywana przez ciebie w programie głównym, ona jest tylko do użytku w przerwaniu - no ale ty sprytnie sobie wyciągnąłeś ją
tak jak opisałeś to wyżej - no dobra - ok rozumiem - to jakiś cel. Niech będzie - ale zastanów się - to jest cały czas tylko i wyłącznie LICZBA CAŁKOWITA 16-bitowa bez znaku !!!
Zatem w jakiej postaci ty chciałbyś sobie tą rzekomą ramkę wyświetlić ???? w postaci ?? - no w jakiej ? nawet tego nie sprecyzowałeś w poście. A sprecyzowałeś sobie to sam ? Czy chodzi (próbuję zgadywać) o to żeby wyświetliły się zera i jedynki ? chodzi ci o postać binarną ?
Jeśli tak - to panie kochany - to wtedy chodzi ci o liczbę ale w formie binarnej. Wtedy teoretycznie można to zrobić tylko trzeba byłoby przerobić nieco funkcję
Kod:
lcd_int();
która służy właśnie do wyświetlania liczb dziesiętnych. A więc na początek zamiast tego:
Kod:
lcd_str( IrData );
co jest bezsensem niestety, daj sobie wyświetlenie liczby:
Kod:
lcd_int( IrData );
wtedy przynajmniej zbliżysz się do celu, tzn wyświetlisz tę swoją zmienną chociaż na razie w postaci tylko dziesiętnej.
A jak interesuje cię postać binarna (jeśli dobrze zgadłem cel powyżej) - to zajrzyj sobie do wnętrza funkcji lcd_int() i zmień parametr w wywoływanej funkcji
itoa() z wartości 10 zdaje się na 2, wtedy zostanie wyświetlona liczba w postaci binarnej. Tylko prawdopodobnie będziesz musiał zwiększyć troszkę bufor na znaki ASCII tych zer i jedynek.
poczytaj sobie w ogóle o funkcji itoa(), jak ona działa, jak dokonuje konwersji itd
i koniecznie ale to koniecznie poczytaj o wskaźnikach i o tym jak są przekazywane w postaci argumentów do funkcji, szczególnie gdy chcemy wyświetlać czy wysyłać gdzieś jakieś teksty. Jest o tym w książce sporo. A jak coś to jeszcze dopytaj. Bo inaczej będziesz się wciąż kręcił w miejscu z takimi problemami.