hier meine lösung bei nem ATmega16 auf dem evaluation-board plus addon-board und RFM12 von pollin

zu der ich aber noch fragen hab ^^

Code:
#include <avr/io.h>
#include <avr/iom16.h>
#include <inttypes.h>

uint16_t ReadChannel(uint8_t mux)
{
 uint8_t i;
 uint16_t result;
 ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS0); 	// Frequenzvorteiler
 												// setzen auf 8 (1) und ADC aktivieren (1)
 ADMUX = mux; 									// Kanal waehlen
 ADMUX |= (1<<REFS1) | (1<<REFS0); 				// interne Referenzspannung nutzen
 
 /* nach Aktivieren des ADC wird ein "Dummy-Readout" empfohlen, man liest
 also einen Wert und verwirft diesen, um den ADC "warmlaufen zu lassen" */
 ADCSRA |= (1<<ADSC); // eine ADC-Wandlung
 while ( ADCSRA & (1<<ADSC) ) 
 {
  ; 			// auf Abschluss der Konvertierung warten
 }
 result = ADCW; 	// ADCW muss einmal gelesen werden,
 					// sonst wird Ergebnis der nächsten Wandlung
 					// nicht übernommen.
 
 /* Eigentliche Messung - Mittelwert aus 4 aufeinanderfolgenden Wandlungen */
 result = 0;
 for( i=0; i<4; i++ ) 
 {
  ADCSRA |= (1<<ADSC); // eine Wandlung "single conversion"
  while ( ADCSRA & (1<<ADSC) ) 
  {
   ; // auf Abschluss der Konvertierung warten
  }
  result += ADCW; // Wandlungsergebnisse aufaddieren
 }
 ADCSRA &= ~(1<<ADEN); // ADC deaktivieren (2)
 result /= 4; // Summe durch vier teilen = arithm. Mittelwert
 return result;
}

void ShowByte(uint16_t wert)
{
 PORTC = wert;
}

int main (void)
{
 DDRC = 0;
 PORTC = 0;
 uint16_t adcval = 0;
 
 while(1)
 {
  adcval = ReadChannel(0); /* MUX-Bits auf 0b0000 -> Channel 0 */
  ShowByte(adcval);
 }
 return 0;
}

meine frage dazu

also am portC hab ich 8 leds dran und so wie ich das verstehe müssten die ja dann in der richtigen bitkombination leuchten wie der wert vom ADC zurückkommt oder?

spricht: (X=aus; O=an)
XXXX XXXX = 0
XXXX XXXO = 1
XXXX XXOX = 2
XXXX XXOO = 3

XXXX XOXX = 4
....
....
....
OOOO OXOO = 251

OOOO OOXX = 252
OOOO OOXO = 253
OOOO OOOX = 254
OOOO OOOO = 255

bei mir siehts aber komischerweise so aus das LED 3, 5 und 6 immer leuchten und wenn ich von 0V bis 5V hochdrehe dann flackern LED 7 und 8 rasend schnell abwechselnd auf und LED 1 und 2 zählen 4 mal durch

also 4mal
XX
XO
OX
OO

kann es sein das ich meinen ADC teiler nicht auf 8bit sondern auf 4 bits beschränkt habe? und kann mir einer erklären warum LED 3, 5 und 6 dauerhaft an sind?

danke

Grandalf