Benutzer:Gvegidy: Unterschied zwischen den Versionen

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
K (avrnetio kann mittlerweile auch udp)
(meine branch ist gemerged)
Zeile 41: Zeile 41:
  
 
Wenn man das mit den auf [[ECMD]] geposteten Werten vergleicht, liegt diese Form der Anbindung etwa bei der halben Geschwindigkeit eines ENC28J60.
 
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 [http://github.com/gvegidy/ethersex/tree/improve-zbus-serial-host].
 

Version vom 31. Dezember 2009, 15:56 Uhr

Ethersex ohne Ether und ohne 6

Atmega168p mit FT232R

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 TCP, serielles ZBUS über FT232R, 460800 Baud whm
250 TCP, 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.