We have upgraded the community system as part of the upgrade a password reset is required for all users before login in.

GPIO PWM



  • @György-Farkas said in GPIO PWM:

    rmmod /lib/modules/4.14.81/p44-ledchain.ko

    Thanks @György-Farkas yes had the commands correct but seems there was some issue with my reflow oven, dry joins all over the place. 😞 Got everything working now, 2 x WS2812B looks really amazing in my casings.



  • For the record, you can cause ledchain to load the module with the required parameters by modifying the file
    /etc/modules.d/91-p44-ledchain



  • @crispyoz said in GPIO PWM:

    For the record, you can cause ledchain to load the module with the required parameters by modifying the file
    /etc/modules.d/91-p44-ledchain

    The firmware loads the 'p-44-ledchain.ko' module and makes the default 'ledchain2' without this file too.

    But you are right, we can modify the default ledchain and load the module with this file.
    For example if the edited file contains these parameters
    p44-ledchain ledchain0=<inverted>,<numberofleds>,<ledtype>[,<maxretries>[,<maxTpassive>]]
    then after a system restart (with a reboot command, press the RESET BUTTON or whit a power OFF - ON cycle) 'ledchain0' will be the default one.

    Question: Can you restart the 'p-44-ledchain.ko' module without restart Omega2?


    It's possible to use and modify on-the-fly more than one ledchain with the following commands and without restart Omega2:
    rmmod /lib/modules/4.14.81/p44-ledchain.ko
    insmod p44-ledchain ledchain<PWMno>=<inverted>,<numberofleds>,<ledtype>[,<maxretries>[,<maxTpassive>]]

    For example:
    omega2-ctrl gpiomux set pwm0 pwm
    omega2-ctrl gpiomux set pwm1 pwm

    rmmod /lib/modules/4.14.81/p44-ledchain.ko
    insmod p44-ledchain ledchain0=0,8,1
    echo -en '<string of bytes>' > /dev/ledchain0

    rmmod /lib/modules/4.14.81/p44-ledchain.ko
    insmod p44-ledchain ledchain1=0,8,2
    echo -en '<string of bytes>' > /dev/ledchain1
    and so on ...

    Unfortunately I can't restart the module without unload and reload it again 😞


    Did you know?

    You should use a 3.3V to 5V level shifter between the Omgea2/MT7688 PWM pin and the LED chain for reliable operation. Direct connection sometimes works, but the high level from the 3.3V output seems to be just on the minimum edge of what a 5V WS281x recognizes as high. Tiny differences in supply voltage for the LED chain can make it work or not.
    / @luz /



  • I would add that rmmod will fail if the module is in use, the error is not very useful "unloading the module failed". you need to kill any process that may be using the module.



  • @crispyoz Give us an example how do you use this module please.



  • @György-Farkas

    #include "include/ledutils.h"
    #include "include/gpiomux.h"
    #include "include/gpio.h"

    void init_multi_led(){
    // set GPIO to muxing so we can control the multi-colour LED
    gpiomux_mmap_open();
    // int mux_result = gpiomux_set("uart2", "pwm23");
    int mux_result = gpiomux_set("pwm0", "pwm");

    syslog(LOG_INFO, "GPIO Mux returned %d", mux_result);
    gpiomux_mmap_close();
    
    multi_led_fd = open("/dev/ledchain0", O_RDWR);
    

    }



  • Gents, having some issues with the P44 module to control a Ring of LEDs

    https://www.amazon.ca/gp/product/B0774JNSCF/ref=ppx_yo_dt_b_asin_title_o01_s01?ie=UTF8&psc=1

    It is connected to the Omega2 via the expansion module to GPIO18
    148ea66b-6b9b-4e84-9714-ec08f42a9356-image.png

    I belive everything in the omega is configured. I'm starting to suspect that the issue is with the expanison module.



  • @manuel-vera How are you testing? Please show all steps you are using.

    You need to set the GPIO muxing, like so:

    omega2-ctrl gpiomux set pwm0 pwm

    Now test like this:

    echo -en '\x00\x00\xff\x00\x00\xff\x00\x00\xff\x00\x00\xff' > /dev/ledchain0

    This should make the first 4 LED change to blue colour.



  • I think I found the problem. I'm using PWM0 but in the Expansion board those seem to be GND.
    1f1865ac-ca84-4989-9b6d-b3d7e45ca2d0-image.png

    I'm going to try to use UART1 as PWM. I will need to reconfigure the module (91-p44-ledchain to point to ward UART1 (PWM01)

    Then I should be able to use TX1 as the Data line for the Ledchain.

    Will report back



  • Failure again.

    P44-ledchain only allows PWM channels 0-3, thus it would not let me load the module when I try UART1 (PWM01) or UART2(PWM23)

    Runnning out of ideas and frankly frustrated.

    The Power expansion board seem to be my limiting factor.

    Any help would be appreciated



  • @manuel-vera

    root@Test02-00000000:~# cat /etc/modules.d/91-p44-ledchain
    p44-ledchain ledchain0=0,4,1,20,15000

    root@Test02-00000000:~#omega2-ctrl gpiomux set pwm0 pwm
    set gpiomux pwm0 -> pwm

    root@Test02-00000000:~#echo -en '\x00\x00\xff\x00\x00\xff\x00\x00\xff\x00\x00\xff' > /dev/ledchain0

    Red wire if VDD, Green is GND, Grey is on GPIO18

    First 4 LED on the board turn blue.

    IMG_20220115_1454404.jpg



  • @manuel-vera Just ran the same test on PowerDock2, same result. Are you using Powerdock or Powerdock2? Looks like PowerDock. I don't have this to test.


Log in to reply
 

Looks like your connection to Community was lost, please wait while we try to reconnect.