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

Configurer registre PIC en C++



  1. #1
    petitnul12

    Configurer registre PIC en C++


    ------

    Bonsoir,

    Je tente de créer une fonction qui me configure mon Timer1 automatiquement en fonction de paramètre que je lui donne.
    Je calcule la valeur de TMR1 sans soucis, mais je la calcule en manipulant de INT, et la je bloque...

    J'ai du mal à voir comment je peut découpe mon INT en deux chiffres hexa pour les mettre dans TMR1H et TMR1L...

    Je suis vraiment sans idée la, vous avez déjà du faire ce genre d'opération ?

    -----

  2. Publicité
  3. #2
    Jack

    Re : Configurer registre PIC en C++

    Pour récupérer des bytes à partir d'un int:
    Code:
    int a;
    unsigned char lsb, msb;
    
    lsb = a & 0x0f;
    msb = (a >> 8) & 0x0f;

  4. #3
    Jack

    Re : Configurer registre PIC en C++

    ou, plus subtil avec bit fields:
    on définit une structure. C'est long, mais c'est réutilisable. C'est d'ailleurs comme ça que sont définis les bits et registres:
    Code:
    typedef unsigned char byte;
    typedef union {
    		unsigned short int16;
    		struct {
    			byte lsb:8;
    			byte msb:8;
    		}; 
    }registre16Bits;
    après, pour tester:
    Code:
            unsigned short TMR1 = 0x1122;
            byte TMR1H, TMR1L;
    	registre16Bits reg;
    	reg.int16 = TMR1;
            TMR1H = reg.msb;  // TMR1H = 0x11
            TMR1l = reg.lsb;  // TMR1L = 0x22
    Si on veut on peut définir également des bits particuliers
    Dernière modification par Jack ; 30/03/2013 à 01h22.

  5. #4
    petitnul12

    Re : Configurer registre PIC en C++

    Rola merci ^^

    Je ne pouvait pas imaginer un tel truc ^^ Merci bien =)
    Je vais tenter de mettre ça en application, quand j’aurai régler mon problème d’interruption =)

  6. #5
    petitnul12

    Re : Configurer registre PIC en C++

    Salut,

    Alors j'ai tenter de mettre en application ce que tu à noter hier, mais ca bloque du coté du registre haut (TMR1H)
    J'ai essayer différente méthode (avec ou sans masque, en castant avant ou après), mais rien ne fonctionne, ma diode clignote change d'état toute les 3 secondes environ au lieu de 500ms (si je force TMR1H à 0xD8 comme cela devrait être)

    Pour mon teste je prend _freq = 10 000 000 et _period = 1000

    Pense tu que d'utiliser un unsigned int peut bloquer le processus ?

    Code:
    void o_clock_init(struct o_clock *o, unsigned int _freq, unsigned int _period)
    {
        unsigned int reg;
    
        IPEN = 0;
        GIE = 1;
        PEIE = 1;
        TMR1IE = 1;
        TMR1IP = 0;
        T1CON = 0x01;
    
        reg = _period*_freq/1000000;
        o->period = 65536 - reg;
    
    
        TMR1L = (unsigned char)((o->period) & 0x0F);
        TMR1H = (unsigned char)(((o->period) >> 8) & 0x0F);
    
        TMR1IF = 0;
    }

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

    Re : Configurer registre PIC en C++

    Je ne sais pas comment fonctionne le timer de ton pic, donc je ne peux pas vérifier si le principe du calcul de TMR1 est juste ou faux.
    Ce que tu peux faire en revanche, c'est d'utiliser le debugger pour vérifier si leurs valeurs sont correctes ou non.

    Je ne comprends pas un autre truc: on ne peut pas initialiser TMR1 sans passer par TMR1L et TMR1H?

  9. Publicité

Sur le même thème :

Discussions similaires

  1. le registre OSCCON, OSCTUNE(programation de pic)
    Par dargbador dans le forum Électronique
    Réponses: 2
    Dernier message: 14/05/2011, 14h01
  2. la valeur du registre STATUS des pic
    Par sidali01 dans le forum Électronique
    Réponses: 2
    Dernier message: 22/03/2010, 23h56
  3. Pic et registre
    Par f6bes dans le forum Électronique
    Réponses: 4
    Dernier message: 26/04/2007, 22h03
  4. pic: afficher registre w
    Par Jack dans le forum Électronique
    Réponses: 11
    Dernier message: 24/12/2006, 17h36
  5. PIC: Registre de travail W
    Par marc.suisse dans le forum Électronique
    Réponses: 10
    Dernier message: 04/09/2006, 22h03
Découvrez nos comparatifs produits sur l'informatique et les technologies.