hallo,
ich flashe mein prog auf atmel atmega8 aber Asuro macht immer das Selbe, egal was ich mache.
woran kann das liegen??
hallo,
ich flashe mein prog auf atmel atmega8 aber Asuro macht immer das Selbe, egal was ich mache.
woran kann das liegen??
Und was ist das Problem? Was ist "Selbe"? Und was hast du gemacht? Welcher änderungen sind gemacht ohne Erfolg?
Ich habe nur die folgende Merkwürdigkeiten gefunden:
Ist dein Master Programm eigentlich richtig Compiliert? Deine Funktionen "fahren" und "fahren2" haben beide 2 Parametern (distance, speed). Aber in den main Funktion werden sie mit 3 Parametern angerufen ( +/- 1000, 0 und 180). Da musste es doch eigentlich Compiler Fehler gegeben haben.
In dem Slave Programm benutzt du den Odometrie. Aber auch die BackLEDs werden an geschaltet. Das geht nicht zusammen. Nur in EncoderInit werden die BackLEDs aus geschaltet und die Odometrie LEDs angeschaltet. Sonnst wird dort nicht genug IR-licht auf den Scheiben fallen. EncoderInit wird nur Einmal am Anfang der Slave Main Funktion angerufen. Konklusion: in die 2te Durchlauf von GoTurn werden die Encoderticks nicht richtig erkannt. Das erklärt vielleicht wieso der Slave nur ein Halbkreis macht. Die 2 Sekunden kann ich nicht erklären. (Bluetooth Verbindung wieder erstellen vielleicht?)
Ich habe auch aber nog einige weitere Fragen an dich. Verstehst du eigentlich was passiert in die fahren, fahren2 und GoTurn Funktionen? In den Master Funktionen sendest du ein 'C' oder 'V' bei jeder Durchlauf der While-schleife die den Abfahrt kontrolliert. Wie lange dauert einer While-rundgang nach deiner Idee? Wie oft wird ein C oder V gesendet? Und wie lange braucht den Slave Asuro einer diesen 2 Kommando Zeichen ab zu arbeiten? Wie lange braucht er für ein ganzen Kreis zu machen?
Bitte vergesse das Gyro jetzt. Sicher in einer Kombination mit Master-Slave Kommunikation. Ich empfehle dich erst mit ein einziges Programm rum zu spielen das die Odometriefahrt genau so macht wie du das erwartest. Und wenn es nicht macht was du versuchst, du das genauer analysiert. Verwende den Bluetooth als Debugge-meldung Stelle. Sende den geänderte Variablen und Programm Zustanden über die Serielle Schnittstelle zu den PC. Dann kannst du besser beobachten was ein Programm genau macht. (Oder wichtiger, worauf er sein Entscheidungen basiert!) Vielleicht muss du den Baudrate dafür etwas höher einstellen. Mit 2400 baud kostet ein Zeichen schon eine ganze Weile. Ungefähr 4 Milisekunden. In diesen Zeit sind schon 20 Odometrie Beleuchtungswerten gemessen in den ADC.
Geändert von Valen (26.11.2012 um 21:13 Uhr)
[QUOTE=Valen;565194]Und was ist das Problem? Was ist "Selbe"? Und was hast du gemacht? Welcher änderungen sind gemacht ohne Erfolg?
ich habe mit einem simplen Prog. versucht (gerade aus fahren), und aud dem ersten Asuro geflasht und er dreht sich immer im Kreis auf dem anderen fährt eine krze strecke und dreht sich auch , danach habe ich mit einem anderen prog. probiert, und die machen immer die gleiche Bewegung.
P.S. auf einen dritten Auro ohne Bluetooth und Gyro funktierts es gut.
[QUOTE=frankfurter;565215]Diese Fragen habe ich gestellt damit du vielleicht etwas Präziser wird in deine Erklärungen. Leider ist meiner Magi Glaskugel im Reparaturshop. Und danach hat es Weihnacht/Neujahr Ferien.ich habe mit einem simplen Prog. versucht (gerade aus fahren), und aud dem ersten Asuro geflasht und er dreht sich immer im Kreis auf dem anderen fährt eine krze strecke und dreht sich auch , danach habe ich mit einem anderen prog. probiert, und die machen immer die gleiche Bewegung.
P.S. auf einen dritten Auro ohne Bluetooth und Gyro funktierts es gut.
Was ist die Code von diese genannte "simplen" Programmen? Deine 2 Programmen oben wurde ich nicht als simpel/einfach kennzeichnen. Die Interaktion zwischen der Master und Slave Programm (eben einseitige Interaktion Ma->Sl) macht das kompliziert weil die Timing nicht übereinstimmt.
Jeder Asuro Robot ist verschieden in seine Bau. Das gilt auch für die Elektronik Teilen. Also, braucht jeder Asuro seine eigene Asuro-Bibliothek wo seine Werten (zbs. die Odometrie Beleuchtung Grenzwerten in myasuro.h) mit rein kompiliert werden. Oder man schreibt ein Programm/Lib erweiterung das die 'persönliche' Werten bei Anfang kalibriert und später in dein Programm verwendet. Die letzte Lösung ist Universal, aber auch viel mehr aufwand.
Wenn es auf eine andere Asuro ohne Bluetooth und Gyro gut fünktioniert gibt es 3 Mögliche Ursachen:
- Diese 3te Asuro ist Speziel ge-eignet für die Werten in dem Lib.
- Die Bluetooth Hardware ist auf ein Art angeschlossen das die andere Asuro Funktionen stört.
- Die Gyro Hardware ist auf ein Art angeschlossen das die andere Asuro Funktionen stört.
Von außen beobachten von Asuro's verhalten wirst du nicht viel weiter helfen. Eine ganze menge von Überlegungen, Berechnungen und Beürteilungen gehen rund in Asuro's kopf. Und dabei, auch noch Rasend-schnell. Wies schon gesagt, benutze die Bluetooth Übertragung für die Ermittelung seine inneren Gedanken. Sonnst ist es nur Raten was er macht. Oder warum er es nicht macht.
Lesezeichen