ZBus Serial Host (Deutsch)
Da der ZBus auf dem USART Feature basiert, welches alle ATmegas haben, können wir einfach eine ZBus Netzwerkschnittstelle an unserem Computer anschließen. Die serielle Schnittstelle (auch bekannt als COM-Port oder RS232) ist nur eine normale USART mit Pegelwandler (-3V - +15V). Um eine RS485-Schnittstelle daraus zu machen, welche für den ZBus benötigt wird, nimmt man einen MAX232 (oder funktional ähnlich), um das RS232-Signal wieder in ein USART TTL-Signal zu wandeln. Ein RS485-Interface-Chip (z.B. ein MAX485, siehe Bild) konvertiert daraus das Differenzsignal.
Einige Embedded-Gerät haben USARTs an Bord, die keinen Signalwandler besitzen- sie bieten das USART TTL-Signal direkt an. Man muss dann nur noch den RS485-Chip verbinden und den Treiber für die Architektur kompilieren. Der populäre Linksys WRT54G (WLAN-Router mit OpenWRT) ist so ein Embedded-Gerät mit einer TTL-USART an Bord.
Auf der Software-Seite habe ich beschlossen, einen userland driver mit tun device anstatt eines Kernel-Moduls zu schreiben, weil es viel einfacher zu codieren und zu debuggen ist. Das Programm stellt eine übliche Netzwerkschnittstelle wie die Ethernet-Karte bereit und kann auch wie Diese verwendet werden (zum Beispiel Routing, verschiedene IP-Adressen und so weiter). Das ist sehr flexibel. Man kann den Treiber-Daemon bei contrib/zbus-serial-host finden.
zbus0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:192.168.9.1 P-t-P:192.168.9.1 Mask:255.255.255.0 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:174 Metric:1 RX packets:16418 errors:0 dropped:0 overruns:0 frame:0 TX packets:16423 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:1381934 (1.3 MiB) TX bytes:1379532 (1.3 MiB)