Hey Leute ich bin hier fast am Verzweifeln, weiß absolut nicht wieso
mein code nicht funktioniert.
Also ich hab ein ATmega168P und folgendes geschrieben:
Mein Eingang ist PC2 (ADC2)
1 | //AD-Wandler konfigurieren
|
2 |
|
3 | DDRC &= ~(1<<PC2); // Analogpin als EINGANG
|
4 |
|
5 | ADMUX |= ((1<<MUX1) | (1<<REFS0) ); // Eingang wählen+AvCC
|
6 | ADCSRA |= ((1<<ADPS2) | (1<<ADPS1) | (1<<ADEN)); // ADC Prescaler
|
7 |
|
8 | // AD-Wandlung aufruf
|
9 | uint16_t ADC_Read(void)
|
10 | {
|
11 | uint16_t temp_ADC=0;
|
12 | ADCSRA |= (1<<ADSC); // START_ADC
|
13 | while ((ADCSRA & (1<<ADSC))) { // Messung abwarten
|
14 | }
|
15 |
|
16 |
|
17 | temp_ADC = ADCL;
|
18 | temp_ADC |= (ADCH<<8);
|
19 |
|
20 | return ADCW; // hier auch return temp_ADC versucht
|
21 | }
|
so und ich bekomme immer 1023 als Rückgabewert, ob nun 2,5V anliegt oder
0V (GND)
mein VCC ist 5V.
vilt kann mir ja jmd helfen, wäre cool danke:)