Hallo,
ich will gerade meinen ADC von meinem ATmega 168 in Betrieb nehmen.
Mein Programm sieht so aus:
Das Ergebnis werte ich mit meinem Emulator aus. Darum fehlt das Auslesen des ADC-Data-Registers.Code:void AdcInit(void) { ADMUX=0; ADMUX|=0x00; // VREF=AREF Pin ADMUX|=0x01; // Kanal AIN1 ADCSRA=0; ADCSRA|=0x04; // Prescaler clk/16REFS 6 92 ADCSRB=0; ADCSRA|=0x80; // Enable } void AdcStart(void) { ADCSRA|=0x40; // Start } u8 AdcReady(void) { if( (ADCSRA&0x40)==0x40 ) { return(1); } else { return(0); } } s16 main(void) { AdcInit(); while( 1 ) { AdcStart(); while( AdcReady()==0 ) { ; } } }
Bei der Hardware habe ich einfach GND(8 ) mit AGND(22) und VCC(7) mit AVCC(20) und AREF(21) verbunden.
Ich hab jetzt mal AIN1(13) auf GND gelegt und erwartet, dass der ADC 0 liefert. Ich bekomme aber immer 0x01D2 (+-2).
Hab ich was übersehen?
Drew
PS: ich hab auch schon mal DIDR0 alle auf 1 gelegt. Das hat aber auch nicht viel gebracht...







Zitieren

Lesezeichen