A small, affordable computer with free resources to help people learn, make things, and have fun
https://forums.raspberrypi.com/
Mods decide which category is best for your topic.
Please spot the failure!
Code: Select all
#dtparam=audio=on
dtoverlay=pwm-2chan,pin=12,func=4,pin2=13,func2=4
Code: Select all
pi@cm4nanob:~ $ pinctrl get 12,13
12: a0 pd | lo // GPIO12 = PWM0_0
13: a0 pd | lo // GPIO13 = PWM0_1Code: Select all
# For more options and information see
# http://rptl.io/configtxt
# Some settings may impact device functionality. See link above for details
# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on
# Enable audio (loads snd_bcm2835)
dtparam=audio=off
# Additional overlays and parameters are documented
# /boot/firmware/overlays/README
# Automatically load overlays for detected cameras
camera_auto_detect=1
# Automatically load overlays for detected DSI displays
display_auto_detect=1
# Automatically load initramfs files, if found
auto_initramfs=1
# Enable DRM VC4 V3D driver
#dtoverlay=vc4-kms-v3d
max_framebuffers=2
# Don't have the firmware create an initial video= setting in cmdline.txt.
# Use the kernel's default instead.
disable_fw_kms_setup=1
# Disable compensation for displays with overscan
disable_overscan=1
# Run as fast as firmware / board allows
arm_boost=1
[cm4]
# Enable host mode on the 2711 built-in XHCI USB controller.
# This line should be removed if the legacy DWC2 controller is required
# (e.g. for USB device mode) or if USB support is not required.
otg_mode=1
[cm5]
dtoverlay=dwc2,dr_mode=host
[all]
dtoverlay=pwm-2chan,pin=12,func=4,pin2=13,func2=4
dtoverlay=vc4-kms-v3d,noaudio
Code: Select all
#include <signal.h>
#include <unistd.h>
#include <pigpio.h>
#include <stdio.h>
volatile bool running = true;
void stop(int) {
running = false;
}
constexpr int PWM_1 = 12;
constexpr int PWM_2 = 13;
int main() {
if (gpioInitialise() < 0) {
return 1;
}
int r1 = gpioHardwarePWM(PWM_1, 25000, 750000);
int r2 = gpioHardwarePWM(PWM_2, 25000, 250000);
fprintf(stderr, "PWM%d=%d PWM%d=%d\n", PWM_1, r1, PWM_2, r2);
signal(SIGINT, stop);
signal(SIGTERM, stop);
while (running) {
sleep(1);
}
gpioHardwarePWM(PWM_1, 0, 0);
gpioHardwarePWM(PWM_2, 0, 0);
gpioTerminate();
return 0;
}
Code: Select all
dtoverlay=vc4-kms-v3d,noaudio
Code: Select all
pi@cm4nanob:~ $ sudo cat /sys/kernel/debug/pwm
0: platform/fe20c000.pwm, 2 PWM devices
pwm-0 ((null) ): period: 0 ns duty: 0 ns polarity: normal
pwm-1 ((null) ): period: 0 ns duty: 0 ns polarity: normal
pi@cm4nanob:~ $ pinctrl get 12,13
12: a0 pd | lo // GPIO12 = PWM0_0
13: a0 pd | lo // GPIO13 = PWM0_1Code: Select all
pi@cm4nanob:~ $ cd /sys/class/pwm
pi@cm4nanob:/sys/class/pwm $ cd pwmchip0Code: Select all
pi@cm4nanob:/sys/class/pwm/pwmchip0 $ echo 0 > export
pi@cm4nanob:/sys/class/pwm/pwmchip0 $ echo 1 > export
pi@cm4nanob:/sys/class/pwm/pwmchip0 $ dir
device export npwm power pwm0 pwm1 subsystem uevent unexportCode: Select all
pi@cm4nanob:/sys/class/pwm/pwmchip0 $ cd pwm0
pi@cm4nanob:/sys/class/pwm/pwmchip0/pwm0 $ echo 10000 > period
pi@cm4nanob:/sys/class/pwm/pwmchip0/pwm0 $ echo 6000 > duty_cycle
pi@cm4nanob:/sys/class/pwm/pwmchip0/pwm0 $ echo 1 > enable
pi@cm4nanob:/sys/class/pwm/pwmchip0/pwm0 $ sudo cat /sys/kernel/debug/pwm
0: platform/fe20c000.pwm, 2 PWM devices
pwm-0 (sysfs ): requested enabled period: 10000 ns duty: 6000 ns polarity: normal
pwm-1 (sysfs ): requested period: 0 ns duty: 0 ns polarity: normalCode: Select all
pi@cm4nanob:/sys/class/pwm/pwmchip0/pwm0 $ cd /sys/class/pwm/pwmchip0/pwm1
pi@cm4nanob:/sys/class/pwm/pwmchip0/pwm1 $ echo 5000 > period
pi@cm4nanob:/sys/class/pwm/pwmchip0/pwm1 $ echo 3000 > duty_cycle
pi@cm4nanob:/sys/class/pwm/pwmchip0/pwm1 $ echo 1 > enable
pi@cm4nanob:/sys/class/pwm/pwmchip0/pwm1 $ sudo cat /sys/kernel/debug/pwm
0: platform/fe20c000.pwm, 2 PWM devices
pwm-0 (sysfs ): requested enabled period: 10000 ns duty: 6000 ns polarity: normal
pwm-1 (sysfs ): requested enabled period: 5000 ns duty: 3000 ns polarity: normal