Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Décodage d'une trame RC5



  1. #1
    IHCAAMEL

    Exclamation Décodage d'une trame RC5

    Salut tout le monde,

    voila j'ai essayé d'élaborer un petit programme pour le décodage d'une trame RC5 je l'ai testé ( la led indiquant une erreur s'allume ) mais je suis devant deux probabilités soit que mon programme est incorrect soit que ma télécommande avec laquelle je test n'utilise pas la codage RC5 peut être RC6 et je be dispose pas d'un oscillo pour tester les trames envoyés par ma télécommande

    je vais vous montrer mon programme si vous pouvez m'éclaircir mes erreurs

    Code:
    int i,ADRESSE,INSTRUCTION;
    void erreur(){
    portb.f7=1;
    delay_ms(1000);
    portb.f7=0;
    intcon.intf=0;
    }
    
    void led(){
    portb.f6=1;
    delay_ms(1000);
    portb.f6=0;
    delay_ms(1000);
    intcon.intf=0;
    }
    
    void interrupt(){
    
    ADRESSE=0X00;
    INSTRUCTION=0X00;
    i=0;
    
    // Start
    
    delay_us(889/2);
    
    for(i=0;i<2;i++){
    if (PORTB.F0==0){erreur();}
    delay_us(889);
    if (PORTB.F0==1){erreur();}
    delay_us(889);
    }
    
    
    // Sauter le bit de commutation et se positionner au 1/4 du 1 bit d'adresse;
    delay_us(1778+889/2);
    
    for(i=0;i<5;i++){
    if(PORTB.F0==0){ADRESSE<<=1;delay_us(889);if(PORTB.F0==1){ADRESSE=ADRESSE & 0XFE;}
    else erreur();}
    else
    ADRESSE<<=1;delay_us(889);if(PORTB.F0==0){ADRESSE=ADRESSE | 0X01;}
    else erreur();}
    
    for(i=0;i<6;i++){
    if(PORTB.F0==0){INSTRUCTION<<=1;delay_us(889);if(PORTB.F0==1){INSTRUCTION=INSTRUCTION & 0XFE;}
    else erreur();}
    else
    INSTRUCTION<<=1;delay_us(889);if(PORTB.F0==0){INSTRUCTION=INSTRUCTION | 0X01;}
    else erreur();}
    
    if(ADRESSE==0X00 && INSTRUCTION==0X01){led();}
    
    }
    
    void main(){trisb=0X01;intcon=0X90;option_reg.f6=0;
    
    asm SLEEP;
    
    
    }

    -----


  2. Publicité
  3. #2
    paulfjujo

    Re : Décodage d'une trame RC5

    bonjour,


    Est-tu sur de tes delais de tempo..
    Avec mikroC il faut se mefier.. c'est bien MikroC ?
    Tester par exemple 1000 boucle de delay(10mS) pour allumer une led et chronometrer...

    Quel type de microcontroler ?

    Quartz ?

    PLL utilisee ?

    Quel type de TSOP 36 ? (38,40 ?) association avec la telecommande.

    Utilisé une simple led pour debugger me parait un peu leger pour decouvrir
    ce qui ne vas pas..
    Il faudrait afficher le code recu soit sur un LCD soit sur un terminal (RS232)

    Peux-tu mettre des commentaires sur l'init de l'interrupt..
    ca evitera de retourner voir les details sur la datasheet du Micro..
    il n'ya pas de test sur l'origine de l'interrupt ni effacement de flag ?

  4. #3
    IHCAAMEL

    Re : Décodage d'une trame RC5

    Salut paulfjujo,

    oui c'est MikroC Pro, pour les temporisation sous MikroC Pro je ne sais pas vraiment est ce c'est efficace !!

    j'utilise un 16F877A avec un quartz (8Mhz), vous voulez dire quoi par PLL ? un TSOP avec une fréquence de réception de 36 Khz

    pour le test sur l'origine de l'interruption ce n'est pas nécessaire puisque je n'ai activé qu'une seule interruption et pour l'effacement du flag il existe au niveau soit du sous programme erreur() ou bien led()

    oubliant qu'il y un problème à part dans ce programme si vous pouvez me dire est ce il est correct en principe si oui je vais essayer de vérifier comme vous avez dis soit les temporisation ou bien coté matériel

    déjà il me semble que j'ai oublié un petit delay de 889 uS entre la capture de l'ADRESSE et l'INSTRUCTION je vais le réctifier maintenant pour savoir est ce c'est lui qui me pose problème ?!

    Merci paulfjujo

  5. #4
    IHCAAMEL

    Re : Décodage d'une trame RC5

    ça n'a pas fonctionné, j'ai une télécommande Philips RC 7847 je ne sais vraiment pas s'elle utilise un codage RC5 ou RC6

  6. #5
    RISC

    Re : Décodage d'une trame RC5

    Salut,

    Utilises le module CCP en mode Capture. Ce sera beaucoup plus simple à gérer.
    Des délais soft dans les interruptions conduisent souvent à de gros problèmes...

    Il y a plein d'exemples sur internet : http://www.microchip.com/forums/m509110.aspx

    a+
    Ma marotte ? les microcontrôleurs ;=)

  7. A voir en vidéo sur Futura
  8. #6
    paulfjujo

    Re : Décodage d'une trame RC5

    Citation Envoyé par IHCAAMEL Voir le message

    vous voulez dire quoi par PLL ?

    Merci paulfjujo
    Effectivement, il n'y a pas de PLL *avec ce microcontroleur 16F877.
    Ci joint un exemple (remanié pour un 18F258) qui donne le code des touches appuyé
    et ce pour une telecommande MARRANTZ RC5 2000
    Il faudra le readapter et modifier le parametrage en fonction du Quartz utilisé.
    Le codage des touches est en EEPROM.


    fichier C renommé en txt
    Fichiers attachés Fichiers attachés

  9. Publicité
  10. #7
    IHCAAMEL

    Re : Décodage d'une trame RC5

    Merci paulfjujo & RISC,

    paulfjujo le programme que tu m'as proposé est un peu difficile à comprendre surtout qu'il est pour un 18F et quelque instruction que je ne comprends pas.

    RISC si vous pouvez me donner un petit exemple de code qui utilise le mode capture du CCP pour l'appliquer dans mon programme j'ai cherché dans le help du mikroc pro mais je ne trouve que comment générer le signal PWM ou bien est ce qu'il n'y pas des librairie pour ce mode là (mode capture) ?

Sur le même thème :

Discussions similaires

  1. Décodage d'une chaine de caractères, PIC 16F en C
    Par marvinl dans le forum Électronique
    Réponses: 5
    Dernier message: 03/07/2012, 19h17
  2. Décodage Code RC5 PIC18F4520
    Par Linko360 dans le forum Électronique
    Réponses: 11
    Dernier message: 14/03/2012, 22h28
  3. PIC16f887, decodage RC5 philips
    Par mistral83 dans le forum Électronique
    Réponses: 16
    Dernier message: 21/04/2011, 20h29
  4. Analyse d'une trame I²C
    Par guicara dans le forum Électronique
    Réponses: 1
    Dernier message: 05/06/2010, 18h38
  5. décodage trame RC5
    Par apocalypse dans le forum Électronique
    Réponses: 2
    Dernier message: 08/01/2004, 20h09