[elektro] Mit csinalok rosszul? Atmega32 + fotoellenallas
Karoly Kovacs
koka55 at yahoo.com
Fri Mar 19 09:48:50 CET 2010
Mar nem ma kezdtem a bulit (AVR), jo par eve, de most egy
nyavalyas fotoellenallas kifogni latszik rajtam.
A kapcsolas nagyon egyszeru, fotoellenallas a VCC-re, alatta
egy 100kilos ellenallas a GND-re, a kozos lab az ADC0-ra
(PA0).
Multimeterrel megmerve egesz jol viselkedik, vilagosban
200-800mV, sotetben csaknem VCC merheto az Atmega laban.
(Az AVCC is VCC-re van kotve.)
A program ez:
uint16_t ReadADC(uint8_t ch) {
ADMUX = (1<<REFS0) | ch; // azaz az AVCC a ref.voltage
ADCSRA = (1<<ADEN) | (1<<ADSC) | (1<<ADIF) | 6;
while ((ADCSRA & (1<<ADIF))==0);
return ADC;
}
Tudom, az a 6-tal valo VAGY-olas nem egeszem Political Correct :))),
de celszeru. Azaz 64-es az oszto, ez a 11.0592MHz-es orajelnel
kb. 173kHz-es jel, ami megfelel az eloirt 50-200KHz-es tartomanynak.
A jelenseg: ha fejen allok, akkor is mindig vegigszamol, azaz mindig
1023 az eredmeny.
Tud valaki segiteni?
Olyanokat ne irjatok, hogy pl. miert nem igy kerdezem le a konverzio
veget: "while(!(ADCSRA & (1<<ADIF)));", mert mar probaltam. :)))
Magyarul, arra akarok kilyukadni, hogy mar tobbfele programozasi
modszert is kiprobaltam a bitek allitgatasara, stb.
(Ja, es az Atmega jol mukodik, ez egy nagyobb program resze, a
program egyeb reszeit kivaloan tudja, csak ez a nyavalya nem megy.)
Mit neztem el?
Koszi:
Karoly
More information about the Elektro
mailing list