我正在使用比格鹰不是beaglebone黑色。

我刚刚尝试输出PWM和我在这种快速设备上的一些兆赫的潜在频率。
我发现100Hz是我可以通过sysfs设置的最大最大值。
我开始在线在线挖动例子,他们没有提到一个限制,但它们也没有显示超过100Hz的值。

示例:

root@beaglebone:/sys/class/pwm/ehrpwm.0:0# echo 10000000 >  period_ns 
root@beaglebone:/sys/class/pwm/ehrpwm.0:0# echo 1000000 >  period_ns 
-sh: echo: write error: Invalid argument
root@beaglebone:/sys/class/pwm/ehrpwm.0:0# echo 200 >  period_freq 
-sh: echo: write error: Invalid argument
root@beaglebone:/sys/class/pwm/ehrpwm.0:0# echo 101 >  period_freq 
-sh: echo: write error: Invalid argument
root@beaglebone:/sys/class/pwm/ehrpwm.0:0# echo 100 >  period_freq 
root@beaglebone:/sys/class/pwm/ehrpwm.0:0#
.

任何10cent avr可以比这更快的pwm。
我错过了一些伎俩吗?
如果我想要比100 Hz更快的频率,我真的必须通过Manuallz Toggling GPIO创建自定义PWM吗?

有帮助吗?

解决方案

我实际上在打开问题后不久就找到了解决方案。
我会在这里发布它,因为我认为这可能实际上可能导致我不仅仅是想知道:)

PWM频率当然不受1GHz设备上的限制,内核驱动程序只是不同样的方式工作。

如果输入职务值(如1%),那么司机似乎只计算了它的职责,并忘了之后的百分比。
普通用户会认为他处于“百分比模式”,但实际上百分比文件只是绑定到包装器来帮助。 频率的相同计数!
如果您现在将频率更改为更高的值,那么内核检查职务循环期是否适合新的总段!
它忽略了您实际设置的百分比!

所以当然你不能有一个大于整个周期的持续时间,所以它失败了。

长文本简短摘要:
始终将DURED_CYCLE设置为零,然后在将前一个值不适合新时期,这避免了挫折。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top