Code geändert auf:

Code:
#include "asuro.h"

void LocalInit(void)
{
	// Change Oscillator-frequency of Timer 2
	// to 40kHz, no toggling of IO-pin:
	TCCR2 = (1 << WGM21) | (1 << CS20);
	OCR2 = 0x64;						// 40kHz @8MHz crystal
	ADCSRA = 0x00;					// ADC off
	// Analog comparator:
	ACSR = 0x02;						// Generate interrupt on falling edge
	ADMUX = 0x03;						// Multiplexer for comparator to
													// ADC pin 3
	SFIOR |= (1 << ACME);		// Enable muliplexing of comparator
	DDRD &= ~(1 << 6);			// Port D Pin 6 is input!
}


void Ping(unsigned char length)
{
	count72kHz = 0;
	TCCR2 = (1 << WGM21) | (1 << COM20) | (1 << CS20);
													// Toggling of IO-Pin on
	
	// generate the Chirp
	while(count72kHz < length) {
		OCR2 = 0x64 + length / 2 - count72kHz;
	}
	
	TCCR2 = (1 << WGM21) | (1 << CS20);		// Toggling of IO-Pin off
	OCR2 = 0x64;													// set frequency to 40kHz
}


int main(void)
{
	int pos, i;
	int posmarker;
	Init();
	LocalInit();
	while(TRUE) {
		posmarker = 0;
		Ping(20);
		for(pos = 0; pos < 100; pos++) {
			Sleep(10);
			if((ACSR & (1 << ACI)) != 0) {
				if(posmarker == 0) { posmarker = pos; }
			}
			ACSR |= (1 << ACI);
		}
		if(posmarker < 15) {
			StatusLED(GREEN);
			MotorDir(FWD, RWD);
			MotorSpeed(0, 200);
			for(i = 0; i<100; i++){ 
				Sleep(200);
			}
		}
		else {
			StatusLED(RED);
			MotorDir(FWD, FWD);
			MotorSpeed(200, 200);
		}
	}
	
	return 0;
}
Da gehts auch schon los ^^

Anstatts das sich beide Räder vorwäts drehen, dreht sich nur das rechte rückwärts. Dabei ist ja garnix vor dem US-Sensor und selbst wenn da etwas ist, ändert sich nix am verhalten...

Was mach ich denn falsch? Läuft das Programm denn bei jemanden?
Hat vielleicht einer einen Tipp oder ein funktionierendes Programm das ich testen kann?