Benutzer:Gvegidy
Ethersex ohne Ether und ohne 6
Das ist meine Experimentierplatine. Der USB-Anschluß an den Rechner wird über einen FT232R von FTDI-Chip realisiert. Das ist ein einfacher und gängiger USB-Seriell-Konverter, zu sehen auf der grünen Adapterplatine.
Das Ding hat hier 2 Funktionen:
- Serielle Verbindung für das ZBUS-Protokoll, aber eben ohne RS485. Schnelle und stabile USB-Ethersex-Verbindung
- Programmierung des Atmegas. Über den Bitbang-Modus des FT232s kann ich Reset, SCK, MISO und MOSI des Controllers direkt ansteuern und so den Atmega ohne weitere Programmieradapter, -Stecker etc. programmieren.
Nicht von dem RJ45-Stecker verwirren lassen, ich hab keinen ENC auf der Rückseite versteckt oder so. Der ist nur für den Anschluß von Sensoren und anderem gedacht.
Ansteuerung auf dem PC
Für den FT232R (und auch die anderen Chips von FTDI) gibt es den Kerneltreiber ftdi_sio, der automatisch ein tty wie z.B. /dev/ttyUSB0 anbietet.
Mit dem ZBus_Serial_Host kann ich das dann so mit meinem Netzwerk verbinden:
zbus-serial-host -r 460800 -d /dev/ttyUSB0 -a 192.168.23.1/24
Geschwindigkeit
Ich wollte mal die Geschwindigkeit testen und hab dafür avrnetio verwendet.
Der Atmega168p läuft mit 18.432 MHz und lässt sich damit mit maximal 460800 Baud ansteuern. Bei 921600 Baud ging nichts mehr, vermutlich kommt das nächste Byte noch innerhalb des Receive-Interrupts. Mögliche Zwischenwerte wie z.B. 691200 hab ich nicht probiert, weil auf dem PC dann das Setzen der Baudrate komplizierter wird.
Beantwortete Anfragen pro Sekunde | Weg der Anfrage | gesandtes ECMD |
299 | serielles ZBUS über FT232R, 460800 Baud | whm |
250 | serielles ZBUS über FT232R, 460800 Baud | adc get |
Wenn man das mit den auf ECMD geposteten Werten vergleicht, liegt diese Form der Anbindung etwa bei der halben Geschwindigkeit eines ENC28J60.
Alle Werte wurden mit einer von mir verbesserten Version von zbus-serial-host gemessen, zu finden unter [1].