Gut, dass es Frauen gibt ... und das am Vatertag ...Meine Frau hat eben die Lösung gehabt, indem sie selber die Leitungen durchgemessen hat.![]()
Gruß Dirk
Gut, dass es Frauen gibt ... und das am Vatertag ...Meine Frau hat eben die Lösung gehabt, indem sie selber die Leitungen durchgemessen hat.![]()
Gruß Dirk
hi dirk,
ich habe die drei dateien vom anfang des thread im projektverzeichnis abgespeichert (ich verwende eclipse unter linux) zusammen mit
RP6Config.h
RP6Control.c +h
RP6ControlLib.c +h
RP6Uart.c +h
kompiliert, lief ohne fehlermeldung ab.
*.hex geladen...
beim start erscheint im LCD
#####
RP6 control
LC-Display
Servo-Test 1
Version 1.00
dann wird die servopos abgezählt von 1 bis 162(?)
die zwei Servos sind am pin 1 und 3 des IO steckers angeschlossen..
wie gesagt, im display wird abgezählt, an den Servos passiert aber nix. Hätte ich die demo.c ändern müssen?
danke
EDIT: korrektur:
wenn ich servo I an control- I/O pin 7 (PC2) anschliesse, wir der servo I nach rechts bewegt und dann schrittweise nach links
wenn ich servo II zusätzlich an pin 5 (PC3) anschliesse passiert an servo II nichts
wenn ich servo III am pin 6 (PC4) anschliesse fahren alle 3 Servos auf den rechten anschlag und das programm in m32 board muss neu gestartet werden
gruß inka
An Pin 1 und 3 von I/O wären das ja die Servos 6 und 4 an PC7 und PC5.
Also wäre die Initialisierung in der Demo:
initSERVO(SERVO4 | SERVO6);
Das ist ok.wenn ich servo I an control- I/O pin 7 (PC2) anschliesse, wir der servo I nach rechts bewegt und dann schrittweise nach links
Wenn die Demo unverändert ist, müßte das funktionieren.wenn ich servo II zusätzlich an pin 5 (PC3) anschliesse passiert an servo II nichts
Wenn du SERVO3 initialisiert hast, sollte das auch funktionieren.wenn ich servo III am pin 6 (PC4) anschliesse fahren alle 3 Servos auf den rechten anschlag und das programm in m32 board muss neu gestartet werden
Wichtig wäre eine getrennte Stromversorgung für die Servos, weil sonst evtl. die M32 immer wegen Spannungseinbrüchen ein Reset fährt.
Gruß Dirk
hi Dirk,
habe jetzt die zugehörigen Servos initialisiert (PC7,PC5,PC3 <-> servo 6,4,2) und habe nun ein anderes problem, bekomme beim kompilieren folgende fehlermeldung:
--------------------
Severity and Description Path Resource Location Creation Time Id
../../../../crt1/gcrt1.S undefined reference to `main' m32_control_servo_dirk line 193 1281799492208 4852
------------------
was kann das denn sein?
gruß inka
die antwort habe ich jetzt selber: im namen der "RP6ControlServo.c" war durch copy und paste ein blank hinter dem "c", die datei wurde somit nicht als *.c erkannt.
so weit so gut, die stromversorgung der Servos habe ich getrennt vom RP, einen wackler in meiner verdrahtung beseitigt.
jetzt lässt sich die datei kompilieren, beim kontaktieren der Servos zu den pins PC7,PC5,PC3 (egal welches servo an welchem pin) fährt der servo zum linken anschlag (von vorne gesehen) und zuckt dann dort vor sich hin, als wollte er noch weiter.
ein fortschritt, aber ganz richtig kanns ja noch nicht sein, oder?
gruß inka
Hast Du die Masse der externen Stromversorgung an die an des RP6 gekoppelt ? Dem sollte so sein. Steht irgendwo oben in diesem Thread
Ich habe bereits bis Unendlich gezählt. Zweimal, und zurück
jetzt habe ich die massen von RP6 und der externen servoversorgung verbunden.
servo 2 an pin 5 / PC3 tut das erwartete, auch die beiden anderen servos, wenn ich sie an diesem pin anschliesse. Am pin 3 / PC5 und pin 1 / PC7 fahren die Servos an einen anschlag und bleiben dort. sie zucken auch nicht.
in der demodatei habe ich nur die initialisierung in
initSERVO(SERVO2 | SERVO4 | SERVO6);
geändert. Muss ich noch etwas ändern?
Hat es schon jemand in der praxis mit drei oder mehr Servos getestet?
Ein anderes programm, mit 3 servos, allerdings mit dieser funktion
-----------------------------
for(c=0; c<50; c++)
{
PORTC |= IO_PC7; // Impulsstart servo I
sleep(12); // 1 = 0.1ms warten = Servoposition 1
PORTC &= ~IO_PC7; // Impulsende
sleep(150); //50ms warten
}
-------------------------------
funktionieren alle drei servos!
gruß inka
Also ich benutze die Lib mit allen acht Servos ohne Probleme.
Acht gleichzeitig ist halt auch mit externer Versorgung etwas kritisch, aber prinzipiell geht es.
Wenn du die Servos 2, 4, 6 benutzt, must du natürlich auch die Variablen servo2_position, servo4_position, servo6_position in der Demo verwenden, um diese Servos anzusteuern.Am pin 3 / PC5 und pin 1 / PC7 fahren die Servos an einen anschlag und bleiben dort. sie zucken auch nicht.
Es sieht so aus, als ob du servo4_position und servo6_position gar nicht änderst.
Gruß Dirk
hi Dirk,
danke für den entscheidenden hinweis - es läuft!!!!
gruß inka
Lesezeichen