bonjour
voila j'ai un projet à mettre en oeuvre et ça fait qq jours que je bloque...
Voici a peu près le cahier des charges et mes questions:
Je converti un signal analogique en num que j'envoi direct à un PC par RS232 en utilisant le module USART de mon PIC et pas en mode interruption.
Ca c'est bon ca marche y a pas de problème.
Le soucis vient du fait que je vais devoir recevoir des commandes (genre changement de fréq du convertisseur, piloté un multipexeur...)
et ces commandes vont arriver sous forme de trame, 2bits d'identification, 10 Bits de commande, 3,4bits de données (quelque chose dans ce style)
Je voudrais donc effectué cette reception en mode interruption pour ne pas avoir à scruter tout le temps si il ya une reception.
Le problème et que je ne vois pas comment faire, je ne sais pas comment mettre en place le traitement de la trame (tester les 2 premiers bits, après 10...etc)
et je ne sais pas si si traitement je dois le mettre dans la routine d'interruption de reception?
et enfin est-ce que ça ne va pas mettre le bazard dans mon CAN et mon envoir de données????
voilà, ça fait beaucoup de questions, mais j'espère avoir était assez clair!
et je ne sais pas si si traitement je dois le mettre dans la routine d'interruption de reception?
normalement une routine d'interruption doit être la plus courte posible, dans ton cas, je pense qu'elle mettra juste à jour des variables.
et enfin est-ce que ça ne va pas mettre le bazard dans mon CAN et mon envoir de données????
tu peux autoriser ou non les interruptions à certains moments critiques donc ça permet de réduire d'interferer avec ces points.
Consulte la datasheet du PIC que tu utilise dans le chapitre USART, il doit être écrit la procédure de son utilisation en interruption.
22/04/2007 - 12h52
RISC
Date d'inscription
novembre 2006
Messages
2 858
Re : USART sur PIC
Bonjour,
Quel PIC utilises-tu ?
Pour ton cahier des charges, je te conseille la procédure suivante :
1/ Gestion de l'USART sous interruption
2/ Gestion du convertisseur A/N automatique en utilisant le mode output compare de l'unité MSSP. C-a-d que les conversions sont lancées automatiquement à une fréquence donnée que tu peux bien sur changer dynamiquement.
De meme lecture du CAN sous interruption
3/ Pour ta trame, il faut que tu nous éclaire sur la fréquence et la forme des signaux.
Je pense que tu peux la gérer en polling + interruption si la fréquence n'est pas trop élevée.
a+
22/04/2007 - 13h30
noisyboxes
Date d'inscription
mars 2007
Âge
28
Messages
65
Re : USART sur PIC
Pour le PIC, j'utilise un 16F876A,
j'ai pas bien compris ton mess 'RISC',
Envoyé par RISC
Gestion du convertisseur A/N automatique en utilisant le mode output compare de l'unité MSSP
je ne sais pas trop ce que c'est, mais je vais regardé dans la doc voir ce que c'est.
sinon la reception de la trame se fait à 9600 Bauds, ce qui n'est pas extrêmement élevé, et les signaux sont je pense des signaux normaux, TTL quoi, compatibles avec le PIC. Tu parles de "polling + interruption"...interruption je comprend mais polling pas du tout!! mais je vais jeter un oeil dans la doc et le cours de Bigonoff voir deja si je peut essayer de mettre en place vos indications.
22/04/2007 - 13h40
umfred
Date d'inscription
mars 2006
Âge
34
Messages
1 344
Re : USART sur PIC
le polling c'est tester (périodiquement ou en continu) si ce que l'on veut arrive.
par exemple
Code:
test
btfss portb,0 ;tant qu'on a pas un 1 sur B0, on attend
goto test
..; traitement
Tu recois donc, si je comprends bien, tes trames par la liaison UART. Si c'est le cas, l'UART ne recois que des caractères de 7 ou 8bits. Comment tes différents bits sont ils regroupés ?
Pour le "polling" le mot français correspondant est scrutation comme l'a expliqué umfred.
Mais mon assomption 3/ n'est plus exacte au vu de ton dernier post :
UART :
a/ en émission les valeurs du CAN
b/ en réception tes trames
correct ?
a+
23/04/2007 - 07h39
noisyboxes
Date d'inscription
mars 2007
Âge
28
Messages
65
Re : USART sur PIC
c'est exactement ça!
sauf que mon prog qui envoit les valeurs de sorties du CAN n'est pas géré par ijnterruption!
et ma trame de reception contient un nombre + ou - aléatoire de bits. mais je pense que je vais demandé à ce que se soit plus "conventionnel" et que le dernier octet soit prédéfini afin de marquer la fin de la trame.
comme ça je pourais détecté la fin de la trame en vu de son traitement.
qu'en pensez vous et avez vous déja fait ça (prog qui marche???)
merci beaucoup