Pregunta

Estoy usando Beaglebone Not Beaglebone Black.

Acabo de intentar emitir un PWM y esperé las frecuencias potenciales de algunos megahérzes en un dispositivo tan rápido.
Descubrí que 100Hz es el máximo exacto que puedo configurar a través de SYSFS.
Comencé a cavar en línea para ver ejemplos y no mencionaron un límite, pero tampoco mostraron un valor más rápido que 100Hz.

Ejemplo:

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#

Cualquier avr 10cente puede hacer un pwm más rápido que eso.
¿Hay algún truco que me perdí? ¿Realmente tengo que crear un PWM personalizado por Manuallz Toggling GPIO si quiero una frecuencia más rápida que 100 Hz?

¿Fue útil?

Solución

En realidad, encontré la solución poco después de abrir mi pregunta.
Lo publicaré aquí, ya que creo que esto podría causar algo más que solo para preguntarme :)

La frecuencia PWM no es, por supuesto, no se limita así en un dispositivo de 1 GHz, el controlador del kernel simplemente no funciona de la misma manera que uno esperaría.

Si ingresa un valor de impuestos (como un 1 por ciento), el conductor parece simplemente calcular el valor de TIRY_NS y olvídese de porcentaje después.
Un usuario normal pensaría que está en el "modo porcentual", pero en realidad el archivo porcentaje está obligado a una envoltura para ayudar.
Los mismos cuentan para la frecuencia!
Si ahora cambia la frecuencia a un valor más alto, entonces el kernel comprueba si el período de ciclo de TURY_NS encaja en el nuevo período TOTAL_NS! ¡Ignora que realmente configuras un porcentaje!

Así que, por supuesto, no puede tener un período de enlace que sea mayor que en todo el período, por lo que falla.

Resumen corto de texto largo:

SIEMPRE DESPUÉS DE DUTY_CYCLE A CERO Antes de establecer la frecuencia si el valor anterior no cabe en el nuevo período, esto evita la frustración.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top