DinusExperience: Unterschied zwischen den Versionen

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
(Zbus ( ein rs485 netzwerk ))
(Zbus ( ein rs485 netzwerk ))
Zeile 171: Zeile 171:
  
 
<gallery>
 
<gallery>
[[Bild:Zbus_node_PoE.png | 800x600]]
+
Bild:Zbus_node_PoE.png | [[800x600]]
 
</gallery>
 
</gallery>
  

Version vom 10. Juli 2009, 17:29 Uhr

Ziel dieses Projekts

  • mal mit avr's anfangen und verstehen und die "closed software" von pollin durch "open source software" ersetzen

AVR hardware umgebung

  • Programmer: Atmel Evaluations-Board Version 2.0.1 ist fuer avrdude ein pony seriell also: -c ponyser
  • Hier ist ein ponyser programmer zu finden aehnlich wie oben: [ponyser programmer]
  • avr-net-io
  • atmega644
  • geliefert von [http://www.pollin.de]

Software umgebung

Hilfe

  • Die Community ist hier zu finden,
  • dort ist folgendes mitgeteilt/besprochen worden:

Problem mit ponyprog auf dem Atmel Evaluations-Board in Verbindung mit einem usb-rs232 konverter

  • baudrate /dev/ttyUSB0 auf 9600 8N1
avrdude -p m644 -c ponyser -P /dev/ttyUSB0 -t  (avrdude in terminal mode)
  • verbindung mit dem atmega644, kann fuse bits lesen usw. (zb. r lf gibt das low fuse aus sehe manual avrdude)
  • aber avrdude bleibt beim Versuch mit /dev/ttyUSB0 als interface zu flaschen haengen
  • ersatz durch ein kabel an /dev/ttyS0
  • baudrate /dev/ttyS0 auf 9600 8N1
avrdude -p m644 -c ponyser -P /dev/ttyS0 -U flash:w:ethersex.hex -v
  • laeuft dann problemlos durch
  • Das usb-rs232 interface funktioniert jedoch mit der usart vom board tadellos.

Fuse bits

avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lfuse:w:0xE7:m -U hfuse:w:0xDC:m -U efuse:w:0xFF:m

ecmd interface via rs232/ USART

  • wenn in menuconfig unter general > Enable (serial line) Debugging NICHT aktiviert ist, jedoch unter I/O support > usart ecmnd interface aktiviert ist wird die baudrate 19200 verwendet:
screen /dev/ttyUSB0 19200 8N1
  • wenn in menuconfig unter General > Enable (Serial Line) Debugging aktiviert ist und unter I/O support > Usart ecmd interface NICHT wird die baudrate 115200 verwendet: (Quarz > 16Mhz, kein teensy usw.)
screen /dev/ttyUSB0 115200 8N1
  • wenn eine baurate von 19200 oder 115200 nicht passt, weil zB. anderer Quarz oder AVR, dann kann die baudrate in: /protocols/ecmd/via_usart/ecmd_usart.h bzw. /core/debug.h auf den gewuenschten Wert eingestellt werden.

Port I/O und Ecmd

  • der atmega644 hat 4 ports PA PB PC PD
  • PORTNUM ist dann PA=0 PB=1 PC=2 PD=3
  • das Beispiel gibt dann die werten von port PA aus:
io get port 0

um das ddr register von port 3 zu lesen:

die werten werden in hex als zb 0x00 ausgegeben

io get ddr 3 

um das ddr register zu setzen:

hier soll kein 0x prefix mitgegeben worden (so ff und kein 0xff)

io set ddr 3 ff

Named Pins und Ecmd

sehe http://www.ethersex.de/index.php/Named_PIN

  • macht das steuern uebers http einfach und schoen (wenn http server im menuconfig aktiviert ist).
  • in /core/portio/config gibts du pins symbolische namen. Zum Beispiel:
PD7 OUTPUT HIGH Verstaerker

dann kannst du mit ecmnd

 pin set Verstaerker on

an das Ethersex senden, um den pin PD7 zu aktivieren

pin set Verstaerker off

schaltet den Verstaerker, bzw. pin PD7, wieder aus

EcmdScript

Ist stark in entwicklung.

Mit EcmdScript kann mann den ethersex als ein SPS (PLC) einsetzen.

Eine Speicherprogrammierbare Steuerung (SPS, engl. Programmable Logic Controller, PLC) ist eine Baugruppe, die zur Steuerung oder Regelung einer Maschine oder Anlage eingesetzt wird

english : http://en.wikipedia.org/wiki/Programmable_Logic_Controller

deutsch : http://de.wikipedia.org/wiki/Programmable_Logic_Controller

Beschreibung http://www.ethersex.de/index.php/ECMDScript

Achte auf spaces EcmdScript ist da kritisch.

Wenn ein ecmd space(s) hat bei if dan es ein alias geben z.b. $get_heizung = pin get Heizung

if ( $get_heizung eq off ) then echo es ist warm genug

Textvergleiche sind: eq und ne

  • VARIABLEN

Standard sind da 4 VARIABLEN nahme: 1 2 3 4

Nur zahlen. Nahmen geht nicht.

Das Anzahl ist zu aendern in

 Applications  --->
  [*] ECMD (Etherrape Control Interface) support  ---> 
    [*] ECMD Scripting  --->
        (4)   Maximum number of variables 

Alias eingeben

 Applications  --->
  [*] ECMD (Etherrape Control Interface) support  ---> 
    [*] ECMD Scripting  --->
      [*] Alias Command Names  --->

Fuer Named Pins

zb.ein alias eingeben (wenn nicht mit make menuconfig dann mit ein editor in protocols/ecmd/alias_defs.m4)

alias_ifdef(NAMED_PIN_SUPPORT)
  alias("Heizung", "pin get Heizung")
alias_endif()

einfuegen

Netzwerk-Einstellung aendern

zB. mit:

ip 10.0.0.180

wird die ip geaendert

netmask 255.255.0.0

aendert die netmask

gw 10.0.0.222

das gateway

und dann ein

reset

eingeben, um die aenderungen zu uebernehmen.

Yport ( ethernet - rs232 converter )

  • ist ein ethernetz zu rs232 konverter.

zu erreichen mit default portnummer 7970

ist auch zu aendern in menuconfig wenn gewuenscht.

den baudrate kann mann in menuconfig einstellen

zb. mit

nc ipnummer-ethersex 7970

bekommt dann ein geraet an den rs232 ein terminal.

wenn es ungewuenschte echo's gibt in terminal dan die verbindung machen mit:

stty -icanon -echo && nc ipnummer-ethersex 7970

als die verbindung getrennt ist ein blindes reset eingeben und der terminal ist wieder in normale mode.

  • alternativ kannst du auch stty -icanon -echo; nc ipnummer 7970; stty icanon echo eingeben, dann sollte er das Echo gleich wieder aktivieren und in den Cooked-Mode schalten --Stella 11:14, 7. Jul. 2009 (UTC)

Zbus ( ein rs485 netzwerk )

Wichtig - erst dies lesen : http://www.ethersex.de/index.php/Network_Bridges

Hier findet mann die anschluss von atmega8 an atmega644 http://www.ethersex.de/index.php/Bild:Zbus.pdf

Aufbau von ein rs485 netz http://archive.chipcenter.com/embapps/emba062.htm

Bild 1 gibt ein richtige aufbau.

Dort kann mann am ende des artikel auch als pdf downloaden.Die bilder von htm sind deutlicher als von den pdf.

Protokoll sehe http://www.ethersex.de/index.php/ZBus_Protokoll

Den PC als host sehe http://www.ethersex.de/index.php/ZBus_Serial_Host

Zbus node:

LCD ausgabe

sehe http://www.ethersex.de/index.php/LCD

wissenswert bei make menuconfig

  • irc-client

zu erreichen mit >Applications>irc-client(Experimental)

geb dort ein existierende irc ip nummer ab zb fuer ethersex mit das host command in ein terminal

host irc.freenode.net

dan werden die ip nummer ausgegeben.

waehle ein und gebe das ip ein bei: server ip

channel ( zb ethersex ist ok)

Nickname is total frei :)

Bei Applications ECMD (Etherrape Control Interface) support aktivieren.
Bei Applications>ECMD (Etherrape Control Interface) support>IRC (EXPERIMENTAL) aktivieren.


  • netstat (soll mann aktivieren ist gefahrlos nur als danke schoen an die coders von ethersex)

einstellen mit >Applications>Systemclock support und dann da

date+time aktivieren
cron deamon (static jobs) aktivieren

zuruck nach

Applications>netstat client aktivieren

alles ist da schon richtig eingegeben (nichts aendern)

alle werden dan in http://www.ethersex.de/~habo/stat/ gelistet nur mit zeit und mac