Witam!
Mam następujący problem z przetwarzaniem A/C: mikrokontroler atmega32, przetwornik ustawiony na wewnętrzne źródło napięcia odniesienia 2,56V, pomiar z nóżki ADC1, preskaler 128, wyzwalanie jednokrotne (w trybie uśpienia - rozkaz sleep), wynik przesunięty o 6 bitów (odczytywane najstarsze 8 bitów z ADCH). Program pisany w asemblerze, zasada działania programu taka:
petla:
ldi R16, 200
ldi R17, 2
rcall czekaj_ms (odczekanie 2x200ms = 400ms)
sleep (uspienie na czas konwersji ADC)
mov R16, ADCH (skopiowanie wyniku do R16)
rcall wysw_lcd (pokazanie wyniku na LCD)
rjmp petla
czyli program co 400ms mierzy napiecie i podaje wynik na LCD.
Problem jest nastepujacy - napięcie mierzone ustawiłem dokładnie na 1V (multimetr na zakresie 2000mV pokazuje dokładnie 1000mV - napięcie jest stałe, nie "pływa"), a na LCD dostaję wyniki: 99, 98, 110, 105, 98, 118, 101... itd. Ciągle "pływają" wyniki konwersji ADC... co z tym fantem zrobić? Chciałbym, aby pomiar był stały, zeby dawał mi powiedzmy zawsze wynik 100 czy jaki kolwiek inny (np 90), ale jesli jest 1V to zeby na LCD byla stala wartość a nie skakanie w przedziale od 98 do 120... Co może być przyczyną? Proszę o poradę..
Pozdrawiam!
Artur
Poprawiłem tytuł:
https://www.elektroda.pl/rtvforum/topic1015361.html
[c_p]
Mam następujący problem z przetwarzaniem A/C: mikrokontroler atmega32, przetwornik ustawiony na wewnętrzne źródło napięcia odniesienia 2,56V, pomiar z nóżki ADC1, preskaler 128, wyzwalanie jednokrotne (w trybie uśpienia - rozkaz sleep), wynik przesunięty o 6 bitów (odczytywane najstarsze 8 bitów z ADCH). Program pisany w asemblerze, zasada działania programu taka:
petla:
ldi R16, 200
ldi R17, 2
rcall czekaj_ms (odczekanie 2x200ms = 400ms)
sleep (uspienie na czas konwersji ADC)
mov R16, ADCH (skopiowanie wyniku do R16)
rcall wysw_lcd (pokazanie wyniku na LCD)
rjmp petla
czyli program co 400ms mierzy napiecie i podaje wynik na LCD.
Problem jest nastepujacy - napięcie mierzone ustawiłem dokładnie na 1V (multimetr na zakresie 2000mV pokazuje dokładnie 1000mV - napięcie jest stałe, nie "pływa"), a na LCD dostaję wyniki: 99, 98, 110, 105, 98, 118, 101... itd. Ciągle "pływają" wyniki konwersji ADC... co z tym fantem zrobić? Chciałbym, aby pomiar był stały, zeby dawał mi powiedzmy zawsze wynik 100 czy jaki kolwiek inny (np 90), ale jesli jest 1V to zeby na LCD byla stala wartość a nie skakanie w przedziale od 98 do 120... Co może być przyczyną? Proszę o poradę..
Pozdrawiam!
Artur
Poprawiłem tytuł:
https://www.elektroda.pl/rtvforum/topic1015361.html
[c_p]
