Witam ! Mam problem z pomiarem napiêæ na wej¶ciach PA0-PA7 w ATmega8535. Program banalny - zmierz napiêcie w jednym kanale, wy¶lij ADCH i ADCL przez UARTA i tak 200 razy. Niby podczas symulacji (kompilowane pod WinAVR i symulowane w VMLab dla ATmega16) wszystko jest OK. Natomiast w "¿ywym" uk³adzie (zaprogramowanym ju¿ po kompilacji pod ATmega8535, bo VMLab nie wspiera jeszcze ATmega8535) dostajê zawsze t± sam± warto¶æ, blisk± napiêciu odniesienia (0x3FF). U¿ywam wewnêtrznego ¼ród³a napiêcia odniesienia 2,56V, zewnêtrzny oscylator
12MHz, zasilanie +5V pod³±czone na Avcc, wy. Vref "wisi" - nie jest odsprzêgniête kondensatorem (ale to chyba nie grzech ? :-))). Sprawdza³em na kilku kana³ach i nic... Kod wyglada tak:
unsigned char uc; ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1); //preskaler 1:64 -> ADC clock 188kHz UBRRL=UBRRL_VALUE; sbi(UCSRB,TXEN); // w³±cz nadajnik UART sbi(UCSRB,RXEN); // w³±cz odbionik UART
for (uc=0;uc!=200;uc++) { ADMUX=0xC0; // pod³±cz kana³ 0ADC, Vref=2.56V ADCSRA|=(1<<ADSC); // rozpocznij konwersjê while(!(ADCSRA&0x10)); // i poczekaj na jej zakoñczenie loop_until_bit_is_set(UCSRA,UDRE); // czekaj na koniec nadawania UDR=ADCH; loop_until_bit_is_set(UCSRA,UDRE); // czekaj na koniec nadawania UDR=ADCL; }
Czy port A nale¿y w jaki¶ specjalny sposób konfigurowaæ, gdy jest u¿ywany jako we. analogowe ? Wszelkie uwagi i sugestie mile widziane - równiez na priva: wkwj_et_gazeta.pl. zylex