PIC sous CC5X, Programmation avec DS1302
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

PIC sous CC5X, Programmation avec DS1302



  1. #1
    invite5b0b28b7

    Question PIC sous CC5X, Programmation avec DS1302


    ------

    Bonjour,

    Je suis nouveau ici et je viens direct vous embêter avec une question certainement simple pour les addicts mais cela fais maintenant plusieurs jours que je reste bloqué là dessus.


    Je souhaite donc faire intéragir un DS1302 avec mon PIC16F877A.

    Je me suis basé sur un code d'exemple, mais ce dernier semble pas fonctionner, même après quelques modifications.

    Je n'arrive pas bien à saisir cette déclaration:
    Code:
     unsigned char time_rx @ 0x30;        //define receive reg.
     static volatile bit time_rx7   @ (unsigned)&time_rx*8+7;   //receive reg highest.
    (CC5X ne reconnait pas le 'volatile')

    Donc ma question est pourquoi l'on souhaite attribuer l'adresse &time_rx*8+7 qui si je calcule est 0x187 (391) ?
    Je suppose qu'à la base c'est pour un décalage binaire mais ces deux adresses ne sont pas juxtaposé...

    La variable time_rx7 est ensuite utilisé ici:
    Code:
    unsigned char time_read_1()
     {
       int j;                            //set the loop counter.  
       TRISB4=1;                         //continue to write 8bit 
       for(j=0;j<8;j++)                  
          {
            sclk=0;                       //pull low clk                   
            time_rx=time_rx>>1;           //judge the send bit is 0 or 1.  
            time_rx7=i_o;                //put the received bit into the reg's highest.
           sclk=1;                       //pull high clk                 
          }                                                              
        TRISB4=0;                        //finished 1 byte,pull low clk  
        sclk=0;                          
        return(time_rx);                 
      }


    J'ai aussi essayé par une autre methode que j'ai vu sur le net afin de ce passer de cette variable ne la saisissant pas bien:
    Code:
    unsigned char time_read_1()
     {
       int j;                            //set the loop counter.  
       TRISB.4=1;                         //continue to write 8bit 
       for(j=0;j<8;++j)                  
          {
            sclk=0;                       //pull low clk                   
    
    
    if(i_o == 0)
    {
    time_rx = time_rx & 127;
    }
    else
    {
    time_rx = time_rx & 128;
    }
            time_rx=time_rx>>1;  
    
           sclk=1;                       //pull high clk                 
          }                                                              
        TRISB.4=0;                        //finished 1 byte,pull low clk  
        sclk=0;                          
        return(time_rx);                 
      }

    Dans les deux cas l'affichage retourne toujours 000000.


    Vous pouvez voir le code de base à cette adresse:
    http://pastebin.com/f66cfc69c

    Le même code que j'ai modifié pour le rendre compatible avec CC5X:
    http://pastebin.com/f6a624640


    Notez que la routine d'affichage fonctionne correctement.


    Je vous remercie pour toute l'aide que vous pourriez m'apporter

    -----

  2. #2
    invitee0bbe70d

    Re : PIC sous CC5X, Programmation avec DS1302

    Bonsoir,

    C'est très bizarre que le volatile ne passe pas...
    C'est une directive du langage C.
    CC5X est un "vieux" compilateur un peu limité.

    Mon conseil est de changer de compilateur et d'utiliser le compilateur qui a été utilisé à l'origine.
    Au vu de la syntaxe, je pense qu'il s'agit du compilateur Hitech.

    Il existe une version gratuite qui fait tous les PIC10/12/16 et qui n'a plus de limitation de taille ni de nombre de banques.

    Tu peux télécharger et utiliser (PICC Lite) :http://microchip.htsoft.com/products...cpro-modes.php
    Tu vas en bas du tableau, dernière rangée, colonne de droite.
    Sous "Download and operate in Lite mode" tu peux cliquer le lien Windows qui te permet de t'enregistrer pour recevoir cette version gratuite ;=)

    Cela devrait passer du premier coup ;=)
    Le compilateur Hitech peut aussi s'utiliser dans MPLAB.

  3. #3
    invite5b0b28b7

    Re : PIC sous CC5X, Programmation avec DS1302

    Oui en effet CC5X est penible à utiliser mais c'est le seul de gratuit que j'ai pu trouver, je vais de suite essayer ce compilo, merci pour le tuyo

  4. #4
    invite5b0b28b7

    Re : PIC sous CC5X, Programmation avec DS1302

    En effet avec HI-Tech C PRO la compilation ce passe sans problème mais il y a toujours un problème au niveau de la recupération des datas...

    Ce qui est étrange c'est que l'affichage des secondes affiche dans l'ordre (chaques secondes) ceci: 0 - 1 - 0 - 3 - 0 - 1 - 0 - 7 - 0 - 1 au lieu de 1-2-3-etc..

    Ceci pareil pour les minutes et les heures... Pourtant la fonction display semble correctement fonctionner..

    J'arrive pas à comprendre comment on arrive à ces nombres, pourtant il y a qqch de logique car il changent toutes les secondes, et les minutes changent chaques minutes donc le timer semble correctement fonctionner...

    Certainement un problème de mise en forme l'ors de la récupération des data, à mon avi toujours ce time_rx7 qui veut ma peau ^^

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Programmation sous Flowcode d'un PIC 16F84
    Par invite923c5f28 dans le forum Électronique
    Réponses: 9
    Dernier message: 18/03/2009, 17h02
  2. programmation pic par usb sous linux
    Par invitef4f2bdc7 dans le forum Électronique
    Réponses: 8
    Dernier message: 27/08/2008, 22h03
  3. Réponses: 8
    Dernier message: 07/04/2008, 09h07
  4. Programmation horloge RTC DS1302
    Par invite9f1df75e dans le forum Électronique
    Réponses: 33
    Dernier message: 19/03/2008, 14h30
  5. Interruption avec CC5x (Pour pic)
    Par joseph4008 dans le forum Électronique
    Réponses: 4
    Dernier message: 28/09/2005, 18h07
Découvrez nos comparatifs produits sur l'informatique et les technologies.