komischerweise hatten die defines mit channel 1 also pin0 wunderbar alleine funktioniert.

Naja mein neuer Code is jetzt:

Code:
#include <avr/io.h>
#include <stdlib.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <avr/signal.h>
#include <string.h>
#include <compat/deprecated.h>
#include <inttypes.h>
#include <myheader.h>

#define SYSCLK 16000000


void init(void);

// Initialisierung
void init(void)
{
   DDRD= (1<<PD4) | (1<<PD5);   // PWM Pins als ausgang
   DDRC= (1<<PC6) | (1<<PC7);   // 6=Motor 1 Kanal 1    7= Motor 1 Kanal 2
   DDRB= (1<<PB0) | (1<<PB1);   // 0=Motor 2 Kanal 1    1= Motor 2 Kanal 2
   TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<COM1A0) | (1<<COM1B0) | (1<<WGM11) | (1<<WGM10);
   // 10 Bit Pwm, invertierend
   TCCR1B = (1<<CS11) | (1<<CS10);      // Prescaler 64
   OCR1A=1;         // Mindestzeit für PWM1
   OCR1B=1;         // Mindestzeit für PWM2

}

void warte(unsigned int ms) // Wartet um x ms
{ 
   unsigned int zaehler; 
    
   while (ms) 
   { 
      zaehler = SYSCLK / 20000; 
      while (zaehler) 
      { 
         asm volatile ("nop"); 
         zaehler--; 
      } 
      ms--; 
   } 
}

void R_Motor_r() // Rechter Motor rückwärts
{
sbi(PORTC,6);
cbi(PORTC,7);
}

void R_Motor_v() // Rechter Motor vorwärts
{
sbi(PORTC,7);
cbi(PORTC,6);
}

void R_Motor_s() // Rechter Motor stop
{
cbi(PORTC,7);
cbi(PORTC,6);
}

void L_Motor_r() // Linker Motor rückwärts
{
sbi(PORTB,0);
cbi(PORTB,1);
}

void L_Motor_v() // Linker Motor vorwärts
{
sbi(PORTB,1);
cbi(PORTB,0);
}

void L_Motor_s() // Linker Motor stop
{
cbi(PORTB,1);
cbi(PORTB,0);
}

uint16_t readADC(uint8_t channel) //Funktion um ADC-Wert auszulesen an Pin channel
{
	uint8_t i;
	uint16_t result = 0;
	
	// Den ADC aktivieren und Teilungsfaktor auf 64 stellen
	ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1);

	// Kanal des Multiplexers waehlen
	ADMUX = channel;
	// Interne Referenzspannung verwenden (also 2,56 V)
	ADMUX |= (1<<REFS1) | (1<<REFS0);
	
	// Den ADC initialisieren und einen sog. Dummyreadout machen
	ADCSRA |= (1<<ADSC);
	while(ADCSRA & (1<<ADSC));
	
	// Jetzt 3x die analoge Spannung and Kanal channel auslesen
	// und dann Durchschnittswert ausrechnen.
	for(i=0; i<3; i++) {
		// Eine Wandlung
		ADCSRA |= (1<<ADSC);
		// Auf Ergebnis warten...
		while(ADCSRA & (1<<ADSC));
		
		result += ADCW;
	}
	
	// ADC wieder deaktivieren
	ADCSRA &= ~(1<<ADEN);
	
	result /= 3;
	
	return result;
}

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

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

for(;;)
{

r = readADC(0);	//Auslesen der analogen Spannungen an Pin 0
l = readADC(1); //Auslesen der analogen Spannungen an Pin 1

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

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


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

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

warte(10);
}


return 0;
}