PCF8574 per i2cset ansprechen

#3259461
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
#3259602
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
#3259630
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren