Hallo IgelIgel,

so, ich habe die Anschlagswerte auf die Norm (1ms..2ms Impuls) gesetzt:
#define LEFT_TOUCH 1000 // Left servo touch (~1.0ms)
#define RIGHT_TOUCH 1000 // Right servo touch (~2.0ms)

... und die task auf die Schnelle so verändert, dass sich das Servo ganz langsam auf seine 3 Hauptpositionen (Links/Mitte/Rechts) bewegen kann:
Code:
void task_SERVO(void)
{static uint8_t pos;
// -----------------------------------------------------------------------
// Your test code for positioning the servo here:
	if (getStopwatch1() > 5000) {		// Change position every ~5s
		if (pos == 0) {
			while (position > 1) {
				position -= 2;
				setSERVO(position);
				setCursorPosLCD(0, 0);
				writeStringLCD_P("Servopos.: ");
				writeIntegerLCD(position, DEC);
				writeStringLCD_P("  ");
				mSleep(10);
			}
		}								// Position of servo
		if (pos == 1) {
			while (position < MIDDLE_POSITION) {
				position += 2;
				setSERVO(position);
				setCursorPosLCD(0, 0);
				writeStringLCD_P("Servopos.: ");
				writeIntegerLCD(position, DEC);
				writeStringLCD_P("  ");
				mSleep(10);
			}
		}
		if (pos == 2) {
			while (position < RIGHT_TOUCH) {
				position += 2;
				setSERVO(position);
				setCursorPosLCD(0, 0);
				writeStringLCD_P("Servopos.: ");
				writeIntegerLCD(position, DEC);
				writeStringLCD_P("  ");
				mSleep(10);
			}
		}
		if (pos == 3) {
			while (position > MIDDLE_POSITION) {
				position -= 2;
				setSERVO(position);
				setCursorPosLCD(0, 0);
				writeStringLCD_P("Servopos.: ");
				writeIntegerLCD(position, DEC);
				writeStringLCD_P("  ");
				mSleep(10);
			}
		}
	
		pos++;
		if (pos > 3) {pos = 0;}
		setStopwatch1(0);
	}
// -----------------------------------------------------------------------
}
Ergebnis:
Das Servo bewegt sich ganz ruhig von links nach rechts und umgekehrt. Laut Oszi liegt der Impuls zwischen 1 und 2 ms, also ok.

Wie ist das bei dir? Reagiert das Servo irgendwie merkwürdig?

Gruß Dirk