Hallo,
vielen Dank für Eure Hilfe. Jetzt funktioniert alles wie es soll. Ich habe die Stopwatch- und die Servo-Lib aus diesem Forum und Code für den Sensor aus dem holländischen Arexx-Forum verwendet und angepasst. Als nächstes werde ich mich mit der Kommunikation zwischen RP6 Base und RP6 Control befassen.
Hier ist der Code:
	Code:
	#include "./RP6Lib/RP6control/RP6ControlServoLib.h"
#include "./RP6Lib/RP6common/RP6Stopwatch0Lib.h"
#include "RP6ControlUltrasonic.h"
volatile uint16_t pos = 0;
//ULTRASONIC FUNCTIONS #######################################
void task_US_SW()
{
	uint16_t range;
	//MEASURING
	DDRC |= IO_PC3;						// IO_PC3 Ausgang
	PORTC |= (1<<PORTC3);				// IO_PC3 high  IO_PC3;
	_delay_us(10);						// 10uS warten
	PORTC &= (0<<PORTC3);				// IO_PC3 low  ~IO_PC3;
		
	DDRC &= ~IO_PC3;					// IO_PC3 Eingang
	while(!(PINC & IO_PC3));			// Warten bis steigende Flanke an IO_PC3
	setStopwatch01(0);
	while(PINC & IO_PC3);				// Warten bis fallende Flanke an IO_PC3 
	range = getStopwatch01() * 1.67;	// Wert der Stoppuhr * 1,67 = Abstand in cm.
			
	displayData(range);
	//MEASURING END	
}
void displayData(uint16_t r)
{
	
	writeString_P("Abstand:");
	writeInteger(r, DEC);
	writeString_P(" cm\n");
	
	sound(170,40,0);
}
//END OF ULTRASONIC FUNCTIONS ################################
int main(void)
{  
	initRP6Control();
	setLEDs(0b111111);
	mSleep(500);
	setLEDs(0b000000);
	initSERVO(SERVO1);
	startStopwatch2();
	startStopwatch01();
	
	while(true)  
	{
		if (getStopwatch2() > 2000) {	// Alle 2000ms Servo drehen
			
			if (pos == 0) {
				servo1_position = 0;
			}
			if (pos == 1) {
				servo1_position = MIDDLE_POSITION;
			}
			if (pos == 2) {
				servo1_position = RIGHT_TOUCH;
			}
			if (pos == 3) {
				servo1_position = MIDDLE_POSITION;
			}
			
			pos++;
			if (pos > 3) {pos = 0;}
			
			setStopwatch2(0);
			
			task_US_SW();	
		}
		task_SERVO();		
		
		mSleep(3);
		
	}
	return 0;
}
 Und hier sind meine Einstellungen für den Servo aus der RP6ControlServoLib.h:
	Code:
	#define LEFT_TOUCH			56
#define RIGHT_TOUCH			42
#define MIDDLE_POSITION		(RIGHT_TOUCH / 2)
#define PULSE_REPETITION           17			
#define F_TIMER1			50000
 
						
					
Lesezeichen