[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