IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres architectures Assembleur Discussion :

[PIC 16F84] Décodage manchester


Sujet :

Autres architectures Assembleur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 125
    Points : 45
    Points
    45
    Par défaut [PIC 16F84] Décodage manchester
    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 !

  2. #2
    Membre à l'essai
    Homme Profil pro
    rien
    Inscrit en
    Février 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : rien
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2013
    Messages : 13
    Points : 15
    Points
    15
    Par défaut possibilité alternative pour ceux qui ne sont pas amis avec le (dé)codage manchester
    Hello! désolé pour le déterrage... mais:
    Apparemment, tu es libre de choisir le codage que tu veut... donc...
    tu pourrait te baser sur un codage(dont je ne connais pas le nom) qui ressemblerait à ça:

    Nom : codage T2T.jpg
Affichages : 1010
Taille : 13,7 Ko
    (désolé, c fait à l'arrache)
    1 =Temp x 1
    0 =Temp x 2
    fin =Temp x 3
    (tu peut aussi mettre un start avec Temp x 3)

    avantages:
    1) facilité de codage/décodage
    2)chaque 1 se passe sur une seule alternance et te fait donc gagner du temps
    3)tu te cale sur chaque alternance et tu mesure sa longueur(pas de perte de synchro)
    4)si un des temps est plus petit qu'un 1, c'est un parasite, il suffit de l'ignorer et continuer à compter, si un
    des temps est plus grand qu'un 1 mais plus petit qu'un 0, c'est un parasite aussi...

    PS: tu peut gérer l'inversion par software(comme ça tu économise une porte logique et de la place!)
    RE-PS: penses toujours à vérifier la validité des données entrantes(et met un checksum, ça coûte rien)

    Dans l'espoir que ça serve à quelqu'un...
    salut!

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 125
    Points : 45
    Points
    45
    Par défaut
    Pas de problème pour le déterrage, quand c'est constructif c'est très bien.

    J'avais résolu mon problème quelques jours après avoir posté ici, j'avais juste appliqué une mauvaise tempo dans mon étape 2) Par la suite j'ai fabriqué mon prototype et j'ai pas pensé à mettre à jour mon post en résolu.

    Je prend bonne note de ta suggestion, ça me servira forcément un jour!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Décodage Manchester
    Par bucher0n dans le forum Signal
    Réponses: 10
    Dernier message: 17/06/2008, 13h48
  2. [PIC 16F84] Temporisation
    Par christian_69 dans le forum Autres architectures
    Réponses: 2
    Dernier message: 18/04/2008, 22h58
  3. [pic 16f84] programmation en c pour RS 232
    Par nojnoj dans le forum C
    Réponses: 2
    Dernier message: 19/03/2007, 11h55
  4. [PIC 16F84 et 16F877] Programmateurs
    Par Blue_Strike dans le forum Autres architectures
    Réponses: 3
    Dernier message: 08/03/2007, 11h46
  5. [PIC 16F84] Conversion source hexa vers asm
    Par Page35 dans le forum Autres architectures
    Réponses: 2
    Dernier message: 08/12/2005, 22h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo