Hallo
Ich hätte durchaus Lust an dem Projekt teilzunehmen. Leider wird es mir nicht möglich sein so ein Team zu gründen, da ich kurz vor meiner Abschlussprüfung zu mittleren Reife stehe.
Aber ich hab schon mal angefangen
Also, das ist der Code von meinem Programm, dass die Controller-ID im HighSpeed-Modus ausliest. Da es aber jeder verstehen soll hab ich mal nur den Ablauf selbst zusammengeschrieben:
Code:
Reset, in dem man RTS für ca. 1-2ms setzt
ComPort im ASCII-Modus öffnen (Low-Speed):
- 38400 Baud
- keine Parität
- 8 Datenbits
- 1 Stopbit
- RTS so setzen, dass RP6 nicht
resettet
Warten, bis der RP6 ein "[RP6BOOT]" gesendet hat
Die Erkennungs-ID auslesen:
- Ein ASCII-Zeichen mit dem Wert 072 senden
- Warten, bis der RP6 9 Zeichen gesendet hat
- Base-Board: 082; 080; 054; 058; 001; 001; 004; 005; 000
- M32-Board: 082; 080; 054; 058; 002; 001; 004; 003: 000
Falls Base-Board angeschlossen: Akkuspannung auslesen:
- Ein ASCII-Zeichen Wert 149 senden
- Wartet bis RP6 2 Zeichen gesendet hat
- Spannung = (ASCII-WERT1+256*ASCII-WERT2)/100
Highspeed setzen:
- Ein ASCII-Zeichen Wert 53 senden
- Warten, bis RP6 ein ASCII-Zeichen Wert 70 sendet
- Comport im ASCII-Modus öffnen (High-Speed):
- 500000 Baud
- keine Parität
- 8 Datenbits
- 1 Stopbit
- RTS so setzen, dass RP6 nicht
resettet
Prüfen, ob RP6 reagiert:
- Zeichenfolge senden:
170; 170; 170; 170; 170; 153
- Warten, bis RP6 170 und 086 sendet
Wieder die Erkennungs-ID auslesen:
- Ein ASCII-Zeichen mit dem Wert 072 senden
- Warten, bis der RP6 9 Zeichen gesendet hat
- Base-Board: 082; 080; 054; 058; 001; 001; 004; 005; 000
- M32-Board: 082; 080; 054; 058; 002; 001; 004; 003: 000
[[ HIER SOLL DER UPLOAD ERFOLGEN ]]
ComPort im ASCII-Modus öffnen (Low-Speed):
- 38400 Baud
- keine Parität
- 8 Datenbits
- 1 Stopbit
- RTS so setzen, dass RP6 nicht
resettet
Warten, bis der RP6 ein "[READY]" sendet
Das ganze ist so auch aus der DEBUG-Ausgabe zu entnehmen, aber ich bin der Meinung, dass es so viel übersichtlicher ist.
Viel Spaß damit!
MfG
-schumi-
[EDIT] NACHTRAG!!
Mir ist auch noch was eingefallen was wir impletieren könnten. (Easy zu realieren und sehr praktisch):
Die *.Hex liegt ja normalerweise im selben ordner wie der Code als *.c
Man könnte ja jetzt den Code Zeile für Zeile einlesen und dann checken ob entweder ein
#include "RP6RobotBaseLib.h"
oder ein
#include "RP6ControlLib.h"
enthalten ist. Und da der RP6/M32 beim Verbinden auch seine ID preisgibt könnte man dann kontrollieren, ob der Code auch für dieses Board geschrieben ist. Das verhindert dann das Laden von Code in den falschen Controller, was beim starten des Programms zu beschädigungen führen könnte...
Lesezeichen