 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
ciko Član

Pridružen-a: Čet 27 Mar 2008 11:41 Prispevkov: 126 Aktiv.: 0.60 Kraj: Novo mesto
|
Objavljeno: Sob Maj 22, 2010 7:00 pm Naslov sporočila: Atmega32 in AD pretvornik |
|
|
Pozdravljeni,
težave mi dela AD pretvornik na Atmega32. Tej težavi bi jaz rekel fatamorgana.
Želim uporabljati vseh 10 bitov AD pretvornika, vendar mi nikakor ne uspe.
Ni problema branje iz enega registra ADCL oz ADCH, tako leva kot desna poravnava. Deluje super. Tako dobim pravo 8 bitno vrednost.
Ko pa želim dobi 10 bitno vrednost, pa AD pretvornik neha delovati. Vedno izpiše isto vrednost kot jo ima pri prvi pretvorbi.
Branje sem poizkusil:
Koda: |
unsigned int tmp1;
ADMUX=adc_input | (0x20 & 0xff);
_delay_us(100);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
tmp1 = ADCW;
tmp1 &= 0x3FF;
|
oziroma
Koda: |
unsigned int tmp1;
ADMUX=adc_input | (0x20 & 0xff);
_delay_us(100);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
tmp1 = (((unsigned int)ADCH)<<8)&0xFF00 + ((unsigned int)ADCL) & 0xFF;
|
Vedno isti problem, ne glede na katerem ADju poizkusim.
Ali je imel kdo podobne težave pri branju 10 bitne vrednosti?
Uporabljam AVR Studio in GCC AVR compiler.
Hvala za odgovore,
Lp,
Peter |
|
Nazaj na vrh |
|
 |
tozir Član

Pridružen-a: Pon 17 Mar 2008 19:10 Prispevkov: 187 Aktiv.: 0.89 Kraj: Celje
|
Objavljeno: Sob Maj 22, 2010 7:34 pm Naslov sporočila: |
|
|
LP
Se opravičujem ker sem skoraj sunil temo, ampak se moje vprašanje tudi tiče Atmege32 in AD pretvornika.
Namreč izdelal se tipkovnico po tejle strani:
http://www.avr-asm-tutorial.net/avr_en/keypad/keyboard.html#io
Težava je bila v tem da so upori zelo mali in prebrane vrednosti zelo varirajo z dejanskim pritiskom na tipko. Zato sem se odločil spremeniti vrednosti za faktor 10. Sedaj se pojavlja težava branja, saj zadnje štiri tipke enako bere (1023 pri 10 bitnem načinu). Je problem v tem da so upori preveliki za notranjo upornost AD vhoda? Namreč v datasheetu piše da mora biti izhodna impedanca vira ki ga merimo manjša ali enaka 10k . Je možno to rešiti z preprostim napetostnim sledilnikom? _________________ http://www.rielektronika.comule.com/ |
|
Nazaj na vrh |
|
 |
ciko Član

Pridružen-a: Čet 27 Mar 2008 11:41 Prispevkov: 126 Aktiv.: 0.60 Kraj: Novo mesto
|
Objavljeno: Tor Maj 25, 2010 8:59 pm Naslov sporočila: |
|
|
Tale izsek iz datasheet-a pove vse:
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, to ensure that the content of the Data
Registers belongs to the same conversion. 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.
Lp,
Peter |
|
Nazaj na vrh |
|
 |
tozir Član

Pridružen-a: Pon 17 Mar 2008 19:10 Prispevkov: 187 Aktiv.: 0.89 Kraj: Celje
|
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 494 dni
Powered by phpBB © 2001, 2005 phpBB Group
|