Hallo
Da die beiden Variablen nicht initialisert waren, kann man nichts über deren Inhalt sagen. Aber wie du richtig erkannt hast scheint dein RP6 die "gefundenen" Werte als Befehl zum Drehen zu erkennen.
Mit den Makefiles kenne ich mich (immer noch) nicht aus. Aber es funktioniert sicher nicht, wenn du auch die orginale Lib zusammen mit der rblib einbindest. Deshalb müssen die ersten zwei Zeilen auch auskommentiert werden:
#SRC += $(RP6_LIB_PATH)/RP6base/RP6RobotBaseLib.c
#SRC += $(RP6_LIB_PATH)/RP6common/RP6uart.c
#SRC += $(RP6_LIB_PATH)/RP6common/RP6I2CslaveTWI.c
#SRC += $(RP6_LIB_PATH)/RP6common/RP6I2CmasterTWI.c
SRC += $(RP6_LIB_PATH)/rblib.c
Wenn rblib.c so eingebunden wird, muss man das include im Programm entfernen:
#include "rblib.h"
//#include "rblib.c"
Aber das ändert vermutlich nichts an deiner "No Rules to make..."-Fehlermeldung. Soweit ich weiß bedeutet das, dass der Quellcode des Programms nicht gefunden wird. Ursachen sind z.B. falsche Pfade, Leer- oder Sonderzeichen in den Pfad- oder Dateinamen, falsche Dateinamen, bei Linux vermutlich auch falsche Groß-/kleinschreibung...
Gruß
mic
[Edit]
Die rblib-Geschichte ist ja eigentlich auch eine "Jugendsünde" von mir. Inzwischen kann ich eine Variante der Servoansteuerung anbieten die sich mit der RP6-Library verträgt:
https://www.roboternetz.de/phpBB2/vi...=483757#483757
Allerdings ist dabei die Auflösung der Servoschritte nicht so hoch, deshalb muss man die Umrechnung der gemessenen RC-Signale in Motorparameter anpassen:
Code:
// RC-Signale an SCL und SDA messen 23.3.2010 mic
// Timersetup der Lib: Mode 10, Phase Correct
// Mit ICR1 als Top ergibt bei ICR1=210 ca. 8MHz/420=19047,6Hz ;)
// Drehbereich meiner RS-2-Servos ist von ca. 14 bis ca. 38
// Aus: https://www.roboternetz.de/phpBB2/vi...=492812#492812
#include "RP6RobotBaseLib.h"
volatile uint8_t rc_input_pwr=26, rc_input_dir=26;
int main(void)
{
initRobotBase();
TIMSK |= (1 << TOIE1); // Die Timer1 Overflow-ISR zur Servoansteuerung
setLEDs(1); // und los!
writeString_P("\n\nRC-Empfänger an SCL und SDA auswerten.\n");
writeString_P("mic 23.3.2010\n\n");
while(1)
{
writeString_P("SCL (PC0): ");
writeInteger(rc_input_dir, 10);
writeString_P("\nSDA (PC1): ");
writeInteger(rc_input_pwr, 10);
writeString_P("\n\n");
mSleep(300);
}
return 0;
}
ISR (TIMER1_OVF_vect) // RC-Signale an SCL und SDA messen
{
static uint16_t rc_temp_pwr=0;
static uint16_t rc_temp_dir=0;
if (PINC & 1) rc_temp_dir++; else
if (rc_temp_dir) { rc_input_dir=rc_temp_dir-1; rc_temp_dir=0; }
if (PINC & 2) rc_temp_pwr++; else
if (rc_temp_pwr) { rc_input_pwr=rc_temp_pwr-1; rc_temp_pwr=0; }
}
(Nicht getestet, weil mein RC-Empfänger zur Zeit eingemottet ist)
Lesezeichen