Noch ne Frage: welche Plaltine (Schaltung?) benutzt Du und welchen ADC-Pinn genau? Atmega328p als SMD? Der hat ja ADC6 und ADC7 verfügbar die beim PDIP NICHT zur Verfügung stehen.

.. ich habe jetzt mal einen externen widerstand angeschlossen und jetzt sehe ich auch die 1023 ..
Wie wärs, wenn Du jetzt als externes Signal für den ADC-Pinn einen Spannunsteiler baust - so etwa 50 % Vcc, danach nochn Test mit rund 30% Vcc und Dir danach den ADC-Wert ausgeben lässt. Das sollte sinnvolle Ergebnisse bringen - wenn "alles" korrekt läuft.

Anm.: ich hatte schon Controller so krank bekommen, dass die liefen - aber nicht mehr zu flashen waren, dass man sie flashen konnte, aber EINZELNE Pinne tatens nicht bzw. nicht korrekt usw usf. Die Tests könnten so einen Fehler eingrenzen oder aufdecken.

Weiter mit nem Test von eben.
Ich benutzte hier als IDE AVR Studio 4.18 Build 700. Aktuell ein Test mit (m)einer Servotester-Software, in C, für nanoclone 328p/20 MHz (!!) mit Poti 10K auf ADC7 zum Variieren der Servoposition. Initialisierung - in C!
Code:
// ============================================================================= =
// ===  Initialisierung fuer ADC/mega328/ADC7   MIT Interrupt free running
// ===    ADC7/PC7 auf 10 Bit,  fertige Wandlung ###>>> löst Interrupt aus
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  void ADC0_i10free (void)      // Init m328/ADC7, 10 Bit, free runn. Interrupt
 {                            //          Kanal 0 <=> Temperatur RN VNRN-VN2
// - - - - - - - - - - - - - - -                        Datenblatt 8271C-AVR-08/10
  ADMUX        |=  (1<<MUX2)|(1<<MUX1)|(1<<MUX0);       //                     264
  ADMUX        |=  (1<<REFS0);  // Referenzspannung ist AVcc                 S 263
                                //
  ADCSRA       |=  (1<<ADEN);   // ADC Enable                                  264
  ADCSRA       |=  (1<<ADSC);   // starte gleich die erste Wandlung            264
  ADCSRA       |=  (1<<ADIE);   // ADC Interrupt Enable                        265
  ADCSRA       |=  (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);    // Prescal clock/128   265
  ADCSRA       |=  (1<<ADATE);  // Auto Triggering Enable                      265
                // es wird bei clock 20 Mhz mit ca. 80 µs getriggert
                // genauer: ca 12 Zyklen in 1 ms <=> 1200 Hz
  In_adc        =  0;           // Durchlaufzähler ADC zum Kanalumschalten
 }              // Ende von void ADC_in_10free(void)
// ============================================================================= =
Und dabei war es beim Test von eben unerheblich, ob ich den Pinn bei Programmbeginn auf 1/1 (DDRC7 = 1 / PORTC7 = 1 <=> Ausgang mit Pullup) oder 0/0 (DDRC7 = 0/ PORTC7 = 0 <=> Eingang ohne Pullup) oder 0/1 (DDRC7 = 0/ PORTC1 = 0 <=> Eingang mit Pullup) stellle - das LCD zeigt stets die richtigen ADC-Werte an und der Servo läuft unabhängig von der Pininitialisierung immer sinngemäss richtig.

......Bild hier