GPIO Et PWM

Le connecteur GPIO du Raspberry Pi, comment l'utiliser sur les Mode A, B et B+

Modérateur : Francois

Répondre
vrishnak
Messages : 1
Enregistré le : dim. 9 nov. 2014 11:09

GPIO Et PWM

Message par vrishnak » dim. 9 nov. 2014 11:46

Bonjour,

Tout d'abord un très grand merci pour les infos et articles publiés sur votre page qui m'ont été d'un grand secours lors de ma première utilisation de ma framboise.

J'explore actuellement le GPIO de ma raspberry , notamment l'utilisation de PWM et j'aurais quelques questions et confirmations.

Je cherche à synchroniser deux signaux PWM générés par ma frambroise et je ne sais pas trop comment faire.

Ma première question est la suivante:

_ Qu'elle est la fréquence maximale que l'on peut générer avec PWM? : En parcourant les differents sites, j'obtiens partiellement une réponse de 19.2MHz, est bien cela?

Voici mon script python qui me permet de créer mes deux signaux PWM:

Code : Tout sélectionner

# j'importe ma lib
import RPi.GPIO as GPIO

# je configure ma PI: utilise GPIO26 et GPIO27 pour mes sorties 
GPIO.setmode(GPIO.BOARD)
pin1=26
GPIO.setup(pin1,GPIO.OUT)
pin2=27
GPIO.setup(pin2,GPIO.OUT)

# je créés mes PWM: 5Hz , Duty cycle 50%
freq=5
dc=50
P1=GPIO.PWM(pin1,freq)
P2=GPIO.PWM(pin2,freq)

# Maintenant il me reste plus qu'a les lancer avec la commande P1.start(dc)  , P2.start(dc)  .. les stopper avec P1.stop() , P2.stop()

#
# MAIS COMMENT LES SYNCHRONISER?
#

# Puis on nettoie
GPIO.cleanup()
Donc mon probleme est comment synchronisés ces deux signaux dans un premier temps.. Dans un deuxieme temps , se serait des les inversés l'un par rapport à l'autre ... Et le top du top , de les décaler d'une certaine periode.

Est ce que vous pouvez m'aider?

Avatar du membre
vague nerd
Modérateur
Messages : 1473
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: GPIO Et PWM

Message par vague nerd » sam. 15 nov. 2014 10:06

Bonjour.

Je ne peux malheureusement répondre directement à vos questionnements. Néanmoins, j'utilise moi même le PWM sur la framboise, notamment sur les ports digitaux.

Pour ce faire, j'utilise deux solutions différentes :
- une application, "servoblaster" et son démon "servod", qui génèrent un driver permettant de pulser un gipo (on écrit directement du texte dans le périphérique émulé, par exemple : echo 0=150 > /dev/servoblaster fait pulser le port gipo identifié 0 avec un cycle time de 150µs), plus d'info ici : https://github.com/richardghirst/PiBits ... rvoBlaster
- un framework java, PI4J, qui s’évertue à faire une abstraction complète du pi. (Je l'utilise pour jouer avec le bus i2c, mais on peut faire du PWM), plus d'info ici : http://pi4j.com/.

Concernant, le fréquence maximum, il semble que les ports gipo et la librairie utilisée soient les facteurs limitant (un vieux truc trouvé rapidement) :
http://codeandlife.com/2012/07/03/bench ... pio-speed/. Je lis 44 kHz avec du Python/RPi.GPIO et du 20 kHz avec du Python/wiringPi.

Par contre, je ne peux répondre à votre question concernant la synchronisation, peut-être faut il creuser dans Pi4J et servoblaster.

Justement, à quoi cela va-t-il vous servir de "synchroniser" des signaux ?

Cdt.
Cordialement,

Vague Nerd

Répondre

Retourner vers « Le GPIO »