RTV forum PL | NewsGroups PL

ADC w ATMega8 z LM35 - dlaczego odczyty po resecie są prawidłowe, a później już nie?

ATMega8 i ADC - problem

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - ADC w ATMega8 z LM35 - dlaczego odczyty po resecie są prawidłowe, a później już nie?

T.M.F.
Guest

Wed Sep 22, 2004 8:16 pm   



Mam dziwny problem z ADC - to moje pierwsze zmagania z ADC wiec moze
gdzies popelniam blad.
Otoz mam podlaczony LM35 poprzez rezystor 470 om do ADC0 ATMega8.
ADC inicjalizuje w nastepujacy sposob:

ADCConv:
LDI R16,(1<<REFS1)|(1<<REFS0) ; Internal voltage reference 2,56V
OUT ADMUX,R16
LDI R16,(1<<ADEN)|(1<<ADSC)|(1<<ADIF)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)
;ADC enable with prescaler 128
OUT ADCSRA,R16
ADC1:
SBIS ADCSRA,ADIF ; Wait for conversion end
RJMP ADC1
IN R18,ADCL ; Read low-byte of conversion result
RET

Procedura ADCConv jest wywolywana w petli, ktora oprocz tego nic wiecej
nie robi poza wyswietleniem na 8 diodach stanu rejestru R18 - czyli ADCL
po konwersji.
I tu zaczynaja sie schody...
Otoz pierwszy odczyt po resecie procka wydaje sie byc prawidlowy -
zmierzone np. woltomierzem napiecie na wejsciu ADC0 procka zgadza sie z
odczytem. Ale zmiany tego napiecia przy kolejnych odczytach (zmieniam
temp. podlaczonego LM35) nie powoduja zmiany odczytu z ADC!
Oczywiscie jak dam RESET to znowu mam poprawny odczyt dla danej temp.
Mozecie mnie oswiecic co robie nie tak? Bo chyba odczyt straszego bajtu
ADCH nie jest wymagany ?
Aha, program sie nie zwiesza (reaguje na inne rzeczy), a port C
pozostawiony jest tak jak po resecie bez zadnej inicjalizacji.
Dzieki za pomoc i pozdrawiam,
T.M.F.


--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.

Arek Karas
Guest

Wed Sep 22, 2004 8:36 pm   



Uzytkownik "T.M.F." <tfrancuz@nospam.mp.pl> napisal w wiadomosci
news:vl6922-rna.ln1@www.wizzard.one.pl...
Quote:
Mam dziwny problem z ADC - to moje pierwsze zmagania z ADC wiec moze
gdzies popelniam blad.
Procedura ADCConv jest wywolywana w petli, ktora oprocz tego nic wiecej
nie robi poza wyswietleniem na 8 diodach stanu rejestru R18 - czyli ADCL
po konwersji.
Mozecie mnie oswiecic co robie nie tak? Bo chyba odczyt straszego bajtu
ADCH nie jest wymagany ?
A pdf-a do mega8 czytales ?

Cytat z pdf-a, str 203:
----------
When an ADC conversion is complete, the result is found in these two
registers.
When ADCL is read, the ADC Data Register is not updated until ADCH is read.
Consequently,
if the result is left adjusted and no more than 8-bit precision is required,
it is
sufficient to read ADCH. Otherwise, ADCL must be read first, then ADCH.
----------

Jak widac, starszy rejestr musi byc tez odczytany.

Pozdr
AK

Bartosz Sarama
Guest

Wed Sep 22, 2004 8:39 pm   



T.M.F. napisał(a):
Quote:
Mam dziwny problem z ADC - to moje pierwsze zmagania z ADC wiec moze
gdzies popelniam blad.

Nic nie dzieje się bez przyczyny Smile)


Quote:
Procedura ADCConv jest wywolywana w petli, ktora oprocz tego nic wiecej
nie robi poza wyswietleniem na 8 diodach stanu rejestru R18 - czyli ADCL
po konwersji.
I tu zaczynaja sie schody...

A pisze jak wół na stronie 205 u dołu:
"When ADCL is read, the ADC Data Register is not updated until ADCH is
read."

:DDDD

Jak chcesz czytać tylko 8 bitów to ustaw sobie ADLAR = 1 i czytaj z
ADCH. I po kłopocie.

Powodzenia

--
Pozdrawiam
Bartosz Sarama

Marcin Stanisz
Guest

Wed Sep 22, 2004 8:46 pm   



On Wed, 22 Sep 2004 23:16:17 +0200, T.M.F. wrote:
Quote:
Mozecie mnie oswiecic co robie nie tak? Bo chyba odczyt straszego bajtu
ADCH nie jest wymagany ?

Cytat z manuala procka:

Once ADCL is read, ADC access to Data Registers is blocked. This means
that if ADCL has been read, and a conversion completes before ADCH is
read, neither register is updated and the result from the conversion is
lost. When ADCH is read, ADC access to the ADCH and ADCL Registers is
re-enabled.

Chyba jednak trzeba czytać ADCH. Chyba, że wybierzesz wyrównanie do
lewej, wtedy wystarczy czytać samo ADCH.

Pozdrawiam
--
Marcin Stanisz

"A lie will go round the world before the truth has got its boots on"
Terry Pratchett, "Truth"

T.M.F.
Guest

Wed Sep 22, 2004 8:48 pm   



Quote:
A pdf-a do mega8 czytales ?
Cytat z pdf-a, str 203:
----------
When an ADC conversion is complete, the result is found in these two
registers.
When ADCL is read, the ADC Data Register is not updated until ADCH is read.
Consequently,
if the result is left adjusted and no more than 8-bit precision is required,
it is
sufficient to read ADCH. Otherwise, ADCL must be read first, then ADCH.
----------

Jak widac, starszy rejestr musi byc tez odczytany.


Dzieki wszystkim za tak blyskawiczny odzew Smile Wiedzialem, ze popelnilem
jakis glupi blad.
Jakos przeoczylem fragment: ADC Data Register is not updated until ADCH
is read Smile
Dzieki za pomoc.


--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.

elektroda NewsGroups Forum Index - Elektronika Polska - ADC w ATMega8 z LM35 - dlaczego odczyty po resecie są prawidłowe, a później już nie?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map