stimmt, ist aus dem Log nicht zu sehen, wollte es übersichtlich halten.
Gedrückt halten führt leider nicht zum Erfolg....
Gruß Tom
stimmt, ist aus dem Log nicht zu sehen, wollte es übersichtlich halten.
Gedrückt halten führt leider nicht zum Erfolg....
Gruß Tom
hm... hm... ok. Das war's wohl nicht.
Nun gut.. also Du bekommst ja offensichtlich RC5 Signale rein da die receiveRC5Data wie gesehen aufgerufen wird und die Zuordnung ist erst mal 2.Frage ...
Ansich passiert dann nicht mehr viel... berechnen der Accel-Daten für die Antriebe links und rechts... und dann per moveAtSpeed ab auf die MosFets.
Poweron, initrobotbase und task_rp6sstem werden auch ausgeführt. Den Selbsttest hattest Du gemacht wie Du sagtest...
Man könnte sich nun noch die errechneten Accel-Werte ausgeben lassen... um zu sehen ob der denn beschleunigen würde.
Aber irgendwie glaube ich nicht an ein Fehler da... der würde sonst auch bei anderen zuschlagen.
Hm.. Du Sorry... ich kann Dir nicht helfenGesetzt den Fall, das alles so ist wie ich vermute und Du ja bestätigst, müsste er losfahren.
Ich würde vorschlagen, du machst noch mal den Selbsttest - um sicher zu stellen das die Antriebe wirklich ok sind.
Ich rechne allerdings damit, das der positiv ausgeht... und Dir damit nicht weiter hilft. Eine andere Fernbedienung kann man noch testen aber ob das was bringt....
Ne Du.. ich bin am Ende mit meinen Tips. Tut mir leid.
Vielleicht findet sich jemand, der Dir besser helfen kann. Warte mal ein paar Tage. Und wenn Du raus hast wo es dran lag, schreib es mal hier rein. Würd mich ja doch interssieren.
LG Rolf
EDIT: Eine Idee hab ich noch... aber wild geraten und ungeprüft.
In deccelerate(void)
wird per Timer mit
if(getStopwatch1() > 250)
4 mal / sek "gebremst" ... folglich müsste eine Fernbedienung mehr als 4 Impulse leisten?
Da gibst aber noch die
#define ACCELERATE_VALUE 8
#define DECELERATE_VALUE 4
Das würde dann glaube ich auf 2/sec reduzieren um die Waage zu halten und 3/sek damit man beschleunigt?
Ich weis es nicht genau aber da in der Ecke könnte man mal etwas genauer gucken... mach mal aus der
#define ACCELERATE_VALUE 8 eine 12, 16 oder 24 .. je nach dem wie viel Impulse/sek Du reinbekommst.
Oder kommentier mal die deccelerate(void) versuchsweise ganz aus. Dann weisst Du zumindest, das es der richtige Weg ist.
Geändert von RolfD (21.03.2011 um 13:55 Uhr)
Sind Sie auch ambivalent?
Hallo Rolf
Das war die Lösung für das Prob.Hab den Wert auf 24 geändert und es fkt.#define ACCELERATE_VALUE 8 eine 12, 16 oder 24 .. je nach dem wie viel Impulse/sek Du reinbekommst.
Danke für den tollen Einfall.
Gruß Tom
Hätte auch eine Frage zum RP6 mit TV-Remote:
Wo wird denn bewerkstelligt, dass der RP6 weiß, dass eine Taste auf der Remote losgelassen wurde?
In der großen Switch wird zwar die Stopwatch1 gestartet und in der "deccelerate" wird sie ausgelesen, aber wo und wie genau weiß das Programm denn nun, dass nichts mehr kommt? Wird da irgendwo "rc5data.key_code" zurückgesetzt, oder wie?
Ich bräuchte so etwas wie eine Zurücksetzung von "rc5data.key_code" auf sagen wir "-1", um mehrfach-drücken einbauen zu können.
Danke Euch
Die Antwort hat ja schon die Fernsteuerung parat: im ersten Byte - Start- und Adressbits - ist das dritte Bit (von Bit1 bis Bit 8 ) das Togglebit. Das wird invertiert jedes Mal, wenn eine Taste gelöst und neu gedrückt wird. Damit ist einfach festzustellen, ob die gleiche Taste festgehalten wird => das Togglebit bleibt dabei gleich.Zitat von fabqu
Ciao sagt der JoeamBerg
Hmm, danke dir.
Das geht nun auch, aber ich bin grad am verzweifeln:
Wenn ich die Abfragen für RC5-Code, -Adresse und -Togglebit drinnen habe, dann geht auf der Base nahzu nix mehr. Sie führt zwar Befehle aus, aber das Senden der Sensordaten der Base durch die M128 an den PC (Licht L/R, Speed L/R, Bumper L/R vorne/hinten, Objekte L/R vorne/hinten, Motorstrom L/R, Register der Status-LEDs) geht überhaupt nicht mehr. Bestenfalls um etliche Sekunden verzögert...
Streiche ich das Zeug raus, geht wieder alles!!!
Und wenn ich nur alles für die RC5-Adresse rausnehme, geht alles, bis auf Speed L/R, Strom L/R, Bumper vorne und ACS vorne. Das heißt, ACS hinten, Bumper hinten und Helligkeit geht wieder.
Was geht da ab???
Hier mal mein Code ohne RC5-Adr.:
In der Base:
In der M128:Code:... #define I2C_REG_LEDS 27 //#define I2C_REG_RC5_ADR 28 #define I2C_REG_RC5_DATA 28 #define I2C_REG_RC5_TOGGLE 29 #define I2C_REG_BUMP_BACK_L 30 #define I2C_REG_BUMP_BACK_R 31 ... I2CTWI_readRegisters[I2C_REG_LEDS] = (uint8_t)(statusLEDs.byte); //I2CTWI_readRegisters[I2C_REG_RC5_ADR] = (uint8_t)((lastRC5Reception.device)|(lastRC5Reception.toggle_bit<<5)); I2CTWI_readRegisters[I2C_REG_RC5_DATA] = (uint8_t)(lastRC5Reception.key_code); I2CTWI_readRegisters[I2C_REG_RC5_TOGGLE] = (uint8_t)(lastRC5Reception.toggle_bit); I2CTWI_readRegisters[I2C_REG_BUMP_BACK_L] = (uint8_t)(bumper_back_left); I2CTWI_readRegisters[I2C_REG_BUMP_BACK_R] = (uint8_t)(bumper_back_right);
Danke EuchCode:... status_leds_base = messageBuf[24]; //RC5_adr = messageBuf[25]; RC5_data = messageBuf[25]; RC5_toggle = messageBuf[26]; bumper_back_left = messageBuf[27]; bumper_back_right = messageBuf[28]; /*print("RC5-Adr:"); printInteger(RC5_adr); print("\n");*/ print("RC5-Code:"); printInteger(RC5_data); print("\n"); print("RC5-Toggle:"); printInteger(RC5_toggle); print("\n"); print("LEDsBase:"); printInteger(status_leds_base); print("\n"); print("BumpHL:"); printInteger(bumper_back_left); print("\n"); print("BumpHR:"); printInteger(bumper_back_right); print("\n");
Lesezeichen