joon pisze:2. dzięki ADCW mamy wynik w jednej zmiennej i nie musimy stosować osobnych: ADCH oraz ADHL oraz ich "zespajania"

Odczytanie tylko górnego bajtu z 16-bitowego rejestru ADC, ma sens w dwóch przypadkach:
1. gdy potrzebujemy tylko dwóch najbardziej znaczących bitów
2. gdy potrzebujemy 8 najbardziej znaczących bitów pod warunkiem, że włączymy wyrównywanie rejestru ADC do lewej.
Patrz rysunek poniżej.
W pozostałych wypadkach odczytujemy cały rejestr ADC i nie trzeba niczego składać - kompilator sam wie co ma zrobić, by odczytać prawidłowo pomiar z ADC do zmiennej typu int.
@Dawid2379
Twój problem polega właśnie na tym o czym napisałem powyżej.
Czyli odczytujesz tylko najstarsze dwa bity pomiaru, a nie masz ustawionego wyrównywania do lewej (bit ADLAR).
Aby Twój program działał prawidłowo powinieneś odczytywać cały ADC czyli:
ponieważ Twoje zmienne są typu int i masz do nich ustawione warunki if().
Miałeś tak w poprzednim programie - dlaczego zmieniłeś?
Uporządkujmy co właściwie robisz. Bo ja się gubię na jakim właściwie mikrokontrolerze, który program uruchamiasz.
Podaj komplet danych:
- schemat,
- program
- objawy,
- fusebity.
----------------
joon pisze:Jeżeli masz więcej takich pytań zapraszam na forum.atnel.pl - sam tam sporo "przesiaduję" i uwierz mi że żadne pytanie, nawet błache nie leci do kosza- bo kosza tam nie ma
Czyżby? Temat kolegi Dawid2379 który wczoraj tam go napisał został bezpowrotnie skasowany (temat o numerze 2844). Poza tym dlaczego odbierasz Elportalowi użytkowników?