Ir et pic code RC5
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 40

Ir et pic code RC5



  1. #1
    bypbop

    Ir et pic code RC5


    ------

    Bonjour j'ai réaliser un petit montage à base d'un pic 18F4550 et d'un recepteur IR.

    Je veux utiliser ma télécommande de pc qui utilise le protocole RC5
    Je suis débutant en électronique aprés mettre renseigner sur le protocole rc5 j'ai vu que le codage de la trame est en 14 bits.

    J'ai fait un petit bout de programme sous mikroC pour voir si mon recepteur fonctionne bien qd il recoit de l'ir ca fonctionne bien.

    Code:
    void clignote()
    {
    portd.b4=1;
    delay_ms(1000);
    portd.b4=0;
    delay_ms(1000);
    }
    
    void main() {
    
    TRISD = 0b01000000;
    
    
    while(1)
    {
    if (portd.b6==0)
    {
    clignote();
    }
    }
    }

    Voila ma question comment recuper la trame entière ? et gerer le temps je n'ai pas encore vu cette notion dans les pics ..

    est ce que qq'un peut m'expliquer par exemple si je veux la touche 1 de ma télécommande comment je peux le detecter dans mon code ?


    n'ayant pas encore d'oscilloscope ( je vais bientot en acheter un )

    pour info sur ma télécommande il y a une étiquette avec

    RC0508/00

    3139 228 84321

    Made in china

    CS 05037 E 021002


    Cordialement,
    bypbop

    -----

  2. #2
    PIXEL

    Re : Ir et pic code RC5

    la trame RC5 (norme Philips) se divise en deux:

    device (appareil) TV , ampli, dvd , etc...

    fonction :volume, chaine, piste , etc..

    tout est là :

    http://www.positron-libre.com/electr...5/code-rc5.htm

  3. #3
    bypbop

    Re : Ir et pic code RC5

    Bonjour Pixel,

    oui au niveau de la trame je m'etais deja documenté mais comme je debute je ne comprends pas comment je dois faire dans ma boucle de reception comment recuperer les differents bits au bon moment ..

    Cordialement,
    bypbop

  4. #4
    PIXEL

    Re : Ir et pic code RC5

    fouille sur le site Parallax... ou simplement avec gogol !

    des exemple de décodage RC5 avec un pic, ça se trouve.

  5. A voir en vidéo sur Futura
  6. #5
    maximilien

    Re : Ir et pic code RC5

    Citation Envoyé par bypbop Voir le message
    je ne comprends pas comment je dois faire dans ma boucle de reception comment recuperer les differents bits au bon moment ..
    En échantillonnant au BON moment.
    Et tu as de la chance, je viens de coder une télécommande IR avec le protocole SIRC qui, lui, code un '1' et un '0' en des temps différents.

    Citation Envoyé par bypbop Voir le message
    n'ayant pas encore d'oscilloscope ( je vais bientot en acheter un )
    J'ai utiliser un oscillo à mémoire pour savoir les codes de commande et d'adresse.
    Sans, ce sera peut être un peu plus difficile.

    Voici un petit bout de code permettant de réceptionner les 12 bits de ma trame.
    A toi de l'adapter.

    EDIT: Oups le code:
    Code:
    for(i=0;i<12;i++)
              {
                   if(IR==0)
                       {
                           trame >>= 1;
                           trame |= 0x8000;
                           Delay_us(1800);
                           continue;
                       }
    
                   if(IR==1)
                       {
                           trame >>= 1;
                           Delay_us(1200);
                           continue;
                       }
                   // continue jumps here
              }

  7. #6
    maximilien

    Re : Ir et pic code RC5

    Citation Envoyé par PIXEL Voir le message
    des exemple de décodage RC5 avec un pic, ça se trouve.
    Ici, par exemple:
    http://www.pic_examples.byethost3.com/SIRC.html

    Du tout cuit...

    Je m'en suis inspirer mais j'ai dû modifier pas mal de choses...

  8. #7
    bypbop

    Re : Ir et pic code RC5

    bonjour maximilien,

    merci pour le bout de code mais peux tu mettre la totalité pour que je vois ce que fais la fonction continue

    j en suis la pour l'instant :

    for(i=0;i=14;i++)
    {
    if (portd.B6 == 1)
    {
    delay_us(889);
    }
    if (pord.B6 == 0)
    {
    delay_us(889);
    }
    }


    Cordialement,
    bypbop

  9. #8
    bypbop

    Re : Ir et pic code RC5

    Bonsoir à tous,

    qu'un pourrait me dire comment je peux recuperer simplement dans la boucle les bits haut et bas ?
    j'ai vu q'un bits avait une duree de 1778 µs et qu'il se composé à moitié d'un niveau haut et bas ...

    mais je n'arrive pas à recuperer ces 14 bits dans ma boucle ...

    Merci pour votre aide .

    Cordialement,
    bypbop

  10. #9
    maximilien

    Re : Ir et pic code RC5

    Citation Envoyé par bypbop Voir le message
    qu'un pourrait me dire comment je peux recuperer simplement dans la boucle les bits haut et bas ?
    Du calme... en journée je n'ai pas particulièrement le temps de répondre.

    Citation Envoyé par bypbop Voir le message
    mais je n'arrive pas à recuperer ces 14 bits dans ma boucle ...
    Évidemment!!
    Que fait tu dans ta boucle?!?

    Rien, sauf une tempo!!

    As tu réellement, regardé mon bout de prog??

    et ça??
    trame >>= 1;
    trame |= 0x8000;
    A quoi ça sert?

  11. #10
    bypbop

    Re : Ir et pic code RC5

    oui justement maximilien j'ai bien vu que tu recuperais ta trame avec

    trame >>= 1;
    trame |= 0x8000;

    mais je ne comprends pas trop. Peux tu m'expliquer prk dans ton code il y a deux fois trame >>=1 ...

    sinon j'ai bien compris qu'il fallait boucler 14 fois pour recuperer les bits toutes les 1778 us ... mais ensuite ...

    Cordialement,
    bypbop

  12. #11
    maximilien

    Re : Ir et pic code RC5

    Citation Envoyé par bypbop Voir le message
    mais je ne comprends pas trop. Peux tu m'expliquer prk dans ton code il y a deux fois trame >>=1 ...
    Si tu ne comprends pas ce bout de code, tu peux toujours le simuler (je crois savoir que tu utilises MikroC?).

    Un indice: regarde l'aide de MikroC et plus particulièrement tout ce qui concerne les décalages.

    Ensuite pour recevoir ta trame, il te suffit de venir "lire la trame" via ton PIC.
    Et donc de réceptionner chacun de tes 14 bits.

    Je vais faire un dessin pour expliquer comme je fais avec le protocole SIRC.

  13. #12
    maximilien

    Re : Ir et pic code RC5

    Voici le schéma:

    les petits traits sur la courbes sont les échantillons que je prends avec le PIC.

    Si je tombe sur un '0' alors j'ajoute un '1' dans la trame et je décale.
    Et si je tombe sur un '1' alors je décale la trame (et donc j'ajoute un '0'.

    Comme le bit à '1' et celui à '0' sont de durée différentes je fais deux tempo différentes.

    Est ce clair?

    A toi de travailler maintenant.
    Images attachées Images attachées  

  14. #13
    bypbop

    Re : Ir et pic code RC5

    bonjour maximilien,

    ok je comprends mieux maintenant tu recuperes le bits à chaque fin d'un bits et si j'ai bien compris tu ne prends pas le start bits .

    je fais le bout de code et je mets ca.

    Bonne journée
    Cordialement,
    bypbop

  15. #14
    bypbop

    Re : Ir et pic code RC5

    Donc si j'ai bien compris moi comme mes bits sont de mm durée ...

    je devrais avoir ca :


    for(i=0;i=14;i++)
    {
    if (portd.B6 == 0)
    {

    trame >>= 1;
    trame |= 0x8000;
    }
    if (pord.B6 == 1)
    {

    trame >>= 1;
    }
    delay_us(1778);

    }
    je suis correct la ?

    Cordialement,
    bypbop

  16. #15
    maximilien

    Re : Ir et pic code RC5

    Citation Envoyé par bypbop Voir le message
    ok je comprends mieux maintenant tu recuperes le niveau logique à chaque fin d'un bits et si j'ai bien compris tu ne prends pas le start bits .
    Raté, heureusement que je prends le start bit!!

    Toi, ton start bit est comme les bits d'instruction et d'adresse donc plus simple: il suffit de le traiter comme un bit normal.

    Pour ton prog, il y a plusieurs façons de faire mais je commencerai par:
    - détecter un front descendant (debut de trame)
    - attendre 889/2 µs pour être au 1/4 du 1er bit
    - puis prendre l'état logique toutes les 889µs

    Si tu détecte dans l'ordre: 1,0 c'est un '1' que tu as reçu
    Si tu détecte dans l'ordre: 0,1 c'est un '0' que tu as reçu

  17. #16
    kronanberg

    Re : Ir et pic code RC5

    Salut !!

    Sinon il y a une méthode un peu plus propre pour réceptionner ta trame en utilisant les timers et une interruption de ton PIC.

    Le principe est assez simple :
    -> tant que rien est émis ton pic ne travaille pas
    -> Lorsque qu'une trame est émise, tu la détectes en te servant d'une interruption externe
    -> Dans cette interruption externe, tu déclenche un timer qui va te permettra d'aller lire la valeur de chaque bit !

    -> et ensuite il te reste juste à décoder la trame reçu pour savoir qu'elle touche sait

    Je vais essayer de retrouver un petit schéma du fonctionnement de mon décodage RC5 pour que ce soit plus clair !!

    @+

  18. #17
    maximilien

    Re : Ir et pic code RC5

    Citation Envoyé par kronanberg Voir le message
    Salut !!
    Sinon il y a une méthode un peu plus propre pour réceptionner ta trame en utilisant les timers et une interruption de ton PIC.
    Je suis d'accords et c'est au programme pour l'amélioration.

    Mais bon pour un début c'est une bonne façon de commencer.

    PS: c'est ce qui est fait dans mon liens donné plus haut.

  19. #18
    kronanberg

    Re : Ir et pic code RC5

    Voila j'ai retrouvé le schéma de principe que j'ai réalisé pour décoder la trame RC5.
    Images attachées Images attachées  

  20. #19
    kronanberg

    Re : Ir et pic code RC5

    Je suis daccor avec toi maximilien : c'est sur que pour un début faut peut être commencer autrement !!
    Mais comme ça il aura un petit exemple si y veut amélioré son code !

    tchao

  21. #20
    bypbop

    Re : Ir et pic code RC5

    merci kronanberg,

    mais je debute je n'ai encore jamais utilisé le timer et et les interruption
    je vais essayer dans un premier temps la methode avec la boucle celle que je comprends un peu plus et aprés je vais essayer ta methode.

    Cordialement,
    bypbop

  22. #21
    bypbop

    Re : Ir et pic code RC5

    voila qu'est ce que vous pensez ?

    unsigned short i,trame;
    void clignote()
    {
    portd.b4=1;
    delay_ms(1000);
    portd.b4=0;
    delay_ms(1000);
    }

    void main() {

    TRISD = 0b01000000;


    while(1)
    {
    if (portd.B6 == 1)
    {

    }
    else
    {
    delay_us(445);
    for(i=0;i<14;i++)
    {
    if (portd.B6 == 0)
    {
    trame >>= 1;
    trame |= 0x8000;
    }

    if (portd.B6 == 1)
    {
    trame >>= 1;
    }
    delay_us(889);
    }
    }
    }

    }

    j'aurais plusieurs question ensuite si c bon ..

    comment declarer la variable de ma trame de 14 bits

    et comment recuperer les 6 derniers bits de la commande par exemple pour commencer

    Cordialement,
    bypbop

  23. #22
    kronanberg

    Re : Ir et pic code RC5

    Bon pour le code a première vue il a l'air correct mais n'utilisant pas cette technique je ne peux pas te certifier que tu récupèreras bien ta trame.

    Sinon pour le type de variable a utilisé j'opterai pour un "unsigned int" (entier non signé généralement sur 16 bits) car tu veux récupérer les 14 bits de ta trame. Je dis généralement car le nombre de bits d'un type dépend du compilateur utilisé et de la cible.

    Mais admettons que tu récupère ta trame à l'aide d'une variable sur 16 bits, tu aura :

    T T T T T T T T T T T T T T X X

    Les T représentent les bits de ta trame. Maintenant pour récupérer, les 6 derniers bits il te suffit de réaliser un masquage. C'est à dire de multiplier les bits qui ne t'intéresse pas par 0 et les autres par 1.

    Par exemple, cette solution :

    T T T T T T T T T T T T T T X X
    & 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0

    et ensuite tu décales de deux vers la droite.
    Tu peux aussi décaler de 2 bits vers la droite dès le début et récupérer directement les 6 bits de poids faible.

    Par exemple :
    Instruction = Trame >> 2;
    Instruction = Instruction & 0x003F;

    voila tout !!!!!

    @ +

  24. #23
    bypbop

    Re : Ir et pic code RC5

    ok merci bcp pour tes précisions et la qualité de ton explication.

    ptite question qd tu dis :

    Tu peux aussi décaler de 2 bits vers la droite dès le début et récupérer directement les 6 bits de poids faible.

    pour le decalage :

    si j'ai : trame = 1011

    trame >> 2 ca donnera 11
    et trame << 2 ca donnera 10

    c bien ca ?

    ensuite comment recuperer une mombre binaire en decimal ...

    par exemple

    trame = 111; comment puis je faire pour avoir 7 sans avoir à le calculer moi meme ...


    Cordialement,
    bypbop

  25. #24
    kronanberg

    Re : Ir et pic code RC5

    Pour le décalage y me semble que ça donne plutôt ça :

    Si trame = 1011 (en suposant que trame soit sur 4 bits)
    trame >> 2 => 0010
    trame << 2 => 1100

    Sinon pas de soucie pour récupérer ton nombre en binaire. En faite dans ton code tu as plusieurs façon d'affecter une variable par exemple si tu veux affecter 7 ce sera :

    En décimal : test = 7;
    En binaire : test = 0b111;
    En hexa : test = 0x7

    Donc si tu récupéres ta valeur en binaire, tu n'as pas de conversion à faire car quand tu l'affichera ce sera surement en décimal et ta valeur faudra directement 7.

  26. #25
    bypbop

    Re : Ir et pic code RC5

    ok ca marche

    par contre il y a encore 2 petite chose qui me titille

    insctruction = instruction & 0x003F;

    j'imagine que c'est la valeur de la multiplication pour recuperer les 6 bits mais comment as tu fait pour la transformer ...

    ensuite dans ma boucle

    il y a :

    si j'ai un niveau bas donc un 0
    {
    trame >>= 1;
    trame |= 0x8000;
    }
    si j'un niveau haut donc un 1
    {
    trame >>= 1;
    }

    je n'ai pas bien compris le trame >>= 1; et trame |= 0x8000;


    Cordialement,
    bypbop

  27. #26
    Seb.26

    Re : Ir et pic code RC5

    Citation Envoyé par bypbop Voir le message
    je n'ai pas bien compris le trame >>= 1; et trame |= 0x8000;
    C'est équivalent à :
    Code:
    trame = trame>>1;
    trame = trame | 0x8000;
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  28. #27
    maximilien

    Re : Ir et pic code RC5

    EN #5 je te donne un bout de code
    Citation Envoyé par maximilien Voir le message
    et ça??
    trame >>= 1;
    trame |= 0x8000;
    A quoi ça sert?
    Citation Envoyé par bypbop Voir le message
    je n'ai pas bien compris le trame >>= 1; et trame |= 0x8000;
    Et #25 tu nous dis que tu ne le comprends toujours pas?!?

    Tu le simule sur MikroC!! (et passe par l'aide!).
    Ça ne va pas te prendre plus de 2 minutes!!

    On ne peut s'attaquer à une télécommande infrarouge sans d'abord avoir fait un peu d'interruption et des prog de base!

  29. #28
    bypbop

    Re : Ir et pic code RC5

    dslé maximilien mais j essaye de comprendre ce que je fais et comme je debute je ne le fais pas à la mm vitesse ...

    j'ai fais qques programmes sur mon pic et je ne maitrise pas encore totalement mikroC d'ailleurs je viens d'apprendre que l'on pouvait simuler un programme...

    moi jusqu'a present je compilais a chaque fois ...


    Cordialement,
    bypbop

  30. #29
    maximilien

    Re : Ir et pic code RC5

    Bon je vais essayer de t'expliquer.

    Retour sur ça:
    trame >>= 1;
    trame |= 0x8000;
    La première ligne décale vers la droite la trame exemple:
    trame= 0b1010 0101 1100 0011
    trame>>=1 va modifier "trame" et donner:
    trame= 0b01010 0101 1100 001
    trame à donc été décalé à droite de 1 bit.

    trame |= 0x8000 a pour action de faire
    trame = 0b01010 0101 1100 001
    OU 0b1000 0000 0000 0000 (=0x8000)
    et donne donc 0b11010 0101 1100 001
    car '1' OU '0' donne '1'

    Ensuite...
    Pour le programme de réception de la trame infrarouge.
    Il suffit de venir lire l'entrée connecté au TSOP et de décoder les bits. Puis par des décalages venir prendre le mot de commande ainsi que l'adresse dans la trame.

    J'ai vu dans ta discussion concernant l'USB avec un PIC que tu t'était démené pour faire marché ton programme, je vais donc t'aider à développer ta télécommande.

    As tu compris, maintenant, le bout de programme?

  31. #30
    bypbop

    Re : Ir et pic code RC5

    Merci maximilien,

    Voila comme je vais utiliser une télécommande que j utilisais sur mon pc et que je ne suis pas sur de la trame complete de la télécommande j'ai acheté un oscilloscope usb hier que je vais recevoir surement la semaine prochaine.

    Comme ca je pourrais dans un premier tps analyser ma trame et ensuite developper avec votre aide je l espere un petit programme de reception.


    je mets donc en standby ce post jusqu'a la reception de oscilloscope.


    Encore merci à tous
    Cordialement,
    bypbop

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. émission d'un code RC5 sans pic
    Par invite947be53c dans le forum Électronique
    Réponses: 3
    Dernier message: 01/06/2009, 17h19
  2. émission d'un code RC5 sans pic
    Par invite947be53c dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 01/06/2009, 11h08
  3. telecommande RC5 sur pic 18F
    Par jum0034 dans le forum Électronique
    Réponses: 9
    Dernier message: 15/10/2008, 17h47
  4. recuperation de code ir rc5 avec pic
    Par invite13ed46c1 dans le forum Électronique
    Réponses: 6
    Dernier message: 20/09/2008, 18h25
  5. emetteur code RC5 par pic
    Par alainav1 dans le forum Électronique
    Réponses: 7
    Dernier message: 25/10/2005, 13h44
Découvrez nos comparatifs produits sur l'informatique et les technologies.