Question

J'utilise Beaglebone PAS BEAGLEBONE NOIR.

J'ai juste essayé de produire un PWM et je m'attendais à des fréquences potentielles de certains mégaherz sur un appareil aussi rapide.
J'ai découvert que 100Hz est le maximum exact que je peux définir par SYSFS.
J'ai commencé à creuser en ligne pour des exemples et ils n'ont pas mentionné une limite, mais ils n'ont pas non plus montré de valeur plus rapidement que 100Hz.

Exemple:

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#

Tout AVR 10cent peut faire une pwm plus rapide que celle-là.
Y a-t-il des astuces que j'ai manquées?
Dois-je vraiment créer une PWM personnalisée par Manuallz TognGling GPIO si je veux une fréquence plus rapide que 100 Hz ?!

Était-ce utile?

La solution

J'ai trouvé la solution juste après avoir ouvert ma question.
Je le posterai ici car je pense que cela pourrait en fait causer plus que moi de me demander :)

La fréquence PWM n'est bien sûr pas limitée comme celle sur un périphérique de 1 GHz, le pilote du noyau ne fonctionne tout simplement pas de la même manière que l'on pourrait s'attendre.

Si vous entrez une valeur de performance_percence (comme 1%), le conducteur semble simplement calculer la valeur Duty_ns en dehors de celui-ci et oublier le pourcentage après.
Un utilisateur normal penserait qu'il est en "mode en pourcentage", mais le fichier de pourcentage est en réalité lié à une enveloppe pour aider.
Les mêmes comptes pour la fréquence!
Si vous modifiez maintenant la fréquence à une valeur plus élevée, alors le noyau vérifie si la période de cycle Duty_NS s'adapte à la nouvelle période totale!
Il ignore que vous définissez réellement un pourcentage!

Donc, bien sûr, vous ne pouvez pas avoir une période de temps supérieure à la période entière, de sorte qu'il échoue.

Texte long Sommaire court:

Toujours définir Duty_cycle à zéro avant de définir la fréquence si la valeur précédente ne s'intègre pas dans la nouvelle période, cela évite la frustration.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top