Witam!
Postanowiłem zrobić miernik temperatury na lm35.
Program napisany dla ATmega328P, i wszystko działa dobrze za wyjątkiem tego, że nie mogę ustawić dobrego napięcia odniesienia, czyli 1,1V, aby mieć większą rozdzielczość.

Jak widać na rysunku z noty katalogowej, aby uzyskać 1,1V na AREF trzeba ustawić oba te rejestry.
Robiąc to uzyskuję na AREF równe AVCC (sprawdzałem i jestem pewien na 100%, że na pcb nie ma połączenia między tym pinami)
Patrząc na wszystkie możliwości wychodzi na to, że rejestr nie reaguje na ustawianie REFS1, bo czy jest ustawiony czy nie, to mam tylko 2 możliwości :
1 i 3 linijka - wyłączyć napięcie odniesienia
2 i 4 linijka - włączyć avcc na aref
main:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
d_led.h :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
d_led.c :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Przy tym kodzie jak widać mam ustawione oba rejestry a mimi to na aref mam 5v czyli avcc.
Wie ktoś o co tu chodzi?
------------------------ [ Dodano po: 15 minutach ]Na razie mam dokładność co 0,5*C.
A z tym, że wartość adc wzrasta co 0,48828125mV poradziłem sobie tak, że gdy adc większe od 50 to od adc zabieram 1 i dopiero mnożę przez 5.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
jest dokładnie ale do 50*C bo potem znowu podskoczy adc o jeden za dużo, ale mniejsza z tym

I tak taka dokładność mnie nie zadowala, bo co 0,5*C przez to AREF...