Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
wbus_addr [2017/02/28 14:28]
wikiadmin
wbus_addr [2017/07/16 11:15]
wikiadmin ↷ Seite von pages:wbus_addr nach wbus_addr verschoben
Zeile 6: Zeile 6:
  
 Die Adresse des Absenders wird im oberen Nibble (Bits 4-7) und die des Empfängers im unteren Nibble (Bits 0-3) hinterlegt. Um nun ein ADDR-Byte zu erzeugen muss die Absenderadresse um 4 Bit nach links geschoben und mit der Empfängeradresse verodert werden. Die Adresse des Absenders wird im oberen Nibble (Bits 4-7) und die des Empfängers im unteren Nibble (Bits 0-3) hinterlegt. Um nun ein ADDR-Byte zu erzeugen muss die Absenderadresse um 4 Bit nach links geschoben und mit der Empfängeradresse verodert werden.
 +
 +Da die Adresszuordnung im W-Bus Protokoll festvorgegeben ist (jeder Gerätetyp hat seine eigene Adresse), ist es sinnvoll von der Verwendung statischer Zahlenwerte im Code abzusehen und stattdessen lieber mit Platzhaltern zu arbeiten. Daher sind hier die beiden wichtigsten gleich mit umgesetzt.
  
 ===== Umsetzung ===== ===== Umsetzung =====
  
 <​code>​ <​code>​
 +#define WBUS_ADDR_HEATER 0x4   // W-Bus address of heating device (fixed)
 +#define WBUS_ADDR_DIAG ​  ​0xF ​  // Our own W-Bus address (use 0xF to act as diagnose-software)
 +
 +...
 +
 /** /**
  * Return ADDR byte of source/​destination addresses given  * Return ADDR byte of source/​destination addresses given
Zeile 20: Zeile 27:
 ===== Anwendung ===== ===== Anwendung =====
  
-<code c>+ADDR-Byte mit festen Zahlenwerten als Adressen generieren: ​<code c>
 byte addr; byte addr;
 addr = wbus_addr(0x4,​ 0xf); addr = wbus_addr(0x4,​ 0xf);
 +</​code>​
 +
 +ADDR-Byte mit Ersetzungsnamen als Adressen generieren: <code c>
 +byte addr;
 +addr = wbus_addr(WBUS_ADDR_HEATER,​ WBUS_ADDR_DIAG);​
 </​code>​ </​code>​