hi allerseits,

Code:
/*******************************************************************************
*
* Description: asuro linksausweicher
*
*****************************************************************************/

#include "asuro.h"
#include <stdlib.h>
#include "inka.h"

static unsigned char ocr2 = 0x91; // Wert für 50:50 Pulsweite laden

void InitIRDetect(void)
{
   UCSRB = 0;                    // USART ausschalten
   DDRD |= (1 << DDD1);          // Port D1 als Ausgang
   PORTD &= ~(1 << PD1);          // PD1 auf LOW
}

void InitUart(void)
{
   OCR2 = 0x91;                   // duty cycle fuer 36kHz
}

int main(void)
{

  unsigned char sw;

   Init();                       // Library initialisieren
   InitIRDetect();               // IR-Funktion initialisieren
   WaitforStart();


   while (1)
   {
      OCR2 = ocr2;               // Puls-Pause-Verhältniss setzen
      Sleep(10);                 // kurz warten bis TSOP genügend Flanken erkennt
      
      if (PIND & (1 << PD0))     // TSOP-Eingang auf IR Echo überprüfen
      {
	  StatusLED(GREEN);          // kein Echo
      BackLED(OFF,OFF);
	  //MotorSpeed(255,255);         // volle Kraft
      //MotorDir(FWD,FWD);           // voraus
	  }
      else
      {
	  StatusLED(RED);            // Echo!
 	  BackLED(ON,ON);
      //MotorDir(RWD,RWD);     // rückwärts
      //Msleep(100);
      //MotorDir(RWD,FWD);     // nach links
	  }
      sw = PollSwitch();
      if (sw & 0x01)              // K6 neben Schalter
         ocr2 = 0xFE;             //Pulsbreite 1
      if (sw & 0x02)
         ocr2 = 0xFD;             //Pulsbreite 2
      if (sw & 0x04)
         ocr2 = 0xFB;             //Pulsbreite 4
      if (sw & 0x08)
         ocr2 = 0xF7;             //Pulsbreite 8
      if (sw & 0x10)
         ocr2 = 0xEF;             //Pulsbreite 16
      if (sw & 0x20)
         ocr2 = 0x90;             //Pulsbreite 110

/*      if (sw)                    // bei Tastendruck Wert zum Terminal senden
      {
         InitUart();             // Pulsbreite für IR-Kommunikation setzen
         PrintInt(sw);
         SerWrite(" ",1);
         PrintInt(ocr2);
         SerWrite("\r\n",2);
         InitIRDetect();         // Abstandsmessung aktivieren
         Msleep(100);
      }*/
   }
   return 0;
}
habe jetzt das programm etwas modifiziert, die entfernungen kann ich auch mit hilfe der schalter einstellen, die StatusLED wird bei annäherung an ein hindernis rot, wenn ich aber versuche die motorfunktionen zu aktivieren, fährt der asuro an, aber reagiert nicht mehr auf hindernisse...
habe versucht die aktivierung der IR abfrage in die while-schleife zu setzen (hinter den motorstart) bringt aber auch nichts...
bewirkt die aktivierung der motoren eine deaktivierung der IR-sensoren? Muss alles neu initialisiert werden "Init()"?

edit:
letztlich lag es am nicht vorhandenem kurzschlussjumper an der (accu)-spannungsversorgung - jetzt gehts...