Witam, zacząłem zabawę z ADC i niestety nie mogę uruchomić. Przeczytałem wiele tematów, datasheet, próbowałem wielu różnych ustawień i nie mogę znaleźć co jest nie tak. Wejście do porównania jest na pinie ADC0, AREF połączone z VCC, a dioda na PB0. Proszę o pomoc
Z którego kanału korzystasz? Zwróć uwagę że w Twoim kodzie nigdzie nie podajesz informacji prockowi gdzie ma zmierzyć napięcie.
Przed konwersją musisz w rejestr ADMUX wpisać numer kanału ADC.
Zamieniłem na while((ADCSRA & (1<<ADSC))==0) i po wgraniu programu na ułamek sekundy dioda zapala się i zgasza nawet dla skrajnych wartości, potem nie ma żadnej reakcji.
Zwróć uwagę że w Twoim kodzie nigdzie nie podajesz informacji prockowi gdzie ma zmierzyć napięcie.
Przed konwersją musisz w rejestr ADMUX wpisać numer kanału ADC.
Robi to tą linijką programu:
Kod: C / C++
Zaloguj się, aby zobaczyć kod
ustawiając kanał ADC0, dlatego rozumowanie:
jonathanT napisał:
Korzystam z ADC0, domyślnie ustawione są na 0 czyli powinno się zgadzać.
że ustawienie w tym wypadku jest domyślne jest błędne, choć kanał autor swoim programem ustawia prawidłowy.
Fredy napisał:
SPróbuj zmienić tą pętlę:
while(ADCSRA & (1<<ADSC))
na
while(ADCSRA & (1<<ADSC)==0)
W jakim celu? Zastosowane przez autora sprawdzanie flagi ADSC jest prawidłowe:
ATmega8 datasheet napisał:
ADSC will read as one as long as a conversion is in progress. When the conversion is complete, it returns to zero.