fabiansch / esep_sortingmachine

0 stars 1 forks source link

Frage: Datenanteil der Sensor Pulse Messages #2

Closed fabiansch closed 7 years ago

fabiansch commented 7 years ago

Moin Herr Korf,

ist die Annahme korrekt, dass es von der Sensorik nur zwei unterschiedliche Pulse Message Typen gibt, die von der HAL an die Softwareschicht gesendet werden?

  1. Pulse Message mit Informationen PORT B und dessen Byte Werte
  2. Pulse Message mit Informationen PORT C und hörwertigen 4 Bits.

Die Softwareschicht generiert dann aus dem Vergleich der alten Werte der entsprechenden Ports Signale wie z.B. light_barrier_0_interrupted?

Dem spricht entgegen, dass die Softwareschicht nichts über die Bitlogik wissen sollte, aber kann man in einer ISR denn mehrere Pule Messages abschicken?

Liebe Grüße, Fabian Schimke

FranzKorf commented 7 years ago

Guten Abend Herr Schimke,

die ISR kann nur eine Pulse Message schicken. Wenn sich zeitlich zum Beispiel zwei Bits von Port B ändern, dann muss die ISR dies in einer Pulse Message übertragen. Was ist den eigentlich, wenn sich an Port B und den Input-Pins von Port C etwas gleichzeitig ändert? Da muss man mal schauen, wie die Karte die Interrupts behandelt.

Nun zum Thema "Die SW Schicht soll nichts über die Bitlogik" wissen. Diese Sicht teile ich. Da kann man mehrere Wege gehen: (1) Man macht das Demultiplexing in die logischen Events in der ISR. Das widerspricht der Regel "Mache die ISR möglichst klein und einfach". Warum, besprechen wir demnächst in der VL.

(2) Man macht das Demultiplexen in der HAL. Hier gibt es wieder zwei Möglichkeiten. Zum einen kann die HAL entsprechende Funktionen anbieten. Oder in der HAL läuft ein Thread, der die Pulse Messages der ISR erhält und diese demultiplext. Dieser Thread kann dann z.B. mehrere Pulse Messages an einen Chanel schicken. Diese Kommunikation kann auch auf andere Weise ablaufen.

Klärt das die Frage?

Mit freundlichen Grüßen

Franz K.