Hallo zusammen,

mein Servo hat das große Zittern:

Ich versuche ihn über das Control M32 Board des RP6 anzusteuern. Dabei verwende ich die Standard PWM Betriebsart des Timers 1 und der Servo liegt mit seiner Steuerleitung an PIND5.

Das Problem:
Der Servo dreht zwar wie befohlen, zittert aber mächtig.
Kann ich ihm das Zittern abgewöhnen ?

Viele Grüße

Igeligel




Hier mein Code:

Code:
#include "RP6ControlLib.h"

void initServo(void) 
{
	DDRD   |= (1 << PD5);						// define PIND5 as output
	TCCR1B |= (1 << CS12);										// systemclock :256
	TCCR1A |= (1 << COM1A1) | (1 << WGM11) | (1 << WGM11);	// 9bit PWM-mode
	OCR1A   = 26;								// set compare value
	sei();										// enable interrupts
}


int main(void)
{
	uint8_t counter=0;

	initRP6Control();
	initServo();

	startStopwatch1(); // Stopwatch1 starten!

	while(true) 
	{
		// Check if a key is pressed:
		uint8_t key =  getPressedKeyNumber(); 
		
		// If button 1 is pressed => turn servo to the right
		if (key==1 || ch=='u') {
			OCR1A++;
			setStopwatch1(0);
			while(getStopwatch1() < 200) {
				counter++;
			}
		}
	
		// If button 2 is pressed => turn servo to the left
		if (key==2 || ch=='d') {
			OCR1A--;
			setStopwatch1(0);
			while(getStopwatch1() < 200) {
				counter++;
			}
		}
		
		
		// If no button is pressed => do nothing
		if (key==0) {
		}
	}
}