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

programmation C du 12f629



  1. #211
    marc2009

    Re : programmation C du 12f629


    ------

    donc faut utiliser ADRESH et ADRESL

    donc dans le programme, je devrais faire un ( si je justifie à gauche )
    Code:
    if (ADRESH==XXXXXXXX.ADRESL==XX000000) {.....}
    non ? Donc la valeur trouvé par le produit en croix ( valeur de points ) doit être convertie en binaire ( je le fais avec la calculatrice de fedora ) :

    ex : ( si j'ai bien compris ) 1023 points représente en binaire 1111 1111 11 soit 10 bits ce qui correspond bien à ce qui est écrit dans le datasheet.

    Donc si on prend par exemple 521 points ( qui correspond à une tension X ) en binaire ça fera 1000 0010 01 donc dans le programme je fais un if (ADRESH==10000010.ADRESL==0100 0000) {...}

    bon, ça a l'air bizarre, je crois pas que ce soit comme ça mais c'est déjà un début Je devines qu'il faut déclarer 1 ( ou 2 ? ) variable(s) pour une des 2 variables ( ou les 2 )

    Merci

    -----

  2. #212
    Gérard

    Re : programmation C du 12f629

    Un exemple en Basic :
    Code:
    ;valeurs mesurées :
    ;	Vdd   = 5,06V soit 233°C c'est la tension donnée par le 7805
    ;	Vref- = 2,48V soit -25°C c'est la tension de référence donnée par le TL431
    		
    ;	num / 1023 = (T + 25) /(233 + 25)
    ;	T°(C) = (num / 1023) * 258 - 25
    ;num est la valeur en points du résultat de la conversion
    ;ne sert que pour la formule ci-dessus
    		
    MES_TEMP:	
    		
    		For I = 0 To 3	             				;acquisition de 4 valeurs
    			TabTemp [I]	= ADIn 0			;mesure LM335
    			DelayMS		50
    		Next
    	 	
    		SommeTemp	= 0						;init variable
    		For I = 0 To 3
    			SommeTemp = SommeTemp + TabTemp [I]
    		Next
    		
    		Temp1		= SommeTemp / 4092		;/4 et /1023
    		Temp1		= Temp1 * 258			;mise à l'échelle
    		Temp1		= Temp1 - 25			;ajout talon
    
    ;ADIn 0 : l'acquisition est faite sur AN0	
    ;i : variable sur 1 octet
    ;SommeTemp : variable sur 2 octets
    ;TabTemp : tableau de 4 variables de 2 octets chacune.
    ;Temp1 : résultat en °C variable déclarée en float
    Si tu as des questions, ne pas hésiter.

  3. #213
    marc2009

    Re : programmation C du 12f629

    oulala

    c'est trop compliqué Le basic n'est pas facile a priori :P

    je ne vois pas d'où viennent les formules, puis après le programme, je comprends pas très bien... je vais demander à mon ami ( qui devrait s'y connaitre en basic ) de voir s'il a compris...

    Merci

  4. #214
    Gérard

    Re : programmation C du 12f629

    Ce n'est pas compliqué, tu ne te donnes pas la peine de réfléchir !

    Quelques explications :
    dans la boucle for ... next, on fait 4 acquisitions qui sont stockées dans le tableau "TabTemp"

    SommeTemp = 0 --> init de la variable

    Dans la 2e boucle for ... next, on fait la somme des 4 valeurs.

    Les 3 lignes Temp1 = ... permettent de faire la conversion points --> °C d'après la formule décrite en début du sous programme

    Autre questions ?

  5. #215
    marc2009

    Re : programmation C du 12f629

    Ce n'est pas compliqué, tu ne te donnes pas la peine de réfléchir !
    c'est comme quand je te donne du C

    Merci pour l'explication, mais je veux dire quel est le rapport avec ce que je veux faire ? Faudra que je fasse tout ça ? ( tous ces calculs ? ) car moi je souhaitais savoir comment relever la valeur points a partir des 2 variables ...

    Car sinon, je passe au comparateur analogique ...

  6. #216
    Gérard

    Re : programmation C du 12f629

    Explication de la formule:

    ; Vdd = 5,06V soit 233°C c'est la tension donnée par le 7805
    ; Vref- = 2,48V soit -25°C c'est la tension de référence donnée par le TL431

    ; num / 1023 = (T + 25) /(233 + 25)
    ; T°(C) = (num / 1023) * 258 - 25
    ;num est la valeur en points du résultat de la conversion
    ;ne sert que pour la formule ci-dessus

    C'est une règle de 3
    le CAN est configuré avec VRef-
    num = 0 si la tension d'entrée est égale à VRef- (tension issue d'un TL431 et qui vaut 2,48V)
    num = 1023 si la tension d'entrée est de 5,06V (VDD réelle mesurée sur mon 7805)

    Le LM335 (capteur de T° utilisé dans mon cas donne 10mV/°K, soit 2,73V pour 0°C)

    2,48V correspond donc à -25°C et 5,06V à 233°C

    Nous avons une échelle de T° de -25°C à 233°C pour 0 à 1023 points.
    Et maintenant tu regardes et réfléchis sur la formule. Comme dit plus haut, c'est une règle de 3.

  7. #217
    marc2009

    Re : programmation C du 12f629

    mais dans le cas ici présent, tu as pris Vref Vdd ou la patte GP1 ?

  8. #218
    Gérard

    Re : programmation C du 12f629

    Citation Envoyé par marc2009 Voir le message
    c'est comme quand je te donne du C
    Veux-tu me faire avoir des boutons ?

    Citation Envoyé par marc2009 Voir le message
    Merci pour l'explication, mais je veux dire quel est le rapport avec ce que je veux faire ? Faudra que je fasse tout ça ? ( tous ces calculs ? ) car moi je souhaitais savoir comment relever la valeur points a partir des 2 variables ...

    Car sinon, je passe au comparateur analogique ...
    Je voulais te montrer une façon de récupérer la valeur de la température (ça peut toujours servir).

    Toi, tu veux comparer la mesure à une valeur.

    Tu fais l'acquisition et tu compares à la consigne.

    Un exemple de ce que tu devras écrire :
    If Acq > Consigne then ...

    C'est le plus simple (et le moins fiable)
    Il est préférable de faire plusieurs acquisitions et d'en faire la moyenne.
    Nous en avons déjà parlé.
    Pour la comparaison, il vaut mieux prendre une fourchette de valeurs pour consigne plutôt qu'une seule valeur (ça évite les oscillations au point de basculement)

    ex cons_min et cons_max définissent la fourchette de valeurs que tu tolères.

    Tu devras écrire :
    if Acq > cons_min et Acq < cons_max then ... (le "et" en fonction de ton langage)
    il faudra aussi poser la question si Acq > cons_max et Acq < cons_min. Normalement ces 2 cas ne devraient pas exister mais on ne sait jamais.

    Tout compris ?

  9. #219
    marc2009

    Re : programmation C du 12f629

    ah, faut faire plusieurs acquisitions, donc le temps d'une acquisition doit être faible sinon, ça va empiéter sur les interruptions, non ?

    bon, je vois ce qu'il faut faire, mais je vois pas comment le mettre en place :S
    je prendrai Vdd comme référence, donc Vdd sera 1023 points ...

    Mais sinon, je ne vois pas dans ton programme ADRESH et ADRESL qui contiennent la valeur de la mesure ...

  10. #220
    Gérard

    Re : programmation C du 12f629

    Citation Envoyé par marc2009 Voir le message
    mais dans le cas ici présent, tu as pris Vref Vdd ou la patte GP1 ?
    La portion de programme dont je parle, est pour un 876.
    Celui-ci peut avoir en entrée RA3 Vref+ et en RA2 VRef-.

    Le 675 n'a pas ces possibilités.
    La conversion se fait toujours entre VRef et GND pour le 675.

  11. #221
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par Gérard Voir le message
    La portion de programme dont je parle, est pour un 876.
    Celui-ci peut avoir en entrée RA3 Vref+ et en RA2 VRef-.

    Le 675 n'a ces possibilités.
    La conversion se fait toujours entre VRef et GND pour le 675.
    c'est pour ça que j'avais rien compris alors

    Mais pour ce pic, il n'y a pas ADRESH et ADRESL ?

  12. #222
    Gérard

    Re : programmation C du 12f629

    Citation Envoyé par marc2009 Voir le message
    ah, faut faire plusieurs acquisitions, donc le temps d'une acquisition doit être faible sinon, ça va empiéter sur les interruptions, non ?
    Non, ce sont les acquisitions qui seront ralenties par les irq et pas l'inverse.
    L'acquisition se fait de façon indépendante, qu'il y aie irq ou pas.
    La récup de la valeur sera ralentie.

    Citation Envoyé par marc2009 Voir le message
    bon, je vois ce qu'il faut faire, mais je vois pas comment le mettre en place :S
    je prendrai Vdd comme référence, donc Vdd sera 1023 points ...

    Mais sinon, je ne vois pas dans ton programme ADRESH et ADRESL qui contiennent la valeur de la mesure ...

    C'est transparent, la valeur est directement stockée dans "TabTemp".

  13. #223
    invite6016e9fe

    Re : programmation C du 12f629

    salut gérard
    je sé que cé que ce né pas le cas mé je suis coincé.
    jé un projet ou je vé utilisé un pic et le probléme c'est que je sé rien sur les pic apar des notion sur le microprocesseur et un peu d'algorithm, asembeur langage c, grafcet et ladder (chui un automaticien)
    tu peu m'aide?

    merci d'avance.

  14. #224
    Gérard

    Re : programmation C du 12f629

    Citation Envoyé par KMA3 Voir le message
    salut Gérard
    je sé que cé que ce né pas le cas mé je suis coincé.
    jé un projet ou je vé utilisé un pic et le probléme c'est que je sé rien sur les pic apar des notion sur le microprocesseur et un peu d'algorithm, asembeur langage c, grafcet et ladder (chui un automaticien)
    tu peu m'aide?

    merci d'avance.
    1 Tu écris en FRANCAIS.
    2 Tu lis et tu comprends Bigonoff.
    3 Tu viens poser des questions précises sur des points que tu n'auras pas compris.

  15. #225
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par Gérard Voir le message
    Non, ce sont les acquisitions qui seront ralenties par les irq et pas l'inverse.
    L'acquisition se fait de façon indépendante, qu'il y aie irq ou pas.
    La récup de la valeur sera ralentie.




    C'est transparent, la valeur est directement stockée dans "TabTemp".
    mais comment fais-tu "l'assemblage" des 2 variables ADRESH et ADRESL dans TabTemp ?

  16. #226
    marc2009

    Re : programmation C du 12f629

    il n'est pas mieux d'utiliser le comparateur analogique ? Ou ça va ralentir le programme ? Car le CAN, il faut déjà le mettre en route, alors que le comparateur analogique compare en permanence ... enfin il me semble, non ?

    Mais si tu penses que le CAN est mieux...?!

  17. #227
    Gérard

    Re : programmation C du 12f629

    Citation Envoyé par marc2009 Voir le message
    mais comment fais-tu "l'assemblage" des 2 variables ADRESH et ADRESL dans TabTemp ?
    Le système se débrouille tout seul.
    C'est l'avantage des langages évolués.

  18. #228
    Gérard

    Re : programmation C du 12f629

    Citation Envoyé par marc2009 Voir le message
    il n'est pas mieux d'utiliser le comparateur analogique ? Ou ça va ralentir le programme ? Car le CAN, il faut déjà le mettre en route, alors que le comparateur analogique compare en permanence ... enfin il me semble, non ?

    Mais si tu penses que le CAN est mieux...?!
    C'est toi qui vois.
    Les 2 (CAN et comparateur) peuvent être utilisés pour ton applic.

    Tu devrais monter une carte et faire des essais.

  19. #229
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par Gérard Voir le message
    Le système se débrouille tout seul.
    C'est l'avantage des langages évolués.
    Mais je ne peux pas faire TabTemp=ADRESH+ADRESL; c'est pas possible... il faut bien lui dire quelque chose, or cette commande est a priori impossible car ça donne des choses bizarres ...

  20. #230
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par Gérard Voir le message
    C'est toi qui vois.
    Les 2 (CAN et comparateur) peuvent être utilisés pour ton applic.

    Tu devrais monter une carte et faire des essais.
    J'attends la livraison des composants

    Mais sinon, le meilleur, c'est le CAN ou le comparateur analogique ? Point de vue fiabilité, précision ( ou ça change pas ? ), rapidité, et si ca va gêner ou non les IRQ ...

  21. #231
    Gérard

    Re : programmation C du 12f629

    Les irq sont prioritaires.

    Il n'y a pas de solution unique et miraculeuse, c'est toi qui choisis ce qui te convient.

    Le comparateur est plus rapide mais dans ton applic, le temps n'est pas critique.
    L'avantage du CAN, il permet de faire plusieurs mesures, d'en faire la moyenne et de se donner une marge plutôt qu'une valeur de basculement.

  22. #232
    marc2009

    Re : programmation C du 12f629

    Mmm ok

    le CAN est donc quand même meilleur, par contre, pourquoi dois je laisser de la marge ? puisque la tension de la batterie ne va pas augmenter toute seule, donc à un moment t, il va mesurer la tension et si cette tension est inférieure à une certaine valeur ( en points ) alors .... mais je vois pas pourquoi mettre une marge !?

  23. #233
    Gérard

    Re : programmation C du 12f629

    Quand le moteur se mettra en marche, la tension de la batterie va diminuer et à l'arrêt du moteur, elle va augmenter.
    Comment sera interprété ce phénomène avec le comparateur ?

  24. #234
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par Gérard Voir le message
    Quand le moteur se mettra en marche, la tension de la batterie va diminuer et à l'arrêt du moteur, elle va augmenter.
    Comment sera interprété ce phénomène avec le comparateur ?
    Tu as sans doute raison, mais ... je ne vais démarrer le CAN qu'après le démarrage moteur pour ne pas justement fausser le résultat, si tu vois ce que je veux dire. Donc après le démarrage moteur ( sous entendu après 1 seconde, donc moteur éteint ), il ne devrait pas y avoir de problèmes, si ?

  25. #235
    Gérard

    Re : programmation C du 12f629

    Ce problème sera donc éliminé.

    Tu devrais faire un ordinogramme (logigramme, mot utilisé à tort car inexistant) de ton soft.

    La traduction en langage évolué en sera d'autant plus facile.

  26. #236
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par Gérard Voir le message
    Ce problème sera donc éliminé.

    Tu devrais faire un ordinogramme (logigramme, mot utilisé à tort car inexistant) de ton soft.

    La traduction en langage évolué en sera d'autant plus facile.
    donc le faire après le démarrage moteur est une solution ( bon faudrait aussi que je le fasse au démarrage du pic ... )

    sinon, avec quel logiciel pourrais je faire un ordinogramme ?

  27. #237
    Gérard

    Re : programmation C du 12f629

    Citation Envoyé par marc2009 Voir le message

    ....
    sinon, avec quel logiciel pourrais je faire un ordinogramme ?
    Le plus vieux du monde : feuille, crayon, gomme.

  28. #238
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par Gérard Voir le message
    Le plus vieux du monde : feuille, crayon, gomme.
    ah je me disais bien ... c'était pas possible qu'il me conseille un logiciel, sinon, on aurait pas fait 14 pages sur ce sujet

    bah, ce que je veux faire, c'est bon, c'est juste l'écriture qui me pose problème, notamment celle du CAN... et des 2 variables qui s'y rattachent ...

  29. #239
    Gérard

    Re : programmation C du 12f629

    Tu devrais trouver des exemples dans la doc du compilateur.

  30. #240
    invite6016e9fe

    Re : programmation C du 12f629

    salut a tou
    merci gérard pour votr répense
    pour le francais ca me pose un problme car je suis pas francais pour les cours de Bigonoff jé essaiyer mais c'est tré dificile pour moi de comprendr tous
    pour la question je veu commander un assenceur a 3 étage avec un pic mais.
    je ne veu pas que quelqun d'autr fait le travaille a ma place mais un peu d'aide a faire le programme c tous?

    merci pour

Page 8 sur 14 PremièrePremière 8 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
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...