jagdfalke
28.11.2005, 08:42
Hi,
Wie ihr wisst laufen mittlerweile meine Servos unter C *schulterklopf* :D
Ich habe einige Teste gemacht und die Servos immer von 0 bis 255 und zurücklaufen lassen. Allerding zucken die Servos einmale ziemlich heftig, wenn sie auf 0 sein sollten. Also der Servo geht runter auf 0 und zuckt dann ein paar Grad wieder nach oben und bleibt dann da stehen.
Ich benutze dern Servotreiber rns1.
Weiß jemand woran das liegent könnte? Ich poste das hier ins C-Forum, weil sie das unter Bascom nicht gemacht haben. Ich schätze mal, dass es dann mit C bzw mit meinem Code zu tun hat.
void servo_move(int servo, int pos)
{
loop_until_bit_is_set(UCSRA, UDRE);
UDR = '#';
loop_until_bit_is_set(UCSRA, UDRE);
UDR = 's';
loop_until_bit_is_set(UCSRA, UDRE);
UDR = servo;
loop_until_bit_is_set(UCSRA, UDRE);
UDR = pos;
}
...
for(i=127; i>=0; i--) {
servo_move(4, i);
_delay_ms(20);
}
...
mfg
jagdfalke
Wie ihr wisst laufen mittlerweile meine Servos unter C *schulterklopf* :D
Ich habe einige Teste gemacht und die Servos immer von 0 bis 255 und zurücklaufen lassen. Allerding zucken die Servos einmale ziemlich heftig, wenn sie auf 0 sein sollten. Also der Servo geht runter auf 0 und zuckt dann ein paar Grad wieder nach oben und bleibt dann da stehen.
Ich benutze dern Servotreiber rns1.
Weiß jemand woran das liegent könnte? Ich poste das hier ins C-Forum, weil sie das unter Bascom nicht gemacht haben. Ich schätze mal, dass es dann mit C bzw mit meinem Code zu tun hat.
void servo_move(int servo, int pos)
{
loop_until_bit_is_set(UCSRA, UDRE);
UDR = '#';
loop_until_bit_is_set(UCSRA, UDRE);
UDR = 's';
loop_until_bit_is_set(UCSRA, UDRE);
UDR = servo;
loop_until_bit_is_set(UCSRA, UDRE);
UDR = pos;
}
...
for(i=127; i>=0; i--) {
servo_move(4, i);
_delay_ms(20);
}
...
mfg
jagdfalke