Discussion:
[ethersex-devel] I2C 16bit I/O-Expander bei Startup auf Output setzen
Andreas Gäde
2016-01-15 11:09:33 UTC
Permalink
Hallo zusammen

Ich betreibe sieben PCA9555 am I2C eines Atmel644. StandardmÀßig werden die
PCA9555 bei einem Startup immer wieder auf Input gesetzt. Ich stelle dann
per ECMD drei der sieben PCA9555 auf Output (die PCA9555 lassen sich
Ìbrigens auch mit den max7311 ECMD Befehlen bedienen). Schön wÀre es
natÃŒrlich, wenn das beim Startup gleich mit gemacht wird. Wie bzw. wo im
Sourcecode kann ich das realisieren? Ich hab schon versucht, dass selbst
rauszufinden und den Sourcecode versucht zu verstehen. Leider bin ich nur
ein Gelegenheitsprogrammierer, sodass mir dabei noch kein Licht aufgegangen
ist.
FÃŒr eure Tipp schon mal danke im Voraus

Viele GrÌße
Andreas
Meinhard Ritscher
2016-01-15 20:55:10 UTC
Permalink
Post by Andreas Gäde
Ich hab schon versucht, dass selbst
rauszufinden und den Sourcecode versucht zu verstehen.
Mir fallen 2 Moeglichkeiten ein.
Ein Control6 - Skript (habe ich aber noch nie gemacht)

oder Plain C

Hier waere die wiki-Seite
http://www.ethersex.de/index.php/Own_module_%28Deutsch%29
ein guter Startpunkt

Im Sourcecode gibt es ein Beispiel, mit dem man starten kann:

https://github.com/ethersex/ethersex/tree/master/services/appsample

Meine Loesung ware auf die Schnelle diese:

Unter services kann ein eigenes Modul erstellt werden, welches im Prinzip nur
eine Funktion benoetigt.
z.B. void pca9555_init()

Das diese beim Start aufgerufen wird, stellt folgende Magie sicher:

/*
-- Ethersex META --
header(services/PCA9555Output/pca9555_out.h)
init(pca9555_init)
*/

An das Ende der c-Datei packen.


Wenn MAX7311-Befehle funktionieren, findet sich eventuell hier eine Funktion,
welche Du verwenden kannst:
https://github.com/ethersex/ethersex/blob/master/hardware/i2c/master/i2c_max7311.h
Diese muss in obiger init-Funktion mit den entsprechenden Parametern
aufgerufen werden.

Damit das alles funktioniert:
Annahme: Das eigene Modul bekommt das Verzeichnis PCA5555Output:
./services/config.in anpassen:

source services/PCA5555Output/config.in

Unter services/PCA5555Output muessen diese 4 Dateien erstellt werden:

Makefile
-----------------
TOPDIR ?= ../..
include $(TOPDIR)/.config

$(PCA9555_SUPPORT)_SRC += services/PCA5555Output/pca9555_out.c

##############################################################################
# generic fluff
include $(TOPDIR)/scripts/rules.mk
-----------------

config.in
--------------------------
dep_bool "PCA9555 Output" PCA9555_SUPPORT $I2C_MAX7311_SUPPORT
--------------------------

pca9555_out.h
pca9555_out.c

Ach und nicht vergessen: In make menuconfig das eigene Modul unter
Applications auch anschalten.

Kann sein, dass es da noch einen viel einfacheren Weg gibt.
Viel Erfolg!

Gruss
Meinhard

Loading...