Inhaltsverzeichnis
Ansteuerung eines GBM16T
Kommunikation mit dem GBM16T
Der GBM16T ist über eine serielle Schnittstelle angebunden, diese Schnittstelle transportiert mit 250k, 9N1 bidirektional die Daten. Es wird ein Format [size] payload [crc8] verwendet. Die payload unterteilt sich in Befehlsart und Parameter und wird über eine einheitliche Datei tp_tc_interface.h festgelegt. Die CRC-Prüfung erfolgt analog zu BiDiB selbst, d.h. die Routinen zur CRC-Prüfung sind im Zielsystem i.d.R. bereits vorhanden.
Notwendige Definitionen
Die Module für den GBM16T brauchen folgende defines, diese sind in addon_model.h hinterlegt:
#define NUM_of_GBM16T 1 #define NUM_of_TRACKS 16 #define NUM_of_ADDR_per_TRACK 4 #define XPRESSNET_ENABLED 0
Zusätzliche Programmmodule
ci0_serial: Hier erfolgt die Kommunikation über die serielle Schnittstelle; die Interrupts für Senden und Empfangen können bei 250kBaud alle 40us kommen, länger darf der zugewiesene Interruptlevel nicht blockiert sein.
occupancy: Hier werden Adressen und Belegtmeldungen verwaltet und auch die Kommunikation zum GBM16T abgewickelt und der Zustand des GBM16T überwacht. Das Modul benutzt eine zentrale Datenstruktur gbm_t, welche Verbindungsstatus, timeout und auch alle Belegungen der einzelnen Tracks (occupied und Adresse) speichert. occupancy bringt folgende, wichtige Routinen mit:
void set_gbm_confidence(uint8_t tp, uint8_t alive); void set_track_occupied(uint8_t tp, uint8_t index); void set_track_free(uint8_t tp, uint8_t index); void set_track_addr(uint8_t tp, uint8_t index, uint16_t* addr); void init_occupancy(void); t_cr_task check_sys_stat(void);
Durch diese Module kommen drei neue Echtzeitstasks ins System:
t_cr_task control_if(void); Kommuniziert mit den GBM16T, Fifoverwaltung t_cr_task check_sys_stat(void); Verwaltet die Daten zum Status und Belegung t_cr_task secure_ack(void); Uüberwacht die Verbindung zum Host und wiederholt Belegtmeldungen.
Diese Tasks werden entsprechend angelegt, wobei die Definitionen jeweils mit #if (NUM_of_GBM16T > 0) konditional angelegt werden.
Zusätzliche Features
FEATURE_BM_ISTSPEED_AVAILABLE Der GBM16T kann es, also ist per default auf 1 zu setzen, der mögliche Wertebereich ist 0 oder 1.
FEATURE_BM_ISTSPEED_INTERVAL Hier ist eine Defaultwert von 100 sinnvoll, der Wertebereich von 0 bis 200
FEATURE_BM_DYN_STATE_INTERVAL Hier ist eine Defaultwert von 5 sinnvoll, der Wertebereich von 0 bis 20