so dirk, jetzt bin ich bei der programmierung meines 5-achs-armes, wo deine lib ja die hauptrolle spielt angekommen.

allerdings stehe ich vor einem ersten problem. kann es sein, dass die servoansteuerung mit deiner lib nicht korrekt funktioniert, wenn man mehrere Servos gleichzeitig ansteuert?


hier mein programm:

Code:

//Servo 1 => PC2
//Servo 2 => PC3
//Servo 3=> PC4 
//Servo 4=> PC5 
//Servo 5=> PC6
//Reflexkoppler => PD6

uint8_t a;

void task_teil_erkannt(void)
{if (PIND & (1<<6))
	{setStopwatch3(0);
	a=1;
	writeString_P("kein Teil erkannt\n");}
	
else {a=0;
	writeString_P("Teil erkannt\n");
	initSERVO(SERVO1);
	startStopwatch3();
	}
}
void task_servoansteuerung(void)
{if (a==0 && getStopwatch3() >0)
	{
	servo1_position = 0;
	writeString_P("Greifer zu\n");
	}
	
if (a==0 && getStopwatch3() > 2000 )
	{initSERVO(SERVO3|SERVO4);
	servo3_position = MIDDLE_POSITION;
	servo4_position = 50;
	writeString_P("Arm hoch\n");}


	

	

	
}

int main(void)
{ 
   initRP6Control();
   DDRD &=~ (1<<6);		//Eingang für Reflexkoppler
   
   

   startStopwatch2();
 
   
   while(true) 
   {task_servoansteuerung();

    task_teil_erkannt();
      

      task_SERVO();

      mSleep(3);
   }
   return 0;
}
wenn ein teil erkannt wird, wird der greifer geschlossen (bis dahin funktioniert das programm), allerdings sollten dann nach 2sekunden verzögerung die Servos 3 und 4 den arm nach oben fahren lassen. das geschieht leider nie, obwohl im terminal "Arm hoch" angezeigt wird. der greifer soll die ganze zeit über an seinen linken anschlag takten (das funktioniert auch schon).

kannst du mir vielleicht sagen, an was das genau liegt?

danke schon mal im voraus

mfg andi