so, jetzt habe ich mir nochmal genau angeschaut, wie das mit dem obstacle_left() bzw obstacle_right() auf der base programmiert ist.
dabei konnte ich folgendes finden:

in der .h lib:
Code:
void task_ACS(void);
die ACS funktion wird also hier auch aus der .h lib aufgerufen.

das habe ich bei mir mit void infrarotkollission(void); in dirks servolib.h gemacht, also genau gleich wie hier gemacht.



in der .c lib:
Code:
uint8_t obstacle_left;
uint8_t obstacle_right;
die variablen werden hier auch nicht als externe variablen deklariert.
also wie bei mir in servolib.c



dann das demoprogramm (Example_04_ACS):

Code:
// Uncommented Version of RP6Base_Stopwatches.c
// written by Dominik S. Herwald
// ------------------------------------------------------------------------------------------
// Another uncommented version - this time of RP6Base_ACS.c.
// ------------------------------------------------------------------------------------------

#include "RP6RobotBaseLib.h" 

void acsStateChanged(void)
{
	writeString_P("ACS state changed   L: ");
	
	if(obstacle_left)
		writeChar('o');
	else
		writeChar(' ');
		
	writeString_P(" | R: ");
	
	if(obstacle_right)
		writeChar('o');
	else
		writeChar(' ');	
		
	if(obstacle_right && obstacle_left)
		writeString_P("   MIDDLE!");
		
	writeChar('\n');
	
	if(obstacle_left && obstacle_right)
		statusLEDs.byte = 0b100100;
	else
		statusLEDs.byte = 0b000000;
	statusLEDs.LED5 = obstacle_left;
	statusLEDs.LED4 = (!obstacle_left);
	statusLEDs.LED2 = obstacle_right;
	statusLEDs.LED1 = (!obstacle_right);
	
	updateStatusLEDs();	
}

void bumpersStateChanged(void)
{
	writeString_P("Bumpers state changed!   BPL: ");
	
	if(bumper_left)
		writeChar('o');
	else
		writeChar(' ');
		
	writeString_P(" | BPR: ");
	
	if(bumper_right)
		writeChar('o');
	else
		writeChar(' ');
		
	writeChar('\n');
}

int main(void)
{
	initRobotBase();
	
    writeString_P("\nRP6 ACS - Testprogram\n");
	writeString_P("_____________________\n\n");

	setLEDs(0b111111);
	mSleep(1000);
	setLEDs(0b001001);

	ACS_setStateChangedHandler(acsStateChanged);
	
	BUMPERS_setStateChangedHandler(bumpersStateChanged);

	powerON(); 
	setACSPwrMed();

	while(true) 
	{		
		task_RP6System();
	}
	return 0;
}
hier mein demoprogramm zum aufrufen meiner neuen acs funktion zum vergleich:

Code:
 // Uncommented Version of RP6ControlServo.c

// ------------------------------------------------------------------------------------------

#include "RP6ControlLib.h"
#include "RP6ControlServoLib.h"
#include "RP6I2CmasterTWI.h"
#include "RP6Control_I2CMasterLib.h"

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





void RP6_Bewegung(void)
{if (ir_hindernis)
	{writeString_P("objekt erkannt\n");}
		
}






	
void servoansteuerung(void)
{if (getStopwatch3() <1000)
	{servo3_position = 0;
	writeString_P("LEFT Touch\n");}


if (getStopwatch3() >1000 && getStopwatch3() <2000)
	{servo3_position = 40;
	writeString_P("servo position 40\n");}
	
if (getStopwatch3() >2000 && getStopwatch3() <3000)
	{servo3_position = 80;}

if (getStopwatch3() >3000 && getStopwatch3() <4000)
		{servo3_position = RIGHT_TOUCH;
		writeString_P("Servo Right touch\n");}
		
if (getStopwatch3() >4000 && getStopwatch3() <5000)
	{servo3_position = 80;}
	
if (getStopwatch3() >5000 && getStopwatch3() <6000)
	{servo3_position = 40;}
		
if (getStopwatch3() >6000 && getStopwatch3() <7000)
	{servo3_position = 0;
	writeString_P("LEFT Touch\n");}
	
if (getStopwatch3() >7000)
	{
	setStopwatch3(0);
	writeString_P("stopwatch3 auf 0 zurück\n");}
	
	}
	
int main(void)
{ 
   initRP6Control();
   
   I2CTWI_initMaster(100);  
	
	
 

 initSERVO(SERVO3); 
startStopwatch3(); 
   
   while(true) 
   {
servoansteuerung();
      task_SERVO();
	  infrarotkollission();
	  RP6_Bewegung();

   }
   return 0;
}
da ich keinen grundlegenden unterschied zwischen meiner programmiervariante und der von der base feststellen kann, bei mir aber immer noch die fehlermeldung
Code:
 
-------- begin --------
avr-gcc (WinAVR 20090313) 4.3.2
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Compiling: IR_Radar.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2   -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=IR_Radar.lst -I../../RP6Lib -I../../RP6Lib/RP6control -I../../RP6Lib/RP6common -std=gnu99 -MD -MP -MF .dep/IR_Radar.o.d IR_Radar.c -o IR_Radar.o
IR_Radar.c: In function 'RP6_Bewegung':
IR_Radar.c:21: error: 'ir_hindernis' undeclared (first use in this function)
IR_Radar.c:21: error: (Each undeclared identifier is reported only once
IR_Radar.c:21: error: for each function it appears in.)
make.exe: *** [IR_Radar.o] Error 1

> Process Exit Code: 2
> Time Taken: 00:05
kommt, hoffe ich nun, dass mir jemand aus dem forum helfen kann.

mfg andi