Benutzer-Werkzeuge

Webseiten-Werkzeuge


softwarebausteine:ansteuerung_gbm16t

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

softwarebausteine/ansteuerung_gbm16t.txt · Zuletzt geändert: 2016/01/09 13:08 von Michael

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki