Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : PIC //=> impulsions [ Divers / Général ] (didoux95)

samedi 16 juin 2007 à 19:20:07 | PIC //=> impulsions

didoux95

Bonjour à tous.
je suis en train de faire quelques testes avec les PICs (notemment le PIC16F628). j'ai cherché sur internet sans rien trouver de simple et claire. l'objet de ma recherche était "comment envoyer une impulsion de tant de ms sur tel broche de mon pic".
j'espère que vous pourez m'aider.

merci.

dimanche 17 juin 2007 à 11:15:03 | Re : PIC //=> impulsions

didoux95

Bonjour.
je viens de me rendre compte (un peu tard) qu'il n'y avait pas de fonctions prédéfinies pour envoyer une impulsion. j'ai donc pensé à faire ca:

movlw ;on enregistre la valeur que l'on va envoyer
movwf ;on envoi la valeur
call pause_X ;on fait une pause de X ms (miliseconde)

A présent, ma question devient "comment controler le temps de pause ?". En fait ici, je désirerais controler des servos-moteur; donc les impulsions ne seront jamais les mêmes en fonction de la position du bras du servo-moteur.

merci.

dimanche 17 juin 2007 à 13:21:37 | Re : PIC //=> impulsions

_dune2_

Membre Club
Réponse acceptée !
Salut,


Les pics sont des microcontrôleurs trés précis en terme de timing, car c'est un processeur RISC avec une architecture de Harvard. Cette particularité fait qu'à chaque cycle d'horloge, le PIC execute 1 instruction (pas d'instruction à taille variable et pas de cache). Cet avantage peut-être utilisé pour faire une boucle comme temps de pause avec une précision égale à la fréquence du PIC.
Généralement, sur un PIC on utilise 2 boucles imbriquées ; la boucle interieure compte en micro-seconde par exemple, puis la boucle exterieure le paramètre qui dit combien de micro-secondes on souhaite.

delais_n_us:    
movf n_us,W ; charge la variable n_us dans W
movwf cptr1 ; W -> cptr1

d1 movlw 200 ; charge cptr_us avec le nombre de boucle pour faire
movwf cptr_us ; 1us (à calibrer ...)

d2 decfsz cptr_us ; décrémente cptr_us
goto d2 ; retourne à d2 si cptr_us est non null

decfsz cptr1 ; décrémente le nombre de us à attendre
goto d1 ; retourne à d1 si il reste des us à attendre
retlw 00
Il te reste à calibrer "cptr_us" pour qu'il corresponde de manière le plus proche possible de 1us. Pour réaliser cela, tu mets 100 à n_us, et tu appelles 100000 fois cette fonction de manière à simuler une pause de 10s que tu peux chronometrer ... à partir de là, tu ne touches QUE la valeur de la boucle interieur à calibrer (celle qui est à 200 en guise d'exemple) pour t'approcher au mieux des 10s ...
Une fois cette calibration de faite, tu as une fonction de pause précise ;)

Souviens-toi que tu peux affiner le "timing" en rajoutant des instructions NOP juste avant la boucle  (avant le label "d2") par-exemple, ou dans la boucle ( entre le label "d2" et "decfsz" ).
(TOUTES les instructions prennent le même temps, y compris les NOP ;) )


Gentoo... que du bonheur ...

dimanche 17 juin 2007 à 15:51:44 | Re : PIC //=> impulsions

didoux95

Bonjour.
Faut-il adapter le code à la fréquence de travaille du PIC (pour moi, c'est quatre Méga Hertz) ? car en fonction de cette fréquence, j'ai cru comprendre que le temps mit pour exécuter une instruction est plus ou moins long (nan ?!). De plus, il me semble que certaine instructions comme les goto (...) prennent deux cycles d'horloge (cela veut-il dire qu'elles mettent deux fois plus de temps ?). Donc je dois t'avouer que j'ai un peut du mal suivre; je comprend la méthode que tu me propose mais je vois pas bien comment calibrer la variable cptr_us et "affiner le timing".

merci.

lundi 18 juin 2007 à 11:31:22 | Re : PIC //=> impulsions

Twinuts

Membre Club Administrateur CodeS-SourceS

Salut,


heuuuuu didoux95, _dune2_ est assez explicite dans son poste.... de plus il détail très bien ta problématique et répond même à ta nouvelle question....

sinon oui le cycle d'horloge est proportionnel à la fréquence du micro contrôleur (cf datasheet du PIC16F628  ICI)


enfin bon je dis ça mais je dis rien moi.



------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO

mardi 19 juin 2007 à 15:55:06 | Re : PIC //=> impulsions

didoux95

merci.
j'ai finalement compris! :p

merci.



Cette discussion est classé dans : pic, impulsions


Répondre à ce message

Sujets en rapport avec ce message

Rubrique PIC :) [ par pitap0 ] Serait il possible de rajouter une catégorie pour les PIC car ce sera qd meme plus simple a retrouver ?a++ liaison rs232 avec pic16f84a [ par Lastar ] Bonjour à tous, voila je voudrais allumer et éteindre une led à partir du clavier d'un PC. J'ai donc pour cela mis un MAX232CPE avec le pic. Le prob besoin d'aide tres urgent!!! [ par lefrans ] voila mon probleme je recherche le code en PBP (pic basic pro) pour programer un pic 16f877 d'une calculatrice (simple)je dispose d'un clavier 4x4 et servo de modelisme pilote par pic [ par RC516F84 ] Dans le N°4 de micros et robots le robot bipéde est piloté par un pic16f628 Peut on le remplacer par un 16f84a?Ou est t'il possoble de piloter un ser pic 16f628 [ par theyoupione ] je suis un débutant dans la programmation de PIC et je voudrai savoir comment réaliser avec le 16f628:la réception de 2 signaux analog (d'un inclinomè transmission rc 5 vers un pic 16f84 [ par raimu ] je ne sais pas trop comment je pourrais faire pour effectuer une transmission depuis une telecommande rc5 vers un pic si quelqu'un pouvai m'aider... question sur les pic [ par majoreea ] Je souhauterai avoir le schema d'une telecommande infra rouge pour pc avec PIC Assembleur PIC [ par goa_jr ] Bonjour,Je suis en train de faire un assembleur pour PIC 16F84 et j'ai repéré une chose qui me semble bizarre dans MPLAB : l'instruction qui suit un o communication entre 2 PIC [ par snoopyweb68 ] Dans le cadre d'un stage, je suis ammené à faire communiquer deux PIC (un PIC16F627 et un PIC18F4220). étant donné le peu de pins d'entrées-sorties du programmation d'un PIC 16c84 [ par jergelcol ] Bonjour,Quelqu'un pourrait-il m'aider à écrire un petit programme assembleur permettant à un PIC 16c84 d'envoyer une chaine de caracteres qui sera aff


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,13 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.