Timer pour gestion temps réel 18f2550
Répondre à la discussion
Affichage des résultats 1 à 30 sur 30

Timer pour gestion temps réel 18f2550



  1. #1
    invite3de9f323

    Timer pour gestion temps réel 18f2550


    ------

    Bonjour à tous, ça fait un bon moment que je ne suis pas revenue poser une question, mais la, il est temps.
    Voila, j'ai un petit problème avec les timers. J'ai pus lire un cours sur le site http://hhollard.club.fr/prog_pic_c.htm qui est pas mal. Mais il ne correspond pas à la version de mon compilateur, donc pas simple.

    Donc pour poser mon problème, je voudrais savoir si quelqu'un à déjà réaliser un compteur, genre horloge en utilisant les timers. Et si oui comment ?

    Pour que ce ne soit pas trop compliqué, si vous pouviez me donner un exemple de programme, avec la configuration des registres, de sorte à utiliser un timer, qu'il compte tous seule, et que toutes les 1 secondes par exemple, il change une sortie du pic. entre temps, vu que je veux utiliser les timers pour faire autre chose pendant le comptage, le pic devra allumer une led en fonction d'un interrupteur ou d'un bouton poussoir.

    En gros ce dont j'ai besoin, c'est de la structure du programme. comment lire le timer, comment le configurer, comment le remettre à 0 quand nécessaire. Voila.

    Si vous connaissez un site qui explique bien cela pour les 18f, avec le compilateur ccs je suis preneur. Sinon, je suis preneur de chaque bout de code que vous pouvez donner.

    Merci bien

    -----

  2. #2
    invitea674c8fa

    Re : Timer pour gestion temps réel 18f2550

    1) oui tu peux faire une "RTC" avec un 18F et un timer
    2) Utilise un quart 32768 Hz, que tu branches sur l'oscillateur secondaire du PIC.
    3) Configure ton timer pour qu'il compte les événements de l'oscillateur interne
    4) Ce timer fonctionnera sous interruption, il incrémentera tes variables secondes, minutes, heures dans sa routine d'interruption, tu pourras alors dans ton programme principal gérer ton affichage, et tes fonctions autres que horloge.

    Si tu sais programmer en C, il te suffit de lire la datasheet de ton µC, tout est expliqué pour configurer les registres, et comme la nature est bien faite, c'est meme classé par modules dans la datasheet, avec en bonus des bouts de code. Pour le reste, il te suffit de récupérer:
    - DS51297F: MPLAB® C18 C COMPILER LIBRARIES
    - DS51295F: MPLAB® C18 C COMPILER GETTING STARTED
    - DS51288J: MPLAB® C18 C COMPILER USER’S GUIDE

    Ces 3 docs ainsi que la datasheet de ton µC te suffisent largement pour créer ton application, tu as tous les bouts de code nécessaires dans ces documents.

    A+

  3. #3
    invitea674c8fa

    Re : Timer pour gestion temps réel 18f2550

    Allé, je me sens l'âme charitable, voici les 3 doc indispensables

    Petit conseil, commence par le USER GUIDE
    Fichiers attachés Fichiers attachés

  4. #4
    invite3de9f323

    Re : Timer pour gestion temps réel 18f2550

    Merci Dralaf, J'ai réussis à faire quelque chose qui me parait presque bon. Par contre, je suis imposé dans le choix du quartz, obligé de prendre un 20MHz.

    J'ai donc réussi à me faire une espèce d'horloge, vu que je suis sur une maquette d'essai, je n'ai que des led's à ma dispo. Mais je peu afficher mes valeurs sur le serial port monitor via l'usb du pic, et la, le seul problème que j'ai c'est que ma seconde est un peu plus courte qu'une seconde réelle.

    J'ai utilisé le setup_counters, mais la ou je ne saisi pas c'est au niveau des calculs de boucles du tmro. D'après mes calculs, il me faut (1000/6) Boucles pour avoir une seconde avec un pré diviseur de 256, mais comme je l'ai dis, la seconde est légèrement trop courte, en gros, j'ai a peu près 10 secondes d'avance par minutes.

    Mais je ne désespère pas, lol.

    En tout cas, une fois que j'ai trouvé, je vous met à dispo tout ce que j'ai fait. Ça peu toujours servir.

  5. A voir en vidéo sur Futura
  6. #5
    Qristoff
    Animateur Électronique

    Re : Timer pour gestion temps réel 18f2550

    Citation Envoyé par Tyller Voir le message
    Merci En tout cas, une fois que j'ai trouvé, je vous met à dispo tout ce que j'ai fait. Ça peu toujours servir.
    C'est gentil de penser à nous, mais pour le RTC, il existe des composants tout fait, qui compte tout seul, et qui continuent à tourner hors tension...
    Pourquoi s'embêter à faire réaliser cette tâche par le µC ?
    http://www.maxim-ic.com/products/rtc...ime-clocks.cfm

    A moins de chercher le pédagogique.

  7. #6
    invitea674c8fa

    Re : Timer pour gestion temps réel 18f2550

    @Tyler: tu conserves ton quartz de 20MHz qui va fixer la fréquence de fonctionnement de ton systeme, mais tu peux ajouter un second quartz qui pilotera uniquement l'incrementation de ton timer (32768kHz ==> quartz d'horloger). Il ne faut pas créer des boucles d'attentes pour avoir ta tempo d'une seconde, mais parametrer correctement ton Timer pour qu'il déborde et provoque une IT toutes les sec (voir msec)


    @Qristoff: waw dis donc je savais pas ca, vraiment merci...
    Dans l'ennoncé de sa question il ne demande pas à gerer une vrai RTC, mais (selon ses mots) "réaliser un compteur, genre horloge en utilisant les timers", pas de demande de circuit spécifique ici, non?

    A+

  8. #7
    Qristoff
    Animateur Électronique

    Re : Timer pour gestion temps réel 18f2550

    Citation Envoyé par Dralaf Voir le message
    @Qristoff: waw dis donc je savais pas ca, vraiment merci...
    Dans l'ennoncé de sa question il ne demande pas à gerer une vrai RTC, mais (selon ses mots) "réaliser un compteur, genre horloge en utilisant les timers", pas de demande de circuit spécifique ici, non?
    D'accord, mais si c'est pour arriver au même but, je ne vois pas l'intêret !

    L'avantage du RTC externe, pour des temps long (>1 minute), il n'y a plus besoin de boucle de tempo ou un Timer, il suffit de tester les valeurs de l'horloge ! exemple, 1 mesure de température toute les 6 heures...
    A+

  9. #8
    invitef57d092a

    Re : Timer pour gestion temps réel 18f2550

    Bonjour,

    Je dois également faire également ce genre d'opération mais je suis un "newb". Plus précisement je doit utilisé un 18f2525 et mon horloge devrait me permettre de réveillé mon pic a des heures données ceci dans un soucis d'autonomie. Je ne pense pas pouvoir utilisé une sorte de compteur (je ne suis pas sur) car sinon mon pic serait constamment en mode run pour calculé l'heure. Le rtc je ne voie pas trop comment ca marche, c'est une horloge externe ou interne au pic?
    De plus, je dois pouvoir modifier l'heure et reveiller mon pic a d'autre moment pas seulement a ces heures.

    Connaîtriez vous une solution a mon problème?

  10. #9
    Qristoff
    Animateur Électronique

    Re : Timer pour gestion temps réel 18f2550

    Salut DonGonis,
    Les pics (enfin, je ne sait pas si tous le font ?) ont une fonction "sleep" s/w qui met le pic en veille faible conso, le reveil se fait par un ordre externe de type interruption en agissant sur une broche dédiée.

    Si tu veux qu'il soit réveillé à des heures précises, ce n'est pas le pic qui pourra le gérer, il faudrat une horloge qui fait réveil sur laquelle tu programmeras les heures de réveil... tu comprends le souci ?
    Il faut donc trouver ce réveil programmable !

  11. #10
    umfred

    Re : Timer pour gestion temps réel 18f2550

    L'idéal serait une RTC externe, avec gestion d'alarme.
    Le principe serait de configurer la RTC pour déclencher une alarme à une heure donnée, l'alarme étant en fait un une sortie de la RTC qui irait réveiller le PIC par une interruption.
    Une fois que le PIC a effectué sa tache, il calcule l'heure du prochain réveil et l'envoie à la RTC.

    A regarder aussi pour l'autonomie, le pic peut être fonctionner à 2 fréquences différentes (je n'ai pas regardé la doc de ce pic mais).
    Ne pas oublier aussi que le changement de fréquence (si c'est possible) n'est pas instantanée et prend un certain nombre de cycles.

  12. #11
    invitef57d092a

    Re : Timer pour gestion temps réel 18f2550

    Ok,
    Merci pour votre aide, je me disait bien que c'était pas possible de faire le calcul en restant en mode sleep ( le 18f2525 le fait bien j'ai verifié). Faudra alors que je trouve un rtc basse conso.Je vais bossé sur cette solution je vous tiens au courant!

  13. #12
    invite3de9f323

    Re : Timer pour gestion temps réel 18f2550

    Salut DonGonis38, si tu veux je connais 2 composants qui sont en fait des horloges seules. Je pense que pour ce que tu veux faire, ca te conviendra. Il y'a le PCF 8583 qui se commande en I2C. En gros, tu lui envoie l'heure plus la date par l'i2c, dès qu'il à tous reçus, il se met à compter tout seul, comme une montre. Tu peu lui paramétrer un réveil, qui va, suivant ce que tu à mis pouvoir réveiller ton jour tous les jours à tel heurs, ou toutes les semaines etc.. grâce à une patte d'interruption, que tu relie sur une des broches d'interruption de ton pic.

    Il y'a aussi le dallas ds1302, mais je n'ai pas trop regardé sa doc, il à l'air un peu plus complexe à mettre en œuvre.

    Après pour la mise en œuvre I2C c'est assez facile en C.

    Pour ma part, mon horloge fonctionne à peu près bien. La je suis actuellement en train de faire mon projet de BTS électronique, je pourrait créer un topic pour vous donnée mes bout de fonction de programme qui peuvent servir pour tous, comme par exemple, la réception de la trame dcf77, (horloge atomique), ou générer une trame RC5.

    Si ça vous intéresse bien sûr.

  14. #13
    invitef57d092a

    Re : Timer pour gestion temps réel 18f2550

    Citation Envoyé par Tyller Voir le message
    Salut DonGonis38, si tu veux je connais 2 composants qui sont en fait des horloges seules. Je pense que pour ce que tu veux faire, ca te conviendra. Il y'a le PCF 8583 qui se commande en I2C. En gros, tu lui envoie l'heure plus la date par l'i2c, dès qu'il à tous reçus, il se met à compter tout seul, comme une montre. Tu peu lui paramétrer un réveil, qui va, suivant ce que tu à mis pouvoir réveiller ton jour tous les jours à tel heurs, ou toutes les semaines etc.. grâce à une patte d'interruption, que tu relie sur une des broches d'interruption de ton pic.

    Il y'a aussi le dallas ds1302, mais je n'ai pas trop regardé sa doc, il à l'air un peu plus complexe à mettre en œuvre.

    Après pour la mise en œuvre I2C c'est assez facile en C.

    Pour ma part, mon horloge fonctionne à peu près bien. La je suis actuellement en train de faire mon projet de BTS électronique, je pourrait créer un topic pour vous donnée mes bout de fonction de programme qui peuvent servir pour tous, comme par exemple, la réception de la trame dcf77, (horloge atomique), ou générer une trame RC5.

    Si ça vous intéresse bien sûr.



    Merci pour l'idée mais le problème est que je crois qu'il n'est pas possible de reveillé mon pic grace a une broche d'interruption car cela implique qu'elle serait activé or cela n'est possible qu'en mode idle ou run (qui consomme beaucoup pour faire une mesure toutes les 3-4h). Peut etre il est possible d'activé seulement cette broche d'interruption tout en restant en mode sleep. Je vais regardé si c possible et si le composant que tu ma proposé ne consomme pas trop car sinon ca change rien a mon pb.
    ps: je suis également sur un projet.

  15. #14
    Qristoff
    Animateur Électronique

    Re : Timer pour gestion temps réel 18f2550

    Salut,
    j'ai regardé la doc du PCF8583 et il y a bien une pin de sortie drain ouvert pour commander le réveil d'un pic. Par contre le DS1302 ne fait pas la fonction réveil.

  16. #15
    invite3de9f323

    Re : Timer pour gestion temps réel 18f2550

    Citation Envoyé par Qristoff
    Par contre le DS1302 ne fait pas la fonction réveil.
    Ouai c'est bien dommage, les composants dallas sont généralement de bonne facture.
    Par contre DonGonis38, je crois que tu n'a pas saisie le principe du pcf.

    Au niveau de la conso, tu veux une très faible conso parce que tu tourne sur pile, au niveau de la conso du 8583, c'est à peu près 50µA, donc c'est vraiment ridicule, le plus pénible dans ce genre de chose, c'est pour les commandes. Commander un composant coûte très chère à cause des frais de port.

    Et pour ton pic, tu à bien des broches d'interruption, tu à de RB0 à RB2. donc le truc est simple, il faut que tu arrive un peu à gérer le pcf8583, la je peu pas t'aider pour le moment, mais une foit que tu à réussi à lui faire lever un flag, donc activer sa patte d'interruption, tu peu alors la brancher sur la patte RB0 du pic. Voici un bout de programme en C pour la gestion des interruptions.

    Code:
    VOID main()
    {
       ext_int_edge(H_TO_L);         // Inter sur front descendant
       enable_interrupts(INT_EXT);  // Autorise les inter sur la patte INT_EXT (RB0), pour RB1 c'est INT_EXT1 et RB2 INT_EXT2.
       enable_interrupts(GLOBAL);  // Autorise les interruptions globals.
          
            while(true){
                Les fonctions à éxecuter tant que tu n'a pas d'interruption, ou tant que tu n'est pas en mode sleep.
    
               }
    }
    
    #int_EXT                             // Recopie le nom mis dans le enable interrupts
    void Un_nom_facile()          // Pas besoin de définir la fonction au début du programme
    {
    
         Programme à éxecuter quand une interruption à été détecté.
    
    }
    Voilà, si ça peu t'aider. Pour tester les interruptions, rien de plus facile, tu branche une led sur la patte RB7 de ton pic, dans ton programme principale tu la fait clignoter, puis une autre led sur RB6 qui ne fait rien. Tu relie la patte RB0 à l'alim, enfin tu met un bouton de sortoe à ce que quand tu appuie dessus la patte passe à zéro, met une pull-up de 10K, ca va bien. Et enfin dans le prog d'inter tu fait clignoter la secondes led 2 ou 3 fois.

    Une fois fait, tu verra que tant que tu n'appuie pas sur le bouton, la led ne clignote pas. La tu comprendra bien comment fonctionne les interruption, car dans ton prog, tu n'aura mis nul part un test qui en fonction du bouton tu fasse tel ou tel chose.

    Voila.

  17. #16
    invite3de9f323

    Re : Timer pour gestion temps réel 18f2550

    J'oubliai, pour le mode sleep(); il faut mettre la fonction dans le programme principal, pas dans un sous programme d'interruption, sinon ça marche pas. Et pour sortir du mode sleep(); il lui faut une interruption.

  18. #17
    Qristoff
    Animateur Électronique

    Re : Timer pour gestion temps réel 18f2550

    Petite précision, le reveil du mode "sleep" se fait généralement sur une unique pin dédiée du pic . Il faut regarder laquelle dans la datasheet. Je crois que toutes les pins interruptibles ne fonctionne pas pour sortir de ce mode.

  19. #18
    invite3de9f323

    Re : Timer pour gestion temps réel 18f2550

    Citation Envoyé par Qristoff
    Petite précision, le reveil du mode "sleep" se fait généralement sur une unique pin dédiée du pic . Il faut regarder laquelle dans la datasheet. Je crois que toutes les pins interruptibles ne fonctionne pas pour sortir de ce mode.
    Sisi, y'a pas de soucis. Le seul truc, c'est qu'il faut bien autoriser les interruptions sur la patte en question.

    Par contre l'utilisation du mode sleep n'est pas forcement évident au départ, mais par la suite, dès qu' l'on a compris, y'a pas de soucis.

    En gros, il faut une variable, exemple sleep_mode, que l'on met à FALSE au départ, ensuite, dans le programme principal, on test cette variable, si elle est vrai on met le sleep, sinon on continue le programme. Dans les fonctions des interruption, il suffira juste de changer la valeur de la variable. Si l'on utilise qu'une seul broche, alors on test la variable, si elle est vrai on la met fausse, et si elle est fausse on la met vrai.

    Voila, par contre, comme le mode sleep ne peu etre appeler dans une interruption, il y'a des soucis quand à son passage. Exemple, mon prog fait 50 lignes. Le sleep est sur la premiere ligne, j'appuie sur le bouton quand le prog est sur la 10ème ligne, le sous prog d'inter vien mettre le mode sleep sur vrai, et on retourne la ou le prog c'est arreté, il faut donc attendre de passer les 40 lignes suivantes pour tester la variable sleep.

  20. #19
    Qristoff
    Animateur Électronique

    Re : Timer pour gestion temps réel 18f2550

    Sisi, y'a pas de soucis.
    D'accord, je n'avais pas regardé suffisament en détail ma datasheet ! il existe même plusieurs mode réveil..
    Images attachées Images attachées  

  21. #20
    umfred

    Re : Timer pour gestion temps réel 18f2550

    En général on passe en sleep seulement après que le pic ait fini de faire ce pourquoi on l'a réveillé.

  22. #21
    invitef57d092a

    Re : Timer pour gestion temps réel 18f2550

    Bonjour,

    Voila j'ai réflechit sur la solution de mettre un pcf 8583 mais j'ai toujours un probleme car je ne connais pas vraiment sa consommation.
    Moi je vois sur un schéma 10uA, sur un tableau 50uA. Si c'est réellement 50uA comme vous me l'avez dit autant mettre mon pic en mode run et de déterminer l'heure grâce a un compteur de front d'horloge non?
    Images attachées Images attachées

  23. #22
    invitef57d092a

    Re : Timer pour gestion temps réel 18f2550

    Salut! Je rajoute un Petit up!

  24. #23
    invite3de9f323

    Re : Timer pour gestion temps réel 18f2550

    Non, ben déjà, tu verra qu'il te sera très difficile d'avoir une horloge précise, tu aura un décalage dans le temps. Ensuite, au niveau de la consommation, le PCF consommera largement moins que le PIC, ce qui est normal du fait que le pic doit faire tourner un programme, compter des fronts, qui dit fronts dit pic de courant etc... Le PCF lui à une électronique entièrement câblé, donc précis, mais aussi avec une consommation constante. J'ai demandé à mon prof d'élec, en utilisant le PCF et le pic avec la fonction sleep, tu peu aisément faire tourné ton truc sur pile de type 4*1.5 pendant si mois voir un ans suivant ton programme, si tu réveil ton pic souvent où pas.
    Après, c'est beaucoup plus simple d'utiliser une puce déjà toute faites, plutôt que de recréer un programme lourd et complexe. Donc la question est veux tu réinventer la roue ?
    Voilà, je te redis, niveau conso, c'est bien mieux d'utiliser les 2 plût que le pic seulement.

  25. #24
    invitef57d092a

    Re : Timer pour gestion temps réel 18f2550

    Ok, merci!
    Sinon je ne réivente pas la roue mais il était stipulé dans mon projet d'utilisé ce pic.
    Tu m'a rassuré pour le coup de 6 mois d'autonomie!

  26. #25
    invitef57d092a

    Re : Timer pour gestion temps réel 18f2550

    Bonjour,
    Mon tuteur ma légèrement aiguillé vers le ds1307 au lieu du pcf8583 car celui ci avait l'avantage d'avoir "une sorte de pile" de secours qui ne semble pas être présente sur le pcf8583. Par contre est ce que vous savez si le ds1307 peut réveillé mon pic, je ne voit nul part ou ca parle de réveil. Pouvez vous me dire ce que je doit cherché dans la datasheet?

  27. #26
    invitef57d092a

    Re : Timer pour gestion temps réel 18f2550

    Salut! Je rajoute un petit up! Car je ne voit pas pourquoi tel ou tel composant peut ou ne pas faire la fonction réveil.

  28. #27
    invitef57d092a

    Re : Timer pour gestion temps réel 18f2550

    Citation Envoyé par DonGonis38 Voir le message
    Bonjour,
    Mon tuteur ma légèrement aiguillé vers le ds1307 au lieu du pcf8583 car celui ci avait l'avantage d'avoir "une sorte de pile" de secours qui ne semble pas être présente sur le pcf8583. Par contre est ce que vous savez si le ds1307 peut réveillé mon pic, je ne voit nul part ou ca parle de réveil. Pouvez vous me dire ce que je doit cherché dans la datasheet?

    Dsl de refaire un up mais je ne voit pas pourquoi tel ou tel composant peut ou ne peut pas faire revéil.
    Merci d'avance pour vos indications

  29. #28
    invite3de9f323

    Re : Timer pour gestion temps réel 18f2550

    La réponse est assez simple le ds1302 n'a pas la fonction alarm intégré, du coup, il n'a pas de sortie que tu peu brancher sur ton pic pour créer une interruption.
    Par contre la pcf lui à bien cette fonction
    Alarm control register
    Alarm registers

    Voila, a plus

  30. #29
    invitef57d092a

    Re : Timer pour gestion temps réel 18f2550

    Citation Envoyé par Tyller Voir le message
    La réponse est assez simple le ds1302 n'a pas la fonction alarm intégré, du coup, il n'a pas de sortie que tu peu brancher sur ton pic pour créer une interruption.
    Par contre la pcf lui à bien cette fonction
    Alarm control register
    Alarm registers

    Voila, a plus

    Merci beaucoup pour ton indication c'est vrai que c'était assez simple mais je ne trouvait pas.

  31. #30
    invite3de9f323

    Re : Timer pour gestion temps réel 18f2550

    Me revoila avec une autre question.
    Je dois utiliser une mémoire de type 24C256 EEPROM en I2C, mais je ne comprend pas le fonctionnement de la chose. J'ai récuperer ce bout de code dans mon logiciel PIC CCS mais je ne le comprend pas, car il me semble qe lorsqu l'on veux enregistrer quelque chose, il faut donc donner l'adresse du composant, puis l'adresse de la case dans laquelle ont veux mettre la donnée, et enfin la donnée. Mais dans le code suivant, l'adresse de la case n'apparait nulle part.
    Si vous avez un exemple de code commenté, je suis preneur. Merci

    Code:
    #define EEPROM_ADDRESS long int
    #define EEPROM_SIZE   32768
    
    void init_ext_eeprom()
    {
       output_float(EEPROM_SCL);
       output_float(EEPROM_SDA);
    
    }
    
    
    void write_ext_eeprom(long int address, BYTE data)
    {
       short int status;
       i2c_start();
       i2c_write(0xa0);
       i2c_write(address>>8);
       i2c_write(address);
       i2c_write(data);
       i2c_stop();
       i2c_start();
       status=i2c_write(0xa0);
       while(status==1)
       {
       i2c_start();
       status=i2c_write(0xa0);
       }
    }

Discussions similaires

  1. Quel OS pour du temps réel
    Par vilveq dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 21/05/2015, 15h34
  2. Gestion de temps par carte a puce, augmenter les valeurs de temps...
    Par invite01b711d3 dans le forum Électronique
    Réponses: 5
    Dernier message: 29/12/2008, 10h10
  3. gestion horloge temps réel
    Par invitecec8a619 dans le forum Électronique
    Réponses: 1
    Dernier message: 21/01/2008, 20h54
  4. Temps moyenné vs temps réel
    Par invite42d0c639 dans le forum Physique
    Réponses: 4
    Dernier message: 26/05/2007, 11h51
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...