M
Martin Laabs
Guest
Hallo,
ich möchte von einem ADC Eingang meines ATMega128
lesen.
Ich habe ein ganz kleines Progamm geschrieben welches
die Werte alle paar Zentelsekunden via "Single Conversion mode".
Leider kann ich nur das erste mal einen Wert auslesen.
Die folgenden Werte sind immer gleich dem ersten.
Hat jemand eine Idee woran es liegen kann?
Hier ist mein (etwas gekürzter) Code:
---------------:<------------------
void init(void)
{
lcd_init(LCD_DISP_ON_CURSOR);
lcd_clrscr();
ADMUX=BV(REFS1)|BV(REFS0)|0x6; //internal bandgap;channel 6
ADCSRA=BV(ADEN); //enable adc
}
int main(void)
{
char buffer[33];
unsigned int result;
init();
while(1){
sbi(ADCSRA,ADSC); //start sm adc
loop_until_bit_is_clear( ADCSRA, ADSC );
result=ADCL|(ADCH<<8);
itoa(ADCL,buffer,10);
_delay_loop_2(0xffff);
lcd_clrscr();
lcd_puts("ADC Wert: ");
lcd_puts(buffer);
}
}
-----------------:<-----------------------------
Danke
Martin Laabs
ich möchte von einem ADC Eingang meines ATMega128
lesen.
Ich habe ein ganz kleines Progamm geschrieben welches
die Werte alle paar Zentelsekunden via "Single Conversion mode".
Leider kann ich nur das erste mal einen Wert auslesen.
Die folgenden Werte sind immer gleich dem ersten.
Hat jemand eine Idee woran es liegen kann?
Hier ist mein (etwas gekürzter) Code:
---------------:<------------------
void init(void)
{
lcd_init(LCD_DISP_ON_CURSOR);
lcd_clrscr();
ADMUX=BV(REFS1)|BV(REFS0)|0x6; //internal bandgap;channel 6
ADCSRA=BV(ADEN); //enable adc
}
int main(void)
{
char buffer[33];
unsigned int result;
init();
while(1){
sbi(ADCSRA,ADSC); //start sm adc
loop_until_bit_is_clear( ADCSRA, ADSC );
result=ADCL|(ADCH<<8);
itoa(ADCL,buffer,10);
_delay_loop_2(0xffff);
lcd_clrscr();
lcd_puts("ADC Wert: ");
lcd_puts(buffer);
}
}
-----------------:<-----------------------------
Danke
Martin Laabs