Me gustaría controlar un servomotor utilizando PWM. He cargado el siguiente archivo .dtbo en las ranuras del directorio bone_capmgr como se muestra a continuación:
root@beaglebone:/sys/devices/platform/bone_capemgr# cat slots
0: PF---- -1
1: PF---- -1
2: PF---- -1
3: PF---- -1
4: P-O-L- 0 Override Board Name,00A0,Override Manuf,BB-SPIDEV1
5: P-O-L- 1 Override Board Name,00A0,Override Manuf,am33xx_pwm
7: P-O-L- 2 Override Board Name,00A0,Override Manuf,bspwm_P9_22_3
Para PWM, he cargado correctamente el pin P9_22 configurado como salida con mode3 como ehrpwm0A.
Ahora, ¿cómo identifico qué dispositivo pwm está activo desde los cuatro pwmchips como se muestra a continuación?
root@beaglebone:/sys/class/pwm# ls
pwmchip0 pwmchip2 pwmchip4 pwmchip5 pwmchip6
Estoy usando BeagleBone Black con la siguiente versión:
root@beaglebone:~# uname -a
Linux beaglebone 4.1.18-ti-r53 #1 SMP Thu Mar 17 19:41:05 UTC 2016 armv7l GNU/Linux
Generé los .dts utilizando el generador de dts encontrado AQUÍ . Abajo están los .dts que usé:
/dts-v1/;
/plugin/;
/ {
compatible = "ti,beaglebone", "ti,beaglebone-black";
/* identification */
part-number = "BS_PWM_P9_22_0x3";
/* state the resources this cape uses */
exclusive-use =
/* the pin header uses */
"P9.22",
/* the hardware IP uses */
"ehrpwm0A";
fragment@0 {
target = <&am33xx_pinmux>;
__overlay__ {
bs_pwm_P9_22_0x3: pinmux_bs_pwm_P9_22_0x3 {
pinctrl-single,pins = <0x150 0x3>;
};
};
};
fragment@1 {
target = <&ocp>;
__overlay__ {
bs_pwm_test_P9_22 {
compatible = "pwm_test";
pwms = <&ehrpwm0 0 500000 0>;
pwm-names = "PWM_P9_22";
pinctrl-names = "default";
pinctrl-0 = <&bs_pwm_P9_22_0x3>;
enabled = <1>;
duty = <0>;
status = "okay";
};
};
};
};