no puede cambiar los estados de los LED utilizando PCA9685

1

Tengo un PCA9685 IC conectado a i2c de un tablero similar a un tablero. También el pin OE está conectado a un pin GPIO. Estoy usando ic2tools para comunicarme con PCA9685, puedo leer / escribir en registros sin ningún problema, pero los cambios que hago en los registros no surten efecto, los LED no los cambian de estado.

Hay 4 leds RGB conectados a través de una resistencia a PCA9685 (como se muestra en la hoja de datos de la Fig. 15 de PCA9685), esto es, se están utilizando 12 canales. No importa el valor que escribo en los registros PWM, el estado de los LED es siempre el mismo, por extraño que parezca, los colores no son iguales para cada LED. 1 LED tiene rojo, 1 LED tiene azul, 1 magenta y 1 blanco. Sin embargo, los colores no son aleatorios, siempre apago / enciendo PCA9685 los mismos colores son asumidos por los mismos LEDs.

Puedo encender / apagar todos los LED cambiando el estado del pin OE.

Aquí está el código que estoy usando para probar.

#!/bin/bash

set -e

PCA9685_BUS=1
PCA9685_ADDR=0x41
PCA9685_OE="pi15"

# config GPIO as output and set initial state
${PWD}/gpio_config.sh "$PCA9685_OE" "out" "1"

# set output logic as inverted
i2cset -y $PCA9685_BUS $PCA9685_ADDR 0x01 0x10

# restart
i2cset -y $PCA9685_BUS $PCA9685_ADDR 0x00 0x91
sleep 1

# change to normal mode
i2cset -y $PCA9685_BUS $PCA9685_ADDR 0x00 0x01
sleep 1

for (( i = 0x06; i <= 0x45; i++ )); do
    i2cset -y $PCA9685_BUS $PCA9685_ADDR $i 0x0F
done

Al ejecutar i2cdump puedo ver que los registros se cambiaron.

[root@board test]# i2cdump 1 0x41
No size specified (using byte-data access)
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1, address 0x41, mode byte
Continue? [Y/n] 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 01 10 e2 e4 e8 e0 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f    ????????????????
10: 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f    ????????????????
20: 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f    ????????????????
30: 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f    ????????????????
40: 0f 0f 0f 0f 0f 0f XX XX XX XX XX XX XX XX XX XX    ??????XXXXXXXXXX
50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
f0: XX XX XX XX XX XX XX XX XX XX 00 00 00 00 1e 00    XXXXXXXXXX....?.

He probado otros valores distintos a 0x0F, mismo problema.

¿Alguna idea sobre lo que puede estar pasando?

    
pregunta Ricardo Crudo

0 respuestas

Lea otras preguntas en las etiquetas