Bonjour,
Pour un projet perso je met au point un émetteur + récepteur infrarouge capable d'envoyer et recevoir une trame codée en Manchester. L'émetteur et le récepteur sont basés sur un PIC16f84 chacun.
Mon problème est que la donnée décodée par le récepteur ne correspond pas à celle envoyée et je ne trouve pas ce qui cloche. J'ai donc besoin d'aide.
Du côté de l'émetteur j'envoie une trame composé d'un bit de start + 8 bits de donnée codé en Manchester. Cet envoi est modulé à une fréquence de 33Khz.
J'ai pris pour convention que:
- un front montant code un 0
- un front descendant code un 1
- un bit entier vaut 1620µs
- un demi-bit vaut donc 810µs
Pour les essais j'envoie en boucle la trame valant 100001010 suivie d'une pause de 1s.
___________________________________________________
Du côté du récepteur, le signal est démodulé par un capteur type TSOP passe ensuite dans une porte inverseuse (car la sortie du capteur envoie normalement un 0 sur réception d'un signal modulé à la bonne fréquence) et rentre sur la broche RA0 (nommée RPIN dans le programme).
Le port B est quant à lui pourvu de 8 leds afin d'afficher la donnée reçue.
Pour décoder le signal manchester voici comment je procède:
1) J'attend le front descendant du bit de start
2) je déclenche une tempo durant 3/4 de bit (1215µs) afin de me positionner au milieu du 1er demi-bit suivant.
3) j'enregistre la valeur du demi-bit
4) j'attend le front à venir pour me resynchroniser
5) retour à l'étape 2)
C'est donc ce que j'ai tenté de faire dans mon programme de décodage. Il est donc censé faire les étape 2) 3) 4) et 5) 8 fois de suite afin de remplir une variable (appelée Buffer). Quand la variable est remplie je l'affiche sur le port B. Problème j'ai pas la bonne valeur !
Je vous remercie par avance !
Partager