hi mic,
habe nun mit der servoansteuerung2 experimentiert, habe jetzt glaube ich verstanden wie die einzelnen positionen am servo mittels sleep bestimmt werden, was mir noch fehlt ist die antwort auf´s warum (siehe fragen im code):
Code:
// Servoansteuerung2: Wir erzeugen zwei Impulse im Wechsel 10.1.2010 mic
// sleep(1) verzögert ca. 0,1ms, 50 Impulse dauern ca. 1 Sekunde
// Servo an SDA (PC1) (XBUS Pin 12)
#include "RP6RobotBaseLib.h"
uint8_t c; // allgemeine 8-Bit-Variable (ein Char)
int main(void)
{
initRobotBase();
DDRC |= SDA;
PORTC &= ~SDA;
while(1)
{
for(c=0; c<50; c++) //50 = 50 Impulse senden, das dauert ca. 1 Sekunde
{
PORTC |= SDA; // Impulsstart
sleep(1); // 1 = 0.1ms warten = Servoposition 1
PORTC &= ~SDA; // Impulsende
sleep(150); //150ms warten
}
/* die for/++ schleife wird 50* durchlaufen, d.h. das signal wird 50* in längen von 0,1sec und zwischenpausen von 150ms abgegeben
sleep(1) bestimmt die äußerste linke position am servo - warum eigentlich? ist das so irgendwo festgelegt? die äußerste linke position am servo müsste dem potiwert=0 entsprechen, oder? gibt es einen zusammenhang mit sleep(1)?*/
.
.
.
.
.
for(c=0; c<50; c++)
{
PORTC |= SDA;
sleep(30); //30 = 3ms warten = Servoposition 2
PORTC &= ~SDA;
sleep(150);
}
/* die for/++ schleife wird 50* durchlaufen, d.h. das signal wird 50* in längen von 0,1sec und zwischenpausen von 150ms abgegeben,
sleep(30) bestimmt die äußerste rechte position am servo......*/
.
.
.
.
.
}
return(0); // wird nie erreicht
}
Lesezeichen