Other Parts Discussed in Thread: SYSCONFIG, AM3359
器件型号: AM3359
主题中讨论的其他器件: SysConfig、
我不了解写入 PWM 寄存器、
CM_PER_EPWMSS0_CLKCTRL 最初为 0x30000
我唯一可以写入的是 0x2、写入任何其他失败的内容、其余地址保留在 0x30000。
写入 0x2 后、我可以写入大多数 PWM 寄存器、但不能写入 PWMSS0->SysConfig。
另一个奇怪的是、这没有启用 PWM、我必须通过以下方式在 Linux 中执行:
echo 0 > /sys/class/pwm/pwmchip0/export
echo 1 > /sys/class/pwm/pwmchip0/export
echo 0 > /sys/class/pwm/pwmchip1/export
echo 1 > /sys/class/pwm/pwmchip1/export
echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable
echo 1 > /sys/class/pwm/pwmchip0/pwm1/enable
echo 1 > /sys/class/pwm/pwmchip1/pwm0/enable
echo 1 > /sys/class/pwm/pwmchip1/pwm1/enable
其余代码正常工作。 因为我必须通过原始寄存器写入来实现此目的 — 就像设置 pwm0 和 pwm1 之间的相位一样。
我预计我会按照错误的顺序执行操作、在所有编程之外、我会通过以下方式禁用 ARM 中断:
asm("ORR R12, R12, #0x80") ; // disable interupts
然后在最后重新启用:
asm("BIC R12, R12, #0x80") ; // enable interupts
那么我错过了什么呢?
