PIC16f887, decodage RC5 philips
Répondre à la discussion
Affichage des résultats 1 à 17 sur 17

PIC16f887, decodage RC5 philips



  1. #1
    invite0f4614b0

    PIC16f887, decodage RC5 philips


    ------

    Bonjour à tous.

    je débute dans la programmation des PIC.

    Je suis à la recherche d’un code en C, me permettant de décoder la trame Rc5 Philips.
    Je sais, d’après Internet que : le standard RC5 de Philips, est composé de :
    2 bits de start, 1 et 1.
    1 bit, Alternativement 0 et 1,
    5 bits identifiant la télécommande.
    6 bits identifiant la touche.
    Soit 14 bits, et que cela dure environ 25 millisecondes.
    J’ai bien trouvé sur le net des codes, soit ils ne sont pas en C, soit ils utilisent d’autre Pic que le mien et comme les explications sont inexistantes ou très pauvre, je n’arrive pas à mes fins…
    En fait je cherche un code avec plein d’explication (ici on fait ceci…, ici il se passe cela…, là la sortie xx est…) que je puisse le comprendre et le faire évoluer au gré de mes envies et de mes applications.
    Dans un premier temps je travaille avec un 16f887 et un récepteur SFH5110.
    Plus tard, j’envisage de passer sur un 18f, si mon code pouvait être transposable...

    Pouvez vous m’aider dans la réalisation de mon proget.

    Merci d’avance.

    Cordialement Franck.

    -----

  2. #2
    invitedb9b1ced

    Re : PIC16f887, decodage RC5 philips

    Salut,

    Si tu veux il est toujours possible que tu prennes un code en C déjà existant, même si c'est pour un autre PIC, que tu tentes de le transposer pour le tien et qu'on t'aide si tu n'y arrives pas.

    A+

  3. #3
    invite0f4614b0

    Re : PIC16f887, decodage RC5 philips

    bonsoir

    j'ai déjà essayer de transposer un code, et si cela avais marcher, je ne serai pas là à poser ma question...

  4. #4
    invitedb9b1ced

    Re : PIC16f887, decodage RC5 philips

    Et tu bloques à quel endroit sur ce code ?
    On peut t'aider à te le modifier pour qu'il réponde à tes attentes.

    Je ne sais pas si tu as remarqué mais ton post n'a fait aucune réponse, ça veut dire que personne n'a de code tout pondu à te filer.

    À toi de voir !

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

    Re : PIC16f887, decodage RC5 philips

    bonsoir

    Donc voila j'utilise un16f887, un récepteur IR SFH5110 un quartz de 8mhz et j'essaye de faire fonction le code trouver sur le site d'Angeliz
    Code:
    //**********************************
    //*Récepteur télécommande pour Lecteur MP3
    //*Offert par Angeliz 23/10/2001          
    //**********************************
    
    #include"pic1684.h"
    #define bitset(var,bitno) ((var) |= 1 << (bitno))
    #define bitclr(var,bitno) ((var) &= ~(1 << (bitno)))
    
    unsigned int iCode1;
    unsigned char cCodeA,cCodeS,cCodeAmem,cErr;
    unsigned char cFlag,cCurseur;
    
    static void interrupt inter(void);
    void Touche(void);
    void RC5(void);
    void Raz(void);
    
    main()   //** début de Main **
    {
    GIE=1; T0IE=0;
    TRISA=0b10000; // RA4 entrée signal RC5
    TRISB=0;
    OPTION=0b10000110;// 128
    
    cErr=0;
    cCodeAmem=0;
    TMR0=1;
    T0IE=1;
    while(TMR0 !=0);
    T0IE=0;
    Raz();
    
     while(1)   // boucle while 
       {
       if(cFlag==5)
          {
          cFlag=6;
          TMR0=1;
          T0IE=1;
          }
    
       if((cFlag>=8) && (!RA4))
          {
          cFlag=0;
          cCurseur=12;
          cErr=0;			
          }
    
       if(cFlag<=4)  RC5();
       if(cFlag==7)  Touche();                 			
      }
    } //** fin de Main **
    
    
     //** traitement des touches en fonction de cCodeS **
    
     void Touche(void)
       {
       unsigned int count;
       if(cCodeS==1) PORTA=1;       
       if(cCodeS==2) PORTA=4;
       if(cCodeS==3) PORTA=10;
       if(cCodeS==4) PORTA=11;
       if(cCodeS==0x10) PORTA=7;  // Volume +
       if(cCodeS==0x11) PORTA=15; // Volume - 
       if(cCodeS==0x20) PORTA=3 ; // programme +
       if(cCodeS==0x21) PORTA=8 ; // programme -
       
       for(count=1;count<=12;count++) // 390ms
          {
          TMR0=1;
          while(TMR0 != 0);
          }
       PORTA=0;
    
       Raz();			
       } 
    
     //** réception du code RC5 dans la variable cCodeS **
    
     void RC5(void) 
       {
       if(cFlag==0)
    	{
    	TMR0=238; // 2,427ms
    	T0IE=1;
    	cFlag=1;
    	}
    
       if(cFlag==2)
    	{
    	TMR0=243; // 1,765ms   
    	T0IE=1;
    	cFlag=3;
    	}
    
      if(cFlag==4)
    	{
    	T0IE=0;
    	if(cErr==0)
    		{
    		cFlag=5;
    		return;
    		}
    
    	bitset(iCode1,0);
    	if(RA4)bitclr(iCode1,0);
    	cFlag=2;
    	
    	if(cCurseur>1)
    		{
    		iCode1=iCode1<<1;
    		cCurseur--;
    		}
    	     else	
    	         {
    	         cFlag=5;
    	         cCodeS=iCode1 & 63; // recupére  s5 s4 s2 s3 s1 s0   
    	         cCodeA=(iCode1 >> 6) & 63; //    rep a4 a3 a2 a1 a0 	                      	
    	        }	
    	}
       if(!RA4)cErr=1;
      }
    
     void Raz(void)
       {
       iCode1=0;
       cFlag=8;
       }
    
     static void interrupt inter()
       {
       if(T0IF)
            {
            if(cFlag<=3 || cFlag==6) cFlag++;
            T0IF=0;
            }
       }
    J'utilise mikroC pro pour générer et transférer le code et celui ci me met plein d'erreur.

    J'ai surprimé le "#include", je ne sais pas à quoi serve les 2 "#define".
    J'ai rajouté "INTCON." devans les "GIE" et les "TOIE".
    Je ne sais pas ou changer les valeurs pour le faire tourner avec mon quartz.
    ...

    si une âme charitable pouvais m'aider, ce serais sympa.

    merci d'avance.
    A+

  7. #6
    invite0f4614b0

    Re : PIC16f887, decodage RC5 philips

    aussi...
    Code:
    OPTION=0b10000110;// 128
    correspond à quoi?
    je pense que c'est le paramétrage du timer 0 ?????????

  8. #7
    invite29971eb1

    Re : PIC16f887, decodage RC5 philips

    Citation Envoyé par mistral83 Voir le message
    aussi...
    Code:
    OPTION=0b10000110;// 128
    correspond à quoi?
    je pense que c'est le paramétrage du timer 0 ?????????
    Sans compter que 0b10000110, ça ne fait pas 128, mais 134....

  9. #8
    invite29971eb1

    Re : PIC16f887, decodage RC5 philips

    Citation Envoyé par mistral83 Voir le message
    J'utilise mikroC pro pour générer et transférer le code et celui ci me met plein d'erreur.

    J'ai surprimé le "#include", je ne sais pas à quoi serve les 2 "#define".
    J'ai rajouté "INTCON." devans les "GIE" et les "TOIE".
    Je ne sais pas ou changer les valeurs pour le faire tourner avec mon quartz.
    ...
    Si tu supprimes le #include, tu as pris soin de préciser ailleurs quel micro tu utilises?

    Les define sont des macros, l'équivalent de fonctions en gros. Dans les faits, le compilateur remplace chaque appel par le bout de code...Tu perds en taille de code, mais tu gagnes en rapidité et en utilisation de la pile

  10. #9
    invite0f4614b0

    Re : PIC16f887, decodage RC5 philips

    oui mon PIC et mon quartz sont precisé lorsque je crée mon proget dans mon compilateur.

  11. #10
    invite29971eb1

    Re : PIC16f887, decodage RC5 philips

    Et quels sont tes messages d'erreur?

  12. #11
    invite0f4614b0

    Re : PIC16f887, decodage RC5 philips

    Voila les message d'erreur (le premier chiffre, c'est la ligne, le 2eme c'est le code erreur):

    9 402 ; expected, but 'inter' found
    19 324 Undeclared identifier 'OPTION' in expression
    48 1503 Result is not defined in function: 'main'
    77 393 'RC5' Identifier redefined
    127 402 ; expected, but 'inter'
    127 393 'interrupt' Identifier redefined
    134 1503 Result is not defined in function: 'inter'

  13. #12
    invite29971eb1

    Re : PIC16f887, decodage RC5 philips

    Tu essaies tout simplement de compiler sous MikroC un programme qui a été écrit pour un autre compilo. Il faut adapter la syntaxe.

    Tu devrais commencer par des exemples simples sous MikroC, et la traduction coulera de source.

  14. #13
    invite0f4614b0

    Re : PIC16f887, decodage RC5 philips

    Des exemple simple, j'ai fais.
    Puis faire clignoter une led plus ou moins vite ou créer des chenillard, c'est sympa mais j'aspire a autre chose...

    Fana de HIFI, je construis mes ampli s et enceintes, en ce moment j'ai pour projet un preampli télécommander, ceci explique mon poste et ma recherche de code RC5.

  15. #14
    invitedb9b1ced

    Re : PIC16f887, decodage RC5 philips

    C'est quoi le lien du code d'origine ?

    Tu connais la fréquence du quartz qui était utilisée dans le code ? Car là il y a du timer0 utilisé (dans RC5(); ) et si ton quartz ne tourne pas à la même cadence que celui d'origine, tu n'auras pas les mêmes temps.

    De plus, si tu as modifié ton code pour du 16f887, tu as carrément oublié de changer le include du header de ton pic (qui est toujours en "pic1684.h" - d'ailleurs je ne connais pas le 1684 comme référence, il doit manquer un F quelque part - ).

    Sinon si ça peut t'aider voici des codes RC5 utilisés pour des pic compilés sous Mikro-C : http://www.abcelectronique.com/forum...ad.php?t=59927
    http://paulfjujo.free.fr/IR_RC5/Deco...RC5_18F252.htm

    Sinon question bête : est ce que sais quel philosophie de code tu veux utiliser pour décoder tes trames? Par exemple si tu vas utiliser une mesure de temps entre chaque front détecté et ainsi en déduire le bit associé, ou alors détecté le type de front et ainsi en déduire le bit associé, etc etc.

    Le code en sera tout à fait changé ...

    A++

  16. #15
    invite0f4614b0

    Re : PIC16f887, decodage RC5 philips

    bonsoir,

    Voici le lien ou j'ai trouver le codehttp://angeliz.free.fr/electro/elec2.htm
    il utilise un quartz de 4Mhz...

    Sinon question bête : est ce que sais quel philosophie de code tu veux utiliser pour décoder tes trames? Par exemple si tu vas utiliser une mesure de temps entre chaque front détecté et ainsi en déduire le bit associé, ou alors détecté le type de front et ainsi en déduire le bit associé, etc etc.
    ... a dire vrai, je me fou un peu de la façon avec la quelle est décodée la trame, je veux un code qui fonctionne et que je puisse modifier a ma guise.

    Bonne soirée, en espérant avoir quelque chose de convainquant...

  17. #16
    invitedb9b1ced

    Re : PIC16f887, decodage RC5 philips

    Salut,

    Citation Envoyé par mistral83 Voir le message
    bonsoir,

    Voici le lien ou j'ai trouver le codehttp://angeliz.free.fr/electro/elec2.htm
    il utilise un quartz de 4Mhz...
    Donc si le quartz n'est pas le même comment espères tu avoir le même résultat ?!

    Citation Envoyé par mistral83 Voir le message
    ... a dire vrai, je me fou un peu de la façon avec la quelle est décodée la trame, je veux un code qui fonctionne et que je puisse modifier a ma guise.
    Si tu veux le modifier à ta guise, tu as grands intérêts à comprendre comment ça fonctionne. Donc si toi tu te fous de savoir comment décoder la trame, moi je me fou de t'aider à trouver ta solution la plus adéquate à ton problème.

    Citation Envoyé par mistral83 Voir le message
    Bonne soirée, en espérant avoir quelque chose de convainquant...
    C'est beau l'espoir, à croire qu'on va te pondre un projet tout fait, commenté, compilable sur tous les compilos existant aussi ?! Si vraiment mon aide te déplaît, ne poste pas sur le forum. On est ici pour échanger, apprendre, comprendre par soi même et avec les autres. Si tu veux une solution toute faite tu vas chez RS, Farnell ou autre fournisseurs non gratuits.

    Bon courage pour tes problèmes !

  18. #17
    invite0f4614b0

    Re : PIC16f887, decodage RC5 philips

    Mr Ammoniaque,

    Je ne sais pas qui tu es et je ne veux pas le savoir mais une chose est sure je n'aime pas le ton de ta dernière réponse...

    Je ne suis pas du genre à attendre que cela tombe tout cuit dans mon assiette, si je savais tout, aucun intérêt a venir sur un forum...
    Saches que lorsque je pose une question sur un forum, c'est que je n'ai pas la réponse et que cela fait plusieurs jours, voir plusieurs semaines que je cherche la réponse…

    Pour l’histoire du quartz, j’en suis conscient et c’est pour ça que j’ai demandé ou et quoi modifier…
    De plus la méthode de traduction de la trame, c’est vrai je m’en fou, ce que cherche justement c’est de comprendre comment on fais pour la traduire, mais c’est pas avec ton blabla et tes moqueries sous entendues que cela fait avancer les choses…

    Sincèrement, je pensais, qu’en venant sur ce genre de forum, il y aurai des personnes compétentes qui pourrai me renseigner, qui pourrai m’aider, m’apprendre et avec qui je pourrai échanger…
    Mais je m’aperçois que ce n’est pas le cas…

    J'en suis navré...






Discussions similaires

  1. Microcontrolleur Multi-tâche PIC16F887?
    Par invite001092f9 dans le forum Électronique
    Réponses: 3
    Dernier message: 13/02/2010, 02h24
  2. Aide config PIC16F887
    Par Toufinet dans le forum Électronique
    Réponses: 10
    Dernier message: 04/06/2009, 07h41
  3. PIC16F887 delay_ms() problème
    Par invitec6603a9c dans le forum Électronique
    Réponses: 4
    Dernier message: 01/06/2008, 09h29
  4. 4pwm avec un pic16F887
    Par inviteed1e18b0 dans le forum Électronique
    Réponses: 0
    Dernier message: 20/05/2008, 08h22
  5. décodage trame RC5
    Par invite4aa0e93b dans le forum Électronique
    Réponses: 2
    Dernier message: 08/01/2004, 20h09
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...