Salut
Quelqun aurait-il un exemple de code C de gestion des GPIO ?
et, est il possible de faire une PWM avec n'importe quelle pin d'un Pic ?
merci, ++ Tix.
-----
Salut
Quelqun aurait-il un exemple de code C de gestion des GPIO ?
et, est il possible de faire une PWM avec n'importe quelle pin d'un Pic ?
merci, ++ Tix.
petit UP, pour voir
la période est sur 256
trame periode haute
per periode basse
modifier trame pour changer le rapport
Code:unsigned char trame; unsigned char per; unsigned char i; trame=125; per = 255 - trame; PWM_moop: while (1) { gpio=1; for (i=0;i<trame;i++); gpio=0; for (i=0;i<per;i++); }
Hi
Oui, il est possible de faire une PWM sur n'importe qu'elle pin d'un PIC, mais le probleme, c'est que le PIC a surement autre chose a faire, donc la ca se corse, car comme dit précedement, il faut une boucle while (true) pour faire la PWM indifinement.
Il y'a des PIC qui gerent les PWM en hardware, c'est plus simple, mais t'es limité a queleques Pin.
Si tu veux faire de la PWM en software, je crois qu'il n'y a pas mieux que de gerer des interruption sur débordement de timer .
merci beaucoup !!!
je vais pouvoir commencer a bidouiller.
j'aurais sans doutes d'autres questions d'ici quelques temps. merci encore !
++ Tix.
Re-Salut
dites donc, sauriez vous comment configurer un PIC12F629 ?
Oscillation "interne" (sans quartz), avec ce code ci (ou presque)
merci d'avance, ++ Tix.Code:void main(void) { bit bouton @ GPIO.3; while(1) { if(bouton) { .... } } }
bits de config 0x0186
sans protection , sans WD
i/o sur les pins a la place du quartz
et la pin mclr en I/O pas de mclr
pas de BOD En
BG1 et BG0 à zéro , il faudrait les lire avant d'effacer savoir si c'est différent
ainsi que l'oscCal.
pour configurer GPIO c est du code !!!
merci beaucoup, j'essaye demain ^^
++
Bon, je perd pieds. je n'arrive pas a faire marcher ce ****** de pic.
...il sagit d'un PIC12F629. mon shéma est simple :
Un bouton relié à GPIO3 (avec res de pullup), deux led reliées a GPIO.1 et GPIO.2 via des resistances de 150 ohms. rien d'autre
J'aimerais faire ceci (programme de teste) :
Quand j'appuie sur le contact (GPIO.3 = 1) la led 1 s'allume, l'autre non
quand je relache le bouton (GHPIO.3=0) l'inverse se produit.
Aucun autre composant, circuit sous 5V, compilateur CC5X, IDE Mplab, envoyé sur le pic avec ICprog
pourriez vous, en connaissance de ces informations, me donner quelques infos sur ma réalisation ? (configuration "trisio" & "gpio" ect ... et surtout POURQUOI proceder ainsi) ?
merci beaucoup, j'attende vos réponses avec impatience, ++ Tix.
J'ai du nouveau !!!
j'ai fait un programme qui allume seulement toutes les sorties (à 1)
mais voilà, elles ne s'allumes que quand, par inadvertance, j'ai posé le doigt sur certaines de ces sorties !!!!
est-ce normal ?
tu as une ou des entrées en l'air !
Le fait de lire GPIO aléatoirement on lit 1 ou 0 selon la charge du moment.
il faut faire un mask avec un and et le poids du bit concerné.
exemple
a = GPIO
b = a AND 1 ' mask du bit 0 seul
if b <>0 then ...
b = a AND 2 ' mask du bit 1 seul
if b <>0 then ...
b = a AND 4 ' mask du bit 2 seul
if b <>0 then ...
etc...
Merci !
dans mon cas, je ne sait pas si ca va me dépanner, jai procedé comme ceci :
en ce qui concerne la "magie du doigt", elle n'a pas lieu quand (sur conseils) je met une capa de decouplageCode:unsigned char a = GPIO.x ;// x etant la pin lue
++ Tix.
je ne connais pas ton compilateur...
Mais si tu utilise une instruction bit tu n'aura plus le problème.
Pour la capas c'est bien normalement on devrait en mettre sur chaque entrée, mais c'est un bricolage si tu corrige pas le soft, la cause est soft.
Tu peux t'attendre à des problèmes aléatoires sinon.
merci, je vais tenter de refaire un prog avec t améthode.
J'ai eu un semblant d'idée pour debugger ma méthode, et, a l'occasion, mes idées sur le sujet. Pourriez vous me transmettre un shéma simple, verifié par ceux qui savent, un programme controlable une fois "en route" (du style un clignottement visible) et une marche a suivre ?
je vois arriver de là les habitués aux kevins, et, non , il ne sagit pas de me faire le boulot (j'en ais pas qui plus est) , mais de m'aider a corriger mes erreurs, et pourquoi pas, me faire voir des trucs que je ne vois pas actuelement.
qu'en pensez vous ?
merci, ++ Tix.
je peux faire un truc simple comme exemple de départ mais avec mes outils perso.
pic12F675 ?
en freepicbasic on génère un asm universel aussi;
http://perso.orange.fr/pat.deaubonne/pic/index.htm
le programmateur de pic
http://perso.orange.fr/pat.deaubonne...inPP/index.htm
exemple 1
allumage progressif sur 1 seconde et bouclage infinie
PWM sur GPIO 0
Avec 3 boucles for
trame variation de l'intensité du PWM
progression 4 pour faire environ 1 sec, de 2 à 250.
j'évite les cas particulier 0 et 255.
i temps allumé
delay de 100µs
i temps éteint
delay de 100µs
255 x 100µs = 25 ms
soit 50ms la trame 20hz
modifier les delay µs pour accélérer la trame l'effet de scintillement disparaitra
mettre en config 0x184 ou 0x185 (pas 0x186 c'est RC externe, mea culpa ...)
merci beaucoup, je prend note de tout ca des que validé !
je te tiend au courant !
La video en divx
http://perso.orange.fr/pat.deaubonne...OAD/video3.avi
Merci bienbien
t'as le shéma electronique ? (qui m'intéresse, histoire de pas faire d'erreur toute con ^^)
merci, ++ Tix.
+5v sur la pin 1
gnd sur la pin 8
1ko sur la pin 7 qui va à la led qui va à la masse.
C'est tout, d'ailleurs on le vois sur la vidéo.
Je fais pas un schéma pour si peu LOL.
okok, merci beaucoup