Witam
Walczę z przetwornikiem ADC w atmedze8.
Napisałem prosty kod w asemblerze:
Do wejścia ADC5 mam podpięty środek potencjometra 47K przez rezystor 10K.
Rezystor jest podpięty do 5V i masy.
Wejście AREF jest podłączone do 5V.
Zasilanie przetworników jest podłączone.
Rejestr admux:
bity 7 i 6 są ustawione na 00 - napięcie odniesienia na AREF
bit 5 ustawiony na 0 - przesuń wynik do prawej (ADCL)
bit 4 - bez znaczenia
bity 3..0 ustawione na 0101 - pomiar z wejścia ADC5
Rejestr adcsra:
11000011;
bit 7 ustawiony na 1 - włączony przetwornik
bit 6 ustawiony na 1 - rozpocznij pierwszy pomiar
bit 5 ustawiony na 0 - praca w trybie "pomiar na żądanie"
bit 4 ustawiony na 0 - flaga przerwania wyłączona
bit 3 ustawiony na 0 - przerwania wyłączone
bity 2...0 ustawione na 011 - dzieli f/8
Taktowanie procesora z wewnętrznego oscylatora 1mhz.
Częstotliwośc powinna sie zawierać w granicach 50-200khz - 1000000/8 = 125khz
Program odczytuje dane z ADCL i wysyła je na lcd jako kod znaku.
Algorytm wysyłania znaku na lcd jest poprawny.
Rozumiem, że w tym wydaniu na lcd powinny się pojawiać "krzaki" które zmieniają się po zmianie pozycji potencjometra.
Problem w tym, że na lcd wyświetla się cały czas ten sam znak.
Proszę o pomoc
Walczę z przetwornikiem ADC w atmedze8.
Napisałem prosty kod w asemblerze:
rcall initlcd
rcall ustaw_ADC
lop:
sbi adcsra,6
czekaj_na_ADC:
sbic adcsra,6
rjmp czekaj_na_ADC
in r21,adcl
rcall LCDznak
rjmp lop
ustaw_ADC:
ldi r25,0b00000101
out admux,r25; kanał pomiaru 4
ldi r25,0b11000011;
out adcsra,r25; f/8
ret
Do wejścia ADC5 mam podpięty środek potencjometra 47K przez rezystor 10K.
Rezystor jest podpięty do 5V i masy.
Wejście AREF jest podłączone do 5V.
Zasilanie przetworników jest podłączone.
Rejestr admux:
bity 7 i 6 są ustawione na 00 - napięcie odniesienia na AREF
bit 5 ustawiony na 0 - przesuń wynik do prawej (ADCL)
bit 4 - bez znaczenia
bity 3..0 ustawione na 0101 - pomiar z wejścia ADC5
Rejestr adcsra:
11000011;
bit 7 ustawiony na 1 - włączony przetwornik
bit 6 ustawiony na 1 - rozpocznij pierwszy pomiar
bit 5 ustawiony na 0 - praca w trybie "pomiar na żądanie"
bit 4 ustawiony na 0 - flaga przerwania wyłączona
bit 3 ustawiony na 0 - przerwania wyłączone
bity 2...0 ustawione na 011 - dzieli f/8
Taktowanie procesora z wewnętrznego oscylatora 1mhz.
Częstotliwośc powinna sie zawierać w granicach 50-200khz - 1000000/8 = 125khz
Program odczytuje dane z ADCL i wysyła je na lcd jako kod znaku.
Algorytm wysyłania znaku na lcd jest poprawny.
Rozumiem, że w tym wydaniu na lcd powinny się pojawiać "krzaki" które zmieniają się po zmianie pozycji potencjometra.
Problem w tym, że na lcd wyświetla się cały czas ten sam znak.
Proszę o pomoc