Hallo, ich habe mir die Codeschnipsel von muraad runtergeladen und aalles funktioniert auhc wunderbar mit einem Eingang, da ich aber 2 Sensoren (CNY70) habe möchte ich ständig die Werte von diesen in 2 unterschiedlichen integern speichern.

Mein jetziger Code
Code:
int main(void) // Main-Funktion, d.h. dass was der Roboter macht!
{
init();
warte(2000);

unsigned int l; // ADC-Wert für linken Sensor
unsigned int r; // ADC-Wert für rechten Sensor

   ADCinit;
   ADCchannel_init;
   //ADCfree;
   ADCvintern;
   //ADCinterrupt_on;
   ADCprescaler_16;

while(1==1)
{

   ADCchannel_1;
   ADCstart;
   l=getadc();

   ADCchannel_reset;

   ADCchannel_2;
   ADCstart;
   r=getadc();


if (l>0 && l<8) // wenn schwarzer Untergrund
L_Motor_v();

if (l>=8) // wenn weißer Untergrund
L_Motor_r();


if (r>0 && r<8) // wenn schwarzer Untergrund
R_Motor_v();

if (r>=8) // wenn weißer Untergrund
R_Motor_r();


warte(10);
}


return 0;
}
Jedoch funktioniert dieser nicht.

Bitte um schnelle Hilfe.

PS: Hier noch die Defines aus dem Codeschnipsel:
Code:
/* Analog/Digital converting */
#define ADCchannel_init   DDRA=0x00                 // ADC Port als Eingang deklarieren
#define ADCinit           ADCSRA|=_BV(ADEN)         // Teilt dem Board mit, dass der jeweilige Port für ADC verwendet wird
#define ADCdisable        ADCSRA &=~_BV(ADEN)       // mach das vorherige wieder rückgängig
#define ADCstart          ADCSRA|=_BV(ADSC)         // startet eine Konvertierung auf dem gewünschten Kanal/Pin
#define ADCfree           ADCSRA|=_BV(ADATE)        // schaltet den freilaufenden Modus ein
#define ADCvintern        ADMUX|=_BV(REFS0)     	// interne Spannungsversorgung
#define ADCinterrupt_on   ADCSRA|=_BV(ADIE)                // ADC interrupt wird freigeschaltet
#define ADCprescaler_2    ADCSRA |=_BV(ADPS0)              // gewünschter Teilungsfaktor/Prescaler 
#define ADCprescaler_4    ADCSRA|=_BV(ADPS1)
#define ADCprescaler_8    ADCSRA=_BV(ADPS1) | _BV(ADPS0)
#define ADCprescaler_16   ADCSRA|=_BV(ADPS2)
#define ADCprescaler_32   ADCSRA=_BV(ADPS2) | _BV(ADPS0)
#define ADCprescaler_64   ADCSRA=_BV(ADPS2) | _BV(ADPS1)
#define ADCprescaler_128  ADCSRA=_BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0)
#define ADCprescaler_reset ADCSRA = ~_BV(ADPS2) & ~_BV(ADPS1) & ~_BV(ADPS0)        
#define ADCchannel_1                                      // gewünschter Kanal z.B bei ATmega32 PINA0 - PINA7
#define ADCchannel_2      ADMUX|=_BV(MUX0)                // wenn kein Freilaufen-Modus muss ADCchannel_x vor ADCstart
#define ADCchannel_3      ADMUX|=_BV(MUX1)                // kommen, dann kann man mit getadc() den 
#define ADCchannel_4      ADMUX= _BV(MUX1) | _BV(MUX0)    // Adcwert des gewählten Kanals auslesen
#define ADCchannel_5      ADMUX|=_BV(MUX2)
#define ADCchannel_6      ADMUX= _BV(MUX2) | _BV(MUX0)
#define ADCchannel_7      ADMUX= _BV(MUX2) | _BV(MUX1)
#define ADCchannel_8      ADMUX= _BV(MUX2) | _BV(MUX1) | _BV(MUX0)
#define ADCchannel_reset  ADMUX= ~_BV(MUX2) & ~_BV(MUX1) & ~_BV(MUX0)

inline unsigned int getadc(void)
{
   while (ADCSRA & _BV(ADSC)) {}
   return ADC;
}