Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Idée, bugs, propositions .......
decodage d'un protocole avec pic
Stifen
Membre
Membre
Messages : 11
Enregistré en : mars 2017

#1 Message par Stifen » lun. 17 avr. 2017 18:51

Bonjour tout le monde, j'ai besoin d'aide pour décoder le protocole présenter dans le schéma, je dois utiliser une interruption à chaque flèche jaune. c'est obligatoire car le temps de réponse du récepteur provoque un certain retard à la détection des fronts descendant (un retard très variable). la partie colorée en gris est le bit (soit 0 soit 1) pourriez-vous me donner quelque algorithme? ou des programmes en miKroC si vous avez déjà traité ce genre de situation. Merci pour votre réponse bonne continuation. :-)
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

decodage d'un protocole avec pic
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2585
Enregistré en : juillet 2016
Localisation : Terre

#2 Message par Temps-x » lun. 17 avr. 2017 19:33

Bonjour Stifen, et bonjour à tous,

Soit le bienvenu sur le forum,

Normalement il suffit d’initialiser le registre OPTION_REG et INTCON, enfin en fonction du PIC que l'on connait pas :sifflotte: !

Version assembleur :

Code : Tout sélectionner


      movlw B
'00000000'                  ; b6 = Si modification sur RB0 dans le front descendant 0,  ou montant = 1
      movwf OPTION_REG                                     
                                                  
      movlw B
'00010000'                  ; b6 = Autorisation générale périphérique
      movwf INTCON                       
; b4 = Autorise interruption si modification de l'entrée RB0/INT  
                                         ; b3 = Autorise interruption si modification de l'
entrée RB4/RB7 



A+
Modifié en dernier par Temps-x le lun. 17 avr. 2017 19:47, modifié 3 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

decodage d'un protocole avec pic
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#3 Message par Jérémy » lun. 17 avr. 2017 19:39

Bonjour stifen et à tous,

Je suis en train de galérer avec l'UART.

Mais tes explications sont plutôt brumeuses . Je pense que tout protocole de communication commence par un START. derriére ce START il y a un certain nombres de bits a relevé pour au final avoir une info.

D'apres ce que je comprends et ton schéma , tu n'as qu'un bit comme info ? donc c'est soit 0 soit 1 ton infos . bizarre !!

Qu'est ce que tu cherche à faire au juste ? savoir le protocole de communication ?
C'est en faisant des erreurs, que l'on apprend le mieux !!!

decodage d'un protocole avec pic
Stifen
Membre
Membre
Messages : 11
Enregistré en : mars 2017

#4 Message par Stifen » lun. 17 avr. 2017 20:06

Merci pour les réponse. Jérémy c'est un simple exercice pour envoyer un protocole spécifique ce n'est que 2 bit. et je vais décoder c'est deux bits. est-ce que c'est possible?

decodage d'un protocole avec pic
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#5 Message par Jérémy » lun. 17 avr. 2017 20:15

Oui ce doit etre possible ;

A chaque front descendant tu lance ton interruption .
Tu fais une pause de 1ms et tu lis l'état de ta broche . ( donc le carré gris) .
Je pense que le dernier bit est le stop pour pouvoir repartir . Tu n'as donc qu'un seul bit de payload (donnée utile) !
Puis tu recommence etc .....

dès que tu as un front descendant cela dis, dans 1 ms je t'envoie la donnée . pour schématiser .

Je suis novice mou aussi, mais voila ce que je comprends ! attends peut etre l'avis de quelqu'un plus expert que moi !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

decodage d'un protocole avec pic
Stifen
Membre
Membre
Messages : 11
Enregistré en : mars 2017

#6 Message par Stifen » lun. 17 avr. 2017 21:16

Merci beaucoup jérémy.

decodage d'un protocole avec pic
Stifen
Membre
Membre
Messages : 11
Enregistré en : mars 2017

#7 Message par Stifen » lun. 17 avr. 2017 21:21

Temps-x a écrit :Bonjour Stifen, et bonjour à tous,

Soit le bienvenu sur le forum,

Normalement il suffit d’initialiser le registre OPTION_REG et INTCON, enfin en fonction du PIC que l'on connait pas :sifflotte: !

Version assembleur :

Code : Tout sélectionner


      movlw B
'00000000'                  ; b6 = Si modification sur RB0 dans le front descendant = 0,  ou montant = 1
      movwf OPTION_REG                                     
                                                  
      movlw B
'00010000'                  ; b6 = Autorisation générale périphérique
      movwf INTCON                       
; b4 = Autorise interruption si modification de l'entrée RB0/INT  
                                         ; b3 = Autorise interruption si modification de l'
entrée RB4/RB7 



A+

Merci pour ta réponse Temps-x. mon vrais problème c'est l'algorithme de décodage non pas l'interruption.

decodage d'un protocole avec pic
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2585
Enregistré en : juillet 2016
Localisation : Terre

#8 Message par Temps-x » mar. 18 avr. 2017 01:20

Bonsoir,

Pour un quart à 4 Mhz :

1)Tu mets ton TMR1 à zéro, tu initialises le débordement sur le front descendant.

2) Quand ton fronts descendant arrive au point zéro, ça provoque une interruption, à ce moment, tu initialises ton TMR1,
en le mettant à (65535 - 2000(2ms)) = 63535, et tu paramètres l'interruption sur le front montant.

3) Tu mets en fonction le timer1, et tu attends qu'il déborde.

4) si tu as une interruption sur le fronts montant, cette fois si, et, avant que ton timer1 déborde, tu arrêtes le timer1
et tu lis la valeur, si elle est de 65535 - 1000µs = 64535, ça veux dire que ton bit est à 1.

Avec un quart à 4Mhz, ça fait 1µs par instruction, c'est largement faisable, et tu as le temps de faire autre chose,
avant qu'il déborde, ça te fait plus de 900 instruction, que tu peux effectuer en attendant.

On utilise cette technique, pour faire varier la tension d'un triac, on détectant le point zéro du secteur, et ça fonctionne très bien.

A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

decodage d'un protocole avec pic
Stifen
Membre
Membre
Messages : 11
Enregistré en : mars 2017

#9 Message par Stifen » lun. 24 avr. 2017 16:17

Merci beaucoup Temp-X, tu m'as beaucoup aider avec ton algorithme :) mais j'ai encore des soucies, si c'est par exemple par un bruit que le signal à changer d'état dans ce cas là l'algorithme vas tout confondre. Est-ce possible d'avoir une bonne précision sur la lecture des bits? Merci beaucoup :)

decodage d'un protocole avec pic
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2585
Enregistré en : juillet 2016
Localisation : Terre

#10 Message par Temps-x » jeu. 27 avr. 2017 02:26

Bonjour,
si c'est par exemple par un bruit que le signal à changer d'état dans ce cas là l'algorithme vas tout confondre


Pourquoi ton signal changerais d'état, c'est quand tu programmes ton protocole, que tu dois prévoir une vérification.

Est-ce possible d'avoir une bonne précision sur la lecture des bits


Que veux tu dire par lecture des bits ?

D'ici peut, je vais écrire avec JMarc, un programme similaire, dans Langage ASM, comme ça, tu pourras voir comment
fonctionne cette routine.

A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:


Retourner vers « Le forum Fantas-PIC »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités