Tak eliminacja wpływu niestałości długoterminowej (dryftu) to zaleta takiego pomiaru, podobnie w metodzie mostkowej eliminuje się wpływ zmian napięcia zasilania na wynik. Czytanie pojedynczych rejestrów jest możliwe, lepiej jednak od razu czytać cały rejestr. Kompilator zadba o odpowiednią kolejność i zoptymalizuje kod. Można porównać jak to wygląda w asemblerze (w plikach .lst lub .lss) i jak karkołomny kod otrzymujemy przy czytaniu osobno z rejestrów.
Funkcja może tak wyglądać:
Zaloguj się, aby zobaczyć kod
Uwaga!
Taki zapis :
ADMUX = 0xC0 | channel
ma sens jedynie gdy w inicjacji ADC wystąpi linia:
ADMUX = (1<<REFS0) | (1<<REFS1);
To dość ogólna postać (oczywiście poprzednio trzeba skonfigurować i uruchomić A/D). Zmienna channel - to numer kanału, z którego chcemy czytać, wynik jest średnią 8 kolejnych pomiarów w trybie pojedynczego wyzwalania. Ogólnie ilość pomiarów w serii powinna stanowić potęgę 2 np. 2,4,8,16 ... bo dzielenie przez ilość próbek realizujemy prosto przez przesunięcie bitowe (pewnie powtarzam się po Dondu, ale nie czytałem jego strony).
Jeżeli będziesz liczył tablicę, to kolumnę z zawartością A/D obliczaj mnożąc kolumnę z wartością k (Rt/(Rt + R0)) przez 1023,5 i zaokrąglaj odpowiednio formatując. To 0,5 bitowe przesunięcie umieści prawidłowo próg w "środku jednostki".
0