Gast
#1391648
Hallo,
ich habe ein Programm, in dem ich eine Spannung am AD-Wandeler des
Atmega168 messen möchte. Bis jetzt funktioniert das Programm auch sehr
gut. Ich möchte aber einen anderen Pin nutzen, um die Messung
durchzuführen, dabei gibs aber Probleme. Momentan nutze ich ADC0 (PC0),
würde aber gerne an ADC6 oder 7 messen. Das Programm funktioniert nur an
ADC0, an keinem anderen ADC-Pin.
Initialisierung:
//externe Vref nutzen
ADMUX = 0; //kann eigentlich entfallen, da Initial 0x00
//externe Vref -> REFS1=0, REFS0=0
//A/D-Wandler: Enable, Vorteiler auf 128
ADCSRA |= ( (1<<ADEN) | (1<<ADPS2) |
(1<<ADPS1) | (1<<ADPS0) );
//Dummy-Wandlung
ADCSRA |= (1<<ADSC);
while (ADCSRA & (1<<ADSC) );
adc_val_1 = ADC;
Unterprogramm aus Tutorial:
//Wert von A/D-Wandler lesen
//AD-Pin wird übergeben, AD-Wert zurück
uint16_t ReadADCChannel(uint8_t channel){
uint16_t result;
//Kanal wählen
ADMUX = channel;
//Messung
ADCSRA |= (1<<ADSC);
while (ADCSRA & (1<<ADSC) );
result = ADC;
return result;
}
Aufruf im Hauptprogramm:
adc_val_1 = ReadADCChannel(0);
Der Aufruf mit 0 funktioniert, schließe ich meine Messleitung an einen
anderen Pin an und lasse an diesem messen, funktioniert mein Programm
nicht. Kann mir jemand helfen?
Gruß Paul