Destrono
25.05.2010, 00:08
Hallo,
ich versuche schon seit 2 Tagen den Adc beim Atmega 16 in Gang zu bekommen. Leider erfolglos. Beim Atmega8 hatte ich keine Probleme.
Könnte mal jemand auf meinen Code schauen und mir sagen, ob das so ok ist? Der Adc soll in der free running Variante laufen.
void adc_init (void)
{
ADCSRA = (1<<ADEN) |(1<<ADSC) | (1<<ADATE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); // prescaler = 128
ADMUX = (1<<REFS1) | (1<<REFS0) | (1<<MUX0); // interne Referenzspannung
ADMUX &= ~(1<<ADLAR);
SFIOR &= ~((1<<ADTS2) | (1<<ADTS1) | (1<<ADTS0));
messwert = ADCL;
messwert |= (ADCH<<8 );
messwert = 0;
}
"messwert" ist einer Headerdatei folgendermaßen deklariert:
uint16_t messwert; // Messwert ADC
Wäre toll, wenn ihr mir weiter helfen könntet.
MfG
Destrono
ich versuche schon seit 2 Tagen den Adc beim Atmega 16 in Gang zu bekommen. Leider erfolglos. Beim Atmega8 hatte ich keine Probleme.
Könnte mal jemand auf meinen Code schauen und mir sagen, ob das so ok ist? Der Adc soll in der free running Variante laufen.
void adc_init (void)
{
ADCSRA = (1<<ADEN) |(1<<ADSC) | (1<<ADATE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); // prescaler = 128
ADMUX = (1<<REFS1) | (1<<REFS0) | (1<<MUX0); // interne Referenzspannung
ADMUX &= ~(1<<ADLAR);
SFIOR &= ~((1<<ADTS2) | (1<<ADTS1) | (1<<ADTS0));
messwert = ADCL;
messwert |= (ADCH<<8 );
messwert = 0;
}
"messwert" ist einer Headerdatei folgendermaßen deklariert:
uint16_t messwert; // Messwert ADC
Wäre toll, wenn ihr mir weiter helfen könntet.
MfG
Destrono