Benutzer-Werkzeuge

Webseiten-Werkzeuge


softwarebausteine:ansteuerung_gbm16t

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
softwarebausteine:ansteuerung_gbm16t [2014/08/16 20:55] wolfgangsoftwarebausteine:ansteuerung_gbm16t [2014/09/17 12:09] opendcc
Zeile 1: Zeile 1:
 +====== Ansteuerung eines GBM16T ======
 +===== Kommunikation mit dem GBM16T =====
 +Der GBM16T ist über eine serielle Schnittstelle angebunden, diese Schnittstelle transportiert mit 250k, 8N1 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