Hallo Herkulase,
danke für Deine Antwort.
Ups, Du hast Recht, ich muss auf 1 abfragen. Ich habs jetzt mal umgeschrieben. Es ist bestimmt besser durchschaubar, wenn man die Bit-Namen verwendet.
Code:
void AdcInit(void)
{
ADMUX=0;
ADMUX|=0x00; // VREF=AREF Pin
ADMUX|=0x01; // Kanal AIN1
ADCSRA=0;
ADCSRA|=(1<<ADPS2); // Prescaler clk/16REFS 6 92
ADCSRB=0;
ADCSRA|=(1<<ADEN); // Enable
}
void AdcStart(void)
{
ADCSRA|=(1<<ADSC); // Start
}
u8 AdcReady(void)
{
if( (ADCSRA&(1<<ADSC))==(1<<ADSC) )
{ return(1); }
else
{ return(0); }
}
s16 main(void)
{
AdcInit();
while( 1 )
{
AdcStart();
while( AdcReady()==1 )
{ ; }
}
}
Leider ändert das nichts am Ergebnis. Ich bekomme immer noch 0x01D2. Da ich's im Emulator laufen habe sehe ich , das die Wandlung ausgeführt wurde ADIF ist gesetzt und der ADC-Wert ändert sich.
Kann es sein, dass mit meinem Hardware-Aufbau was nicht stimmt? Oder ist am Ende mien Controller defekt?
Drew
Lesezeichen