Salut à tous,
Voici un petit bout de code qui permet de générer un signal carré
en utilisant un des timers PWM. Le timer 0 ou 1 peuvent être router
sur respectivement les broches GPB0 et GPB1 du connecteur GPIO.
Attention le GPB0 étant aussi utilisé par le buzzer vous aurait
alors droit à une "jolie" mélodie de la part de votre mini2440.
Le patch 0001-MINI2440-Add-support-of-PWM-timer.patch (patch pour
kernel 3.4.8) ajoute le support du timer PWM 1 (modifiable par un
define : PWM_TIMER) à la mini2440.
Le tarball contient un module qui utilise le timer PWM définit dans
la config de la mini2440. Ce module est conçut pour être compilé
dans buildroot. Il faudra peut-être prévoir des adaptations du
Makefile pour votre environnement de compilation.
Il est possible de modifier la fréquence et le rapport cyclique du
signal.
Pour changer la fréquence du signal (ici à 250 Hz) :
# echo 250 > /sys/devices/platform/s3c24xx-pwm.1/pwm-gen/freq
Pour changer le rapport cyclique du signal (ici à 25 % du signal à
l'état 1) :
# echo 25 > /sys/devices/platform/s3c24xx-pwm.1/pwm-gen/duty
La plage de fréquence va de 49Hz à 10MHz environs. Au delà de 390Hz
la précision de la fréquence n'est pas exacte et ce dégrade vite
quand on attend le MHz.
Quelques photos de la validation avec un vrai oscilloscope :
Une meilleur vue de l'écran de l'oscilloscope :
J’espère que cela vous aidera.
A+