programmation C du 12f629 - Page 4
Répondre à la discussion
Page 4 sur 14 PremièrePremière 4 DernièreDernière
Affichage des résultats 91 à 120 sur 412

programmation C du 12f629



  1. #91
    Gérard

    Re : programmation C du 12f629


    ------

    Je pars en vacances pour 1 semaine, je répondrai à tes questions en rentrant.

    Vive la bronzette !

    -----

  2. #92
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par Gérard Voir le message
    Je pars en vacances pour 1 semaine, je répondrai à tes questions en rentrant.

    Vive la bronzette !
    Bonnes vacances

  3. #93
    marc2009

    Re : programmation C du 12f629

    @alainav1

    Salut,

    j'ai regardé le datasheet, mais étant donné que je ne travaille pas sur ce pic, je ne me suis pas très intéressé au datasheet Nous hésitons entre le 12f629 et 12f675 ( enfin c'est une autre histoire )

    Le 16f627 n'est là que parce que je peux utiliser le quartz externe, sinon, on ne va pas l'utiliser pour le projet.

    Sinon, ton programme fait bien état d'une temporisation, mais n'utilise pas les timer Je connais le WaitMs, mais la précision est misérable

    Par ailleurs, Gérard m'avait dit qu'il n'y avait pas moyen d'obtenir un chiffre rond d'IRQ par seconde avec une horloge interne, ou un quartz externe de 4 MHz, si tu as des suggestions, n'hésites pas

    Merci ++

  4. #94
    alainav1

    Re : programmation C du 12f629

    bonjour,
    de quelle precision as tu besoin?
    cordialement
    Alain
    Décider de faire, c'est bien . Décider quand, c'est mieux !

  5. #95
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par alainav1 Voir le message
    bonjour,
    de quelle precision as tu besoin?
    cordialement
    Alain
    ah, euh pas trop

    On fait marcher le moteur pendant 1 seconde toutes les 20 minutes, on va dire que l'utilisateur le laisse allumer 6 heures ( dans la journée ). Donc la précision n'est pas très importante dans l'absolue, mais si la précision devient trop grande ( de plusieurs minutes, dizaine, vingtaine .... car il me semble la précision baisse au cours du temps ), là ça pose quand même un problème.

    ++

  6. #96
    alainav1

    Re : programmation C du 12f629

    bonjour,
    c'est pas un probleme que la precision du waitms soit miserable si c'est toujours le même ecart .
    tu fais un programme avec des boucles imbriquées du type
    for j=1 tu 10'soit 10 min
    for i=1 to 60 'soit 60S =1 min
    led1=1
    waitms 1000 '1S
    next i
    nextj
    led=0
    tu lances le programme et dans 10min la LED s'eteint si il y a un ecart tu modifies la valeur de 1000 en tenant compte de l'ecart mesuré .
    (pour ne pas attendre 10min tu commences par une boucle plus courte 120 secondes par exemple )
    Cordialement
    Alain
    Décider de faire, c'est bien . Décider quand, c'est mieux !

  7. #97
    marc2009

    Re : programmation C du 12f629

    Alors, voilà le programme que j'ai fait avec la fonction delay:

    Code:
    #include "delay.c"
    #pragma chip PIC12F629 // déclaration du pic
    #pragma library 1
    #pragma config = 0x31E4
    #define sortie GPIO
    char min;
    bit led1 @ GPIO2;
    
    void main(void)
    
    {
    	OSCCAL = 0b10000000;
    	TRISIO = 0b11111011;
    	CMCON =  0b00000111;
    	sortie = 0;
    for (;;) {
    			delay_10ms(100);led1=!led1;
    }
    }
    voilà ce que contient le delay.c

    Code:
    /*
    	delay_10us (char) : delay en multiple de 10 us pour un quartz de 4 MHz
    	delay_ms (char) : delay en ms pour un quartz de 4 MHz
    	delay_10ms (char) : delay en multiple de 10 ms pour un quartz de 4 MHz
    */
    
    //-----delay en multiple de 10 us pour un quartz de 4 MHz------
    
    /*void delay_10us (char usecs)
    {
    while (-- usecs > 0)
     {
    	clrwdt();
    	nop();
    	nop();
    	nop();
    	nop();
    	}
    }   */
    
    //---------delay en ms pour un quartz de 4 MHz---------
    
    /*void delay_ms( uns16 millisec)
    // Delays a multiple of 1 milliseconds at 4 MHz
    // using the TMR0 timer
    {
        char next = 0;
    
        OPTION = 2; // prescaler divide TMR0 rate by 8
        TMR0 = 2;  // deduct 2*8 fixed instruction cycles delay
        do  {
            next += 125;
            clrwdt();  // needed only if watchdog is enabled
            while (TMR0 != next)   // 125 * 8 = 1000 (= 1 ms)
                ;
        } while ( -- millisec != 0);
    }*/
    
    //------delay en multiple de 10 ms pour un quartz de 4 MHz-------
    
    void delay_10ms (char n)
    {
    char i;
    OPTION = 7;
    do
    	{
    	i = TMR0 +39;
    	while (i != TMR0);
    	}
       while (--n > 0);
    }
    Alors dans ce fichier delay.c, j'ai mis en commentaire les 2 fonctions que je n'ai pas utilisées pour optimiser mon programme

    Bon, en attendant d'en acheter un autre, j'ai essayé avec le 16f627 et le quartz externe, et j'ai un excellent temps ! reste à voir avec l'oscillateur interne...

    Merci ++

  8. #98
    marc2009

    Re : programmation C du 12f629

    avec l'horloge interne, avec un OPTION donc à 0b10000101 et un config avec _INTRC_OSC_NOCLKOUT, avec la fonction delay, j'ai un retard toutes les minutes de 2 secondes. Avec le timer0, j'ai 1.5 secondes de retard !

    Bon, ce que je trouve étrange, c'est que je ne peux pas mettre pour OPTION "horloge externe sur RA4" ( je suis sur le 16f627 ) lorsque j'utilise le quartz externe de 4 MHz ! J'ai manqué un paramètre ?

    Merci

  9. #99
    marc2009

    Re : programmation C du 12f629

    je précise que si je met sur "horloge interne", il marche ( mais je sais pas s'il utilise le quartz externe alors dans ce cas, ou s'il utilise l'horloge interne, CONFIG étant laissé à XT pour le quartz externe )

  10. #100
    Gérard

    Re : programmation C du 12f629

    Citation Envoyé par marc2009 Voir le message
    je précise que si je met sur "horloge interne", il marche ( mais je sais pas s'il utilise le quartz externe alors dans ce cas, ou s'il utilise l'horloge interne, CONFIG étant laissé à XT pour le quartz externe )
    Si tu mets "horloge interne", il prendra en compte soit le Qz externe soit l'oscillateur interne.

    Vacances finies !

  11. #101
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par Gérard Voir le message
    Si tu mets "horloge interne", il prendra en compte soit le Qz externe soit l'oscillateur interne.

    Vacances finies !
    Donc mieux vaut mettre horloge interne pour que ça reste synchro, non ? Enfin c'est quoi les avantages/inconvénients de mettre sur horloge interne, ou sur transition sur (port)" ?

    merci

    ps : dommage que tes vacances soient finies

  12. #102
    Gérard

    Re : programmation C du 12f629

    Citation Envoyé par marc2009 Voir le message
    Donc mieux vaut mettre horloge interne pour que ça reste synchro, non ? Enfin c'est quoi les avantages/inconvénients de mettre sur horloge interne, ou sur transition sur (port)" ?

    merci

    ps : dommage que tes vacances soient finies

    Horloge interne : tu prends en compte la même horloge que celle qui fait travailler l'UC, quelle vienne d'un Qz externe ou de l'oscillateur interne.

    Le comptage sur le port est une autre fonction : tu peux (par ex) compter le nombre d'impulsions pendant un temps donné.

  13. #103
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par Gérard Voir le message
    Horloge interne : tu prends en compte la même horloge que celle qui fait travailler l'UC, quelle vienne d'un Qz externe ou de l'oscillateur interne.

    Le comptage sur le port est une autre fonction : tu peux (par ex) compter le nombre d'impulsions pendant un temps donné.
    donc je laisse sur horloge interne.

    Bon maintenant, on a décidé d'utiliser un quartz externe plutôt que l'oscillateur interne en raison de l'imprécision ! ( donc un quartz de 3.2768 MHz )

    Bon, tu me conseilles quoi ? Doit on utiliser les interruptions ( donc avec ta méthode, avec le timer1 ), ou les "delays" ou autre ?

    merci

  14. #104
    Gérard

    Re : programmation C du 12f629

    Avec TMR1 ce sera plus précis.

  15. #105
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par Gérard Voir le message
    Avec TMR1 ce sera plus précis.
    donc quartz externe de 3.2768 MHz avec comme paramètre "horloge interne" ( incrémentations sur état haut --> état bas ou l'inverse n'a donc que peu d'importance ), tu me conseilles tmr1 plutôt que delay ( et autres ). Donc j'utilise ta méthode avec les interruptions, c'est ça ?

    Bon, je vais m'y mettre, je proposerais aussi un programme, lorsque j'aurais le matériel, ou même avant, même si je l'aurais pas testé.

    Sinon, en fait, nous allons prendre un 12f675 et non un 12f629. Je me demandais si tu connaissais la partie "comparateur" par rapport à une valeur de référence. A priori, tu peux avec ce pic donner une valeur qui servira de valeur de référence et ainsi comparer une tension d'entrée a cette valeur ... ?!

    Merci

  16. #106
    Gérard

    Re : programmation C du 12f629

    Citation Envoyé par marc2009 Voir le message
    donc quartz externe de 3.2768 MHz avec comme paramètre "horloge interne" ( incrémentations sur état haut --> état bas ou l'inverse n'a donc que peu d'importance ), tu me conseilles tmr1 plutôt que delay ( et autres ). Donc j'utilise ta méthode avec les interruptions, c'est ça ?
    Oui.

    Citation Envoyé par marc2009 Voir le message
    Bon, je vais m'y mettre, je proposerais aussi un programme, lorsque j'aurais le matériel, ou même avant, même si je l'aurais pas testé.
    Tu peux écrire et tester après, de toute façon, ça ne marche jamais du 1er coup.

    Citation Envoyé par marc2009 Voir le message
    Sinon, en fait, nous allons prendre un 12f675 et non un 12f629. Je me demandais si tu connaissais la partie "comparateur" par rapport à une valeur de référence. A priori, tu peux avec ce pic donner une valeur qui servira de valeur de référence et ainsi comparer une tension d'entrée a cette valeur ... ?!

    Merci
    Jamais utilisé les comparateurs.
    Par contre, le 675 possède un CAN, tu peux donc lire une valeur analogique.

  17. #107
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par Gérard Voir le message
    Tu peux écrire et tester après, de toute façon, ça ne marche jamais du 1er coup. .
    pas faux

    Citation Envoyé par Gérard Voir le message
    Jamais utilisé les comparateurs.
    Par contre, le 675 possède un CAN, tu peux donc lire une valeur analogique.
    Aurais tu une doc la dessus ? ou pourrais tu m'expliquer stp ? Je parle pas du comparateur ( CMCON ) mais le 12f675 possède un module Analog-To-Digital donc pour une utiliser une valeur de référence entrée manuellement ...

    Merci

  18. #108
    Gérard

    Re : programmation C du 12f629

    Regarde la datasheet page 39, il y a un schéma explicite.
    Il faudra configurer ADCON0 et ANSEL. Leur fonctionnement est décrit dans les pages suivantes.

    Tu lis et tu viens avec des questions précises concernant ce que tu n'as pas compris.
    En plus, tu feras des progrès en anglais.

  19. #109
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par Gérard Voir le message
    Regarde la datasheet page 39, il y a un schéma explicite.
    Il faudra configurer ADCON0 et ANSEL. Leur fonctionnement est décrit dans les pages suivantes.

    Tu lis et tu viens avec des questions précises concernant ce que tu n'as pas compris.
    En plus, tu feras des progrès en anglais.
    ah oui super, mais je l'ai déjà lu mon cher

    Ce que je comprends pas, c'est comment le configurer ? Je veux dire comme lui indiquer une tension de référence ? La pin GP1 est la seule que je peux utiliser comme V-ref, et je met VCFG=1 ! Et alors comment configurer cette valeur de référence ? Est ce la valeur de la tension que le pic va mesurer juste après son "démarrage" ? ( et puis c'est pas vraiment l'anglais le problème, mais surtout les notations et le "langage" pic )

    Merci

  20. #110
    marc2009

    Re : programmation C du 12f629

    je rajoute :

    concernant le nombre d'interruptions par seconde, est ce que c'est bien ou mauvais d'avoir un nombre d'interruptions par seconde important ? Ou c'est pas du tout important ?

    Merci

  21. #111
    Gérard

    Re : programmation C du 12f629

    Citation Envoyé par marc2009 Voir le message
    ah oui super, mais je l'ai déjà lu mon cher

    Ce que je comprends pas, c'est comment le configurer ? Je veux dire comme lui indiquer une tension de référence ? La pin GP1 est la seule que je peux utiliser comme V-ref, et je met VCFG=1 ! Et alors comment configurer cette valeur de référence ? Est ce la valeur de la tension que le pic va mesurer juste après son "démarrage" ? ( et puis c'est pas vraiment l'anglais le problème, mais surtout les notations et le "langage" pic )

    Merci
    C'est effectivement GP1 qui peut servir de Vref avec VCFG = 1.

    La tension analogique que tu mettras sur GP1 sera la réference, tu utilises une référence de tension (voir TL431).
    Exemple : Ref de 3V
    la conversion se fera entre 0 et 3V au lieu de 0 et VCC.
    Tu auras une plus grande résolution.

  22. #112
    Gérard

    Re : programmation C du 12f629

    Citation Envoyé par marc2009 Voir le message
    je rajoute :

    concernant le nombre d'interruptions par seconde, est ce que c'est bien ou mauvais d'avoir un nombre d'interruptions par seconde important ? Ou c'est pas du tout important ?

    Merci
    Ca dépend de ce que tu veux faire.
    Dans un de mes cas, je voulais 25 IRQ/s, c'est un choix.
    Plus tu as d'IRQ, plus le programme sera ralenti, forcement, on l'interrompt plus souvent. C'est quand même relatif.

  23. #113
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par Gérard Voir le message
    C'est effectivement GP1 qui peut servir de Vref avec VCFG = 1.

    La tension analogique que tu mettras sur GP1 sera la réference, tu utilises une référence de tension (voir TL431).
    Exemple : Ref de 3V
    la conversion se fera entre 0 et 3V au lieu de 0 et VCC.
    Tu auras une plus grande résolution.
    Je commence à hésiter entre utiliser ANSEL et ADCON, ou le comparateur ... j'ai compris comment il fonctionnait, et donc si j'ai bien compris, en mettant les 3 dernier bits de CMCON à 100, j'ai au VIN+ la valeur de référence interne, et au VIN- le port GP1, donc je peux utiliser GP0 et GP2 en I/O, c'est ça ?

    Tu me conseilles quoi ? d'utiliser le comparateur, ou le ADCON/ANSEL ? ( le convertisseur, j'ai pas trop compris son fonctionnement en fait, surtout entre "entrée analogique" et "entrée digitale", je comprend pas ces 2 notions )

    Merci

  24. #114
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par Gérard Voir le message
    Ca dépend de ce que tu veux faire.
    Dans un de mes cas, je voulais 25 IRQ/s, c'est un choix.
    Plus tu as d'IRQ, plus le programme sera ralenti, forcement, on l'interrompt plus souvent. C'est quand même relatif.
    je suis allé a la page 44 du datasheet, et je suis sur le tableau "TAD vs. DEVICE OPERATING FREQUENCIES" bon j'ai pas trop compris, mais je crois que c'est le temps que va mettre le pic pour lire la tension et la comparer ?

    Je devrais peut être utiliser un quartz à plus basse fréquence, notamment pour les interruptions, et pour rester avec des temps ( cf tableau )

    Merci pour tes éclaircissements ( comme dab )

  25. #115
    Gérard

    Re : programmation C du 12f629

    Citation Envoyé par marc2009 Voir le message
    Je commence à hésiter entre utiliser ANSEL et ADCON, ou le comparateur ... j'ai compris comment il fonctionnait, et donc si j'ai bien compris, en mettant les 3 dernier bits de CMCON à 100, j'ai au VIN+ la valeur de référence interne, et au VIN- le port GP1, donc je peux utiliser GP0 et GP2 en I/O, c'est ça ?

    Tu me conseilles quoi ? d'utiliser le comparateur, ou le ADCON/ANSEL ? ( le convertisseur, j'ai pas trop compris son fonctionnement en fait, surtout entre "entrée analogique" et "entrée digitale", je comprend pas ces 2 notions )

    Merci
    Entrée digitale : ne peut que prendre 2 valeurs, 1 ou 0, soit 5V ou 0V.
    Entrée analogique : on met une valeur de tension comprise entre 0V et 5V. (digital = numérique)

    Le comparateur : tu mets une valeur analogique en entrée, la sortie du comparateur sera à 0 ou à 1 suivant la cofiguration du comparateur.
    Le comparateur compare V- et V+ et agit sur la sortie suivant la config.

    Le CAN (Convertisseur Analogique Numérique) : tu mets une valeur analogique en entrée, le CAN va la convertir en une valeur numérique.
    Ex (si pas de VRef utilisée) pour 0V, tu auras 0 point, pour 5V tu auras 1023 points, pour 2,5V tu auras 512 points.
    Ceci parce que c'est un CAN 10 bit.


    Pour ton utilisation, que veux-tu faire ?
    Le comparateur te donne une valeur en fonction d'un seuil de tension.
    Le CAN convertie la valeur de l'entrée et tu peux utiliser cette valeur numérique dans des calculs.

  26. #116
    Gérard

    Re : programmation C du 12f629

    Citation Envoyé par marc2009 Voir le message
    je suis allé a la page 44 du datasheet, et je suis sur le tableau "TAD vs. DEVICE OPERATING FREQUENCIES" bon j'ai pas trop compris, mais je crois que c'est le temps que va mettre le pic pour lire la tension et la comparer ?

    Je devrais peut être utiliser un quartz à plus basse fréquence, notamment pour les interruptions, et pour rester avec des temps ( cf tableau )

    Merci pour tes éclaircissements ( comme dab )
    Je ne vois pas de quel tableau tu parles.

  27. #117
    marc2009

    Re : programmation C du 12f629

    Entrée digitale : ne peut que prendre 2 valeurs, 1 ou 0, soit 5V ou 0V.
    Entrée analogique : on met une valeur de tension comprise entre 0V et 5V. (digital = numérique)
    euh c'est pas le contraire ?

    pour l'utilisation : ben au départ, on avait pensé pouvoir utiliser la patte GP3 pour gérer la partie "déchargement" de la batterie. Une patte est à 1 lorsqu'une tension de 2V à 5V est appliquée en entrée, et à 0 si la tension en entrée se situe entre 0V et 2V. Tu es d'accord là ?

    Donc ( on a choisit une batterie au plomb de 12V ), d'après wikipedia, la batterie au plomb se décharge lorsque U=10.8V donc il faudrait qu'à 11V - 10.9V, il y ait passage de l'état haut à l'état bas ( donc en dessous de 2V ) et comme ça, on fait clignoter une led, et le système est bien sûr en "pause". Mais on se demande si on ne pourrait pas se servir soit du comparateur, soit du CAN pour mener à bien cette fonction. Car si on utilise le comparateur, je "perds qu'1 seul port ( GP1 ), par contre si j'utilise le CAN, je vais perdre 2 ports, non ?

  28. #118
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par Gérard Voir le message
    Je ne vois pas de quel tableau tu parles.
    dans le datasheet : "TABLE 7-1:TAD vs. DEVICE OPERATING FREQUENCIES" 44 of 132

    Merci

  29. #119
    Gérard

    Re : programmation C du 12f629

    Citation Envoyé par marc2009 Voir le message
    dans le datasheet : "TABLE 7-1:TAD vs. DEVICE OPERATING FREQUENCIES" 44 of 132

    Merci
    Tu déclares A/D RC, ça marche à tous les coups.

  30. #120
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par Gérard Voir le message
    Tu déclares A/D RC, ça marche à tous les coups.
    mais c'est pas un RC, et le controle ne se fera pas en SLEEP mode ( point 4: When the device frequency is greater than 1 MHz, the A/D RC clock source is only recommended if the conversion will be performed during SLEEP.)

    alors, mon cher Gérard, j'ai gardé 3 valeurs possibles pour le quartz externe : soit 2.0480 MHz, soit 3.2768 MHz, soit 2.097152 MHz. Quelle valeur mettre pour ces 3 valeurs ( par exemple pour 3.2768 MHz ) ? Mais attend mon cher Gérard, si je fais par rapport à Vdd, ça sera toujours du 5V ( régulateur 78L05 ), non ?

Page 4 sur 14 PremièrePremière 4 DernièreDernière

Discussions similaires

  1. Probleme de programmation (PIC 12F629 )la seconde fois
    Par alainav1 dans le forum Électronique
    Réponses: 7
    Dernier message: 26/03/2009, 16h06
  2. lire un pic 12f629
    Par invite6ce15d51 dans le forum Électronique
    Réponses: 1
    Dernier message: 06/06/2008, 10h48
  3. Micro- programmes PIC 12f629
    Par pickipic dans le forum Électronique
    Réponses: 7
    Dernier message: 11/02/2008, 00h46
  4. Quel programateur pour le pic 12f629
    Par jojo86 dans le forum Électronique
    Réponses: 4
    Dernier message: 21/08/2006, 22h04
  5. Programmation 3D
    Par invite769675d7 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 01/11/2005, 06h07
Découvrez nos comparatifs produits sur l'informatique et les technologies.