Hallo zusammen,
folgendes Problem:
Mein ATMega128 liefert stets bei der AD Wandlung (ADC0 bis ADC7) als
Ergebnis 1023, gleichgültig welche Spannung am Eingang der 8 Pins liegt.
folgendes hab ich schon versucht:
- alle Pins auf Masse gelegt, dann bei jedem ADC-Pin eine AD-Wandlung
unternommen
- das gleiche mit +5 V
- im Register ADMUX hab ich die drei gültigen Kombinationen für
REFS1/REFS0 ausprobiert
- die getesteten MUX-Kombinationen: 0 bis 7 (also ADC0 bis ADC7)
- mit und ohne Beschaltung von AREF
Bei allen Versuchen war stets das Ergebnis im Register ADC 1023.
hier der C-code:
1 | void AD_Conversion (uint8_t mux_dest){
|
2 | ADMUX = mux_dest;
|
3 | ADCSRA = 0xC0;
|
4 | while (!(ADCSRA&(1<<ADIF)))
|
5 | ;
|
6 | adc_result = ADC; //Inhalt von ADC in globale Variable schreiben
|
7 | ADCSRA |= (1<<ADIF);
|
8 | }
|
meine Hardwareconfig:
- ATMega128, betrieben an +5 V
- AVCC ist mit 100nF an GND und über 10µH an VCC angeschlossen
- AREF: Offen, über 22nF auf GND oder an +5 V (habe alle drei Varianten
getestet)
- AGND ist mit GND verbunden
Ich lasse mir den Wert der globalen Variable "adc_result" auf einem LCD
anzeigen. Die Anzeige ist offenbar nicht das Problem, wenn ich in
adc_result einen beliebigen Wert statt der Zuweisung mit ADC
hineinschreibe, wird auch dieser Wert angezeigt. Sobald aber die
Zuweisung mit ADC stattfindet, steht immer 1023 drin.
Vielleicht kann mir jemand weiterhelfen.
Vielen Dank!