Witam
Mam problem z konwersją wartości 8-bitowego rejestru TCNT0 i wyświetleniem jego wartości na LCD. TNCT0 to rejestr licznika T0, który w mojej konfiguracji zlicza impulsu wejściowe na T0. 8-bitwa zmienna po konwersji wyświetlana jest jako wartości większe niż 255. Kod który to realizuje to:
na początku deklaracje zmiennych:
W obsłudze przerwania generowanego przez licznik T1 odczytywana wartość TCNT0 i wyświetlana na LCD:
Jako że TCNT0 jest wartością która może często ulegać zmianie, celowo przypisuję go do zmiennej licznikT0 opatrzonej modyfikatorem volatile.
Wartości wyświetlane na LCD w pewnym momencie przekraczają 255, to jest niemożliwe jeżeli licznikT0 może zawierać tylko liczbę 8-bitową. Podstawiałem też w linii itoa(licznikT0, wynik, 10) zamiast licznikT0 bezpośrednio TCNT0 ale bez zmian.
Skąd się coś takiego bierze ?
Mam problem z konwersją wartości 8-bitowego rejestru TCNT0 i wyświetleniem jego wartości na LCD. TNCT0 to rejestr licznika T0, który w mojej konfiguracji zlicza impulsu wejściowe na T0. 8-bitwa zmienna po konwersji wyświetlana jest jako wartości większe niż 255. Kod który to realizuje to:
na początku deklaracje zmiennych:
Kod: C / C++
W obsłudze przerwania generowanego przez licznik T1 odczytywana wartość TCNT0 i wyświetlana na LCD:
Kod: C / C++
Jako że TCNT0 jest wartością która może często ulegać zmianie, celowo przypisuję go do zmiennej licznikT0 opatrzonej modyfikatorem volatile.
Wartości wyświetlane na LCD w pewnym momencie przekraczają 255, to jest niemożliwe jeżeli licznikT0 może zawierać tylko liczbę 8-bitową. Podstawiałem też w linii itoa(licznikT0, wynik, 10) zamiast licznikT0 bezpośrednio TCNT0 ale bez zmian.
Skąd się coś takiego bierze ?