Forum: Mikrocontroller und Digitale Elektronik PCF8574 per i2cset ansprechen


von Martin F. (pingufreak83)


Lesenswert?

Hi,

ich möchte einen PCF8574 unter Raspian per i2cset ansprechen. Leider 
kann ich keinen einzelnen Port auf Low/High setzen. Per 0x00 werden alle 
Ports auf High gesetzt. Alles andere setzt alle Ports auf Low.

root@raspberrypi:~/src/relais_i2c# i2cset -y 1 0x27 0x00
root@raspberrypi:~/src/relais_i2c# i2cset -y 1 0x27 0xFF

Welchen Befehl muss ich ausführen, um z.B. nur den Port P0 vom PCF8574 
zu aktivieren?

Hat jemand eine Idee?

Danke!

Viele Grüße,

pingu

von Martin F. (pingufreak83)


Lesenswert?

Hi,

ich habs jetzt alleine geschafft und das Modul erfolgreich kompiliert.

Hier eine Kurzanleitung, falls es jemand anderes mal gebrauchen kann:

export https_proxy=http://x.x.x.x:3128 # < falls überhaupt notwendig
cd /usr/src/
wget https://github.com/raspberrypi/linux/archive/rpi-3.6.y.tar.gz
tar xvfz rpi-3.6.y.tar.gz
ln -s /usr/src/linux-rpi-3.6.y /lib/modules/3.6.11+/build
cd /lib/modules/3.6.11+/build
make mrproper
gzip -dc /proc/config.gz > .config
make modules_prepare
wget 
https://github.com/raspberrypi/firmware/raw/master/extra/Module.symvers
mkdir -p /root/src/kernel_compile
cd /root/src/kernel_compile
make -C /lib/modules/3.6.11+/build M=/root/src/kernel_compile/ modules
insmod gpio-pcf857x.ko
echo pcf8574 0x27 > /sys/class/i2c-adapter/i2c-0/new_device

Danach sollten die GPIO's über das sysfs erreichbar sein:

ls /sys/class/gpio/gpiochip248

:)

Ich verwende solche mjkdz Boards von Ebay. Die PCF8574 Bezeichnungen 
sind dort abgeschliffen (Copyright?). Funktioniert aber prima:

[ 1199.318010] i2c i2c-1: new_device: Instantiated device pcf8574 at 
0x27

Die sind sehr günstig und normalerweise für HD44780 Displays gedacht. 
Können aber auch für andere Zwecke verwendet werden. Ich werde damit ein 
paar LED's und Relais schalten.

Lg

pingu

von Martin F. (pingufreak83)


Lesenswert?

Hier noch ein kleines gpio_setup Skript:

#!/bin/bash

for ((gpio=248; gpio<=255; gpio++)); do
 echo ${gpio} > /sys/class/gpio/export
 echo out > /sys/class/gpio/gpio${gpio}/direction
done


Danach einfach:
echo 1 > /sys/class/gpio/gpio248/value # ausschalten
echo 0 > /sys/class/gpio/gpio248/value # einschalten

Die Pins sind GND, VCC liegt dann immer an. Also umgedreht wie üblich, 
deswegen ist ein High (echo 1) auch ein ausschalten und Low (echo 0) ein 
einschalten :).

Lg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.