Un pic peut-il faire deux choses à la fois ?
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 41

Un pic peut-il faire deux choses à la fois ?



  1. #1
    Kowentin

    Question Un pic peut-il faire deux choses à la fois ?


    ------

    Bonjour,

    Je viens de développer une application pour un PIC 16F877a avec un écran LCD qui me sert à contrôler le niveau de l'eau de mon aquarium et à faire des vidanges.
    Le principe est simple, deux capteurs niveau haut et bas et deux ou trois lignes de codes et on en parle plus.
    Seulement, si je me suis lancé dans ce projet, c'est pour que le changement soit automatisé, une fois par semaine il faut un changement de l'eau.

    Ma question est simple, le PIC est-il capable de gérer une horloge avec fonctions hebdomadaire en même temps qu'il gère l'eau (sachant que pendant le remplacement, il y a plusieurs boucles etc) ?

    Je pense que le PIC n'est capable de gérer qu'une seule instruction à la fois, donc en théorie, il ne peut pas calculer l'heure qu'il est et faire le programme de changement de l'eau, mais je peux me planter.

    Si ce n'est pas possible, comment faire autrement ? un autre pic avec un autre écran juste pour la fonction horloge qui envoie une impulsion au pic principal lorsque celui-ci doit faire le changement de l'eau ?

    Merci

    -----

  2. #2
    RicounetZap

    Re : Un pic peut-il faire deux choses à la fois ?

    Bonjour,

    C'est très simple avec le même pic. Il y a 2 solutions :
    1) Utilisation des interruptions sur le timer. Tu incrémentes un compteur et quand tu arrives à ta consigne, tu fais le changement d'eau.
    2) Tu incrémentes un compteur dans ta boucle principale ... Il faut juste pouvoir étalonner correctement ton compteur.

    Le meilleur moyen est l'utilisation de l'interruption, à mon avis

    Cordialement

  3. #3
    Kowentin

    Re : Un pic peut-il faire deux choses à la fois ?

    Le fait de ne pas connaitre le temps que va mettre le changement d'eau à s'effectuer est-il grave dans le cas des interruptions ?

    M'ci

  4. #4
    RicounetZap

    Re : Un pic peut-il faire deux choses à la fois ?

    Non, je ne pense pas. Si tu déclenche une interruption toutes les secondes, tu incrémentes un compteur.
    arrivée à 3600, tu incrémentes ton compteur d'heure etc...
    Je ne sais pas comment tu gères ta vidange : durée ou niveau d'eau.
    Pour la durée, tu continues à traiter les interruptions avec un nouveau compteur.
    Si tu gères avec un niveau d'eau, attente du déclenchement de niveau et arret de la vidange.
    L'interruption arrive, du moment ou elle est validée, systématiquememt. Il faut juste voir l'algorithme permettant la gestion correcte des différentes étapes.

  5. A voir en vidéo sur Futura
  6. #5
    Kowentin

    Re : Un pic peut-il faire deux choses à la fois ?

    Voici un bout du programme, c'est ce qui se passe si on appuie sur le bouton pour un changement manuel de l'eau (ceci dit, en automatique c'est la même chose, sauf que ce n'est pas lancé par un bouton)



    Merci

  7. #6
    invite2d9e7c03

    Re : Un pic peut-il faire deux choses à la fois ?

    Salut,
    Je pense que l'idée la plus adéquate est l'utilisation du timer.(La durée des cycle de vidange ne change rien)
    Mais puisque les durées sont trés importantes (semaines) avec une horloge de quelque Mhz tu devras manipuler de trés grandes valeurs.
    Il convient alors d'utiliser une 2eme horloge de basse fréquence
    voir cette discussion:
    http://forums.futura-sciences.com/thread232585.html
    Bon courage

  8. #7
    invite19f369ec

    Re : Un pic peut-il faire deux choses à la fois ?

    oui, un micro peut faire 2 choses a la fois: comme incrementation du timer et utilisation de l'ALU (Arithmetic & Logic Unit) par exemple.

  9. #8
    gedonet

    Re : Un pic peut-il faire deux choses à la fois ?

    Bonjour
    Chercher un composant qui fait deux choses en même temps, c'est utile pour surveiller des evenements extremements rapides avec une precision à la microseconde. Par contre pour des evenements hebdomadaires et (ou) tres lent comme la variation du niveau on peut les traiter l'un apres l'autre ou imbriquer l'un dans l'autre, il faut se souvenir que le temps d'une instruction pour un pic ordinaire est de 200 nanosecondes, donc cela te laisse 0.2X10^6 instructions libres entre chaque seconde ou tu incrementes ton horloge.
    Gilles

  10. #9
    invite2d9e7c03

    Re : Un pic peut-il faire deux choses à la fois ?

    Bonjour,
    Il y a le XR2240 qui pourrait etre utile pour ton application(il ya d'autres modules du meme genre à toi d'appeler google)
    @+

  11. #10
    Kowentin

    Re : Un pic peut-il faire deux choses à la fois ?

    Je vais faire des tests, et je vous tiens au courant
    Merci

  12. #11
    invite8b53d8b5

    Re : Un pic peut-il faire deux choses à la fois ?

    parametrer le timer en interruption permet de faire du multi tasking

  13. #12
    invite03481543

    Re : Un pic peut-il faire deux choses à la fois ?

    Hello,

    Kowentin, ton 'flowchart' peut-être simplifié, tu as, comme tu le dis toi même, des fonctions redondantes entre le mode manuel et le mode automatique, donc il vaut mieux déjà simplifier cela avant de te lancer dans le programme.
    @+

  14. #13
    Seb.26

    Re : Un pic peut-il faire deux choses à la fois ?

    Bonjour @ tous,

    Un pic peut-il faire deux choses à la fois ?
    Pas plus qu'un Core 2 Duo @3GHz ne peut en faire 3 ...

    -> http://fr.wikipedia.org/wiki/Multit%C3%A2che

    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  15. #14
    Kowentin

    Re : Un pic peut-il faire deux choses à la fois ?

    Citation Envoyé par HULK28 Voir le message
    Hello,

    Kowentin, ton 'flowchart' peut-être simplifié, tu as, comme tu le dis toi même, des fonctions redondantes entre le mode manuel et le mode automatique, donc il vaut mieux déjà simplifier cela avant de te lancer dans le programme.
    @+
    Le flowchart que j'ai montré n'est pas tout à fait celui que j'utilise, j'utilise des macros pour les fonctions identiques entre le mode manuel et le mode auto, j'ai tout mis dans celui la pour montrer toutes les étapes.

    Je fais des essais d'interruption... j'espère y arriver (vive la simulation ^^)

  16. #15
    Kowentin

    Re : Un pic peut-il faire deux choses à la fois ?

    J'ai fait un essai, techniquement ca fonctionne, en simulation en tout cas, mais les secondes vont bien vite, bien trop vite ! pour dire, même les dizaines de minutes vont plus vite qu'une seconde normale, cependant, le fonctionnement fonctionne parfaitement (enfin le comptage, secondes, minutes, heures, jour de la semaine).

    Je vais essayer de trouver un moyen pour qu'une seconde fasse bien une seconde...

  17. #16
    sdec25

    Re : Un pic peut-il faire deux choses à la fois ?

    Citation Envoyé par Kowentin Voir le message
    Je vais essayer de trouver un moyen pour qu'une seconde fasse bien une seconde...
    Si ton PIC fonctionne à une fréquence de F, pour une seconde il faut compter jusqu'à : F/4 / prescaler

    Bien-sûr si tu utilises l'interruption il ne faut pas que le compteur démarre à 0.

  18. #17
    Kowentin

    Re : Un pic peut-il faire deux choses à la fois ?

    Je vais tenter...
    Merci

  19. #18
    cherwam07

    Re : Un pic peut-il faire deux choses à la fois ?

    Je vais essayer de trouver un moyen pour qu'une seconde fasse bien une seconde...
    Un quartz de 32,768kHz (2^15) sur TIOS0, TIOS1 ca fait deborder un timer 16 bits (comme le timer 1 par exemple) toute les 2 secondes.
    En remettant le bit 15 de ce timer à 1 à chaque interruption, ca le fait déborder pile poil toute les secondes.

  20. #19
    Kowentin

    Re : Un pic peut-il faire deux choses à la fois ?

    Citation Envoyé par cherwam07 Voir le message
    Un quartz de 32,768kHz (2^15) sur TIOS0, TIOS1 ca fait deborder un timer 16 bits (comme le timer 1 par exemple) toute les 2 secondes.
    En remettant le bit 15 de ce timer à 1 à chaque interruption, ca le fait déborder pile poil toute les secondes.
    Donc il faut que je change mon quartz pour un 32,768 KHz... je vais indiquer ça dans la simulation déjà

  21. #20
    sdec25

    Re : Un pic peut-il faire deux choses à la fois ?

    Citation Envoyé par Kowentin Voir le message
    Donc il faut que je change mon quartz pour un 32,768 KHz... je vais indiquer ça dans la simulation déjà
    C'est sûr qu'avec un quartz qui a une fréquence puissance de 2 c'est plus simple. Mais tu peux le faire avec n'importe quelle fréquence.

    Par exemple avec l'oscillateur interne 8 Mhz et un prescaler de 32, en une seconde TMRH = 244 et TMRL = 36

    Donc il faut initialiser le timer afin qu'il compte 244*256 + 36 (TMRH = 11 et TMRL = 220).

    Et de préférence, réinitialiser le compteur sans l'arrêter (on peut changer TMRH et TMRL en même temps en écrivant d'abord TMRH).
    Dernière modification par sdec25 ; 28/08/2008 à 18h17.

  22. #21
    Kowentin

    Re : Un pic peut-il faire deux choses à la fois ?

    Bon, j'ai reglé tout comme il faut, du moins je pense

    Réglage de l'horloge:



    Réglage de l'interruption:



    Propriétés de l'interruption:



    Tout me semble bon, mais le fait que la simulation soit en "le plus rapidement possible" doit y être pour quelque chose, mais si je met moins, ça merdouille un max, (le rafraichissement des variables est tout moche) mais les secondes ont l'air correctes...

    Le soft: Flowcode

  23. #22
    cherwam07

    Re : Un pic peut-il faire deux choses à la fois ?

    Tu peux mettre 2 quartz :
    Un rapide sur OSC1, OSC2
    Le lent sur TIOS0, T1OS1.

    Après je ne sais pas si ton outil peut simuler ca, mais ca fonctionne.

  24. #23
    sdec25

    Re : Un pic peut-il faire deux choses à la fois ?

    Au fait il te faut quelle précision ?
    Le temps du début du traitement de l'interruption n'est pas compté dans le timer...
    Et comme te le conseille cherwam07 il faudrait un oscillateur rapide pour le PIC.

    Sinon ça donne quoi en 8 Mhz, 16 bits, prescaler 32 et en réinitialisant TMRH = 11 et TMRL = 220 ?

  25. #24
    Kowentin

    Re : Un pic peut-il faire deux choses à la fois ?

    Qu'est-ce que tu veux dire par TMRH et TMRL ?

  26. #25
    annjy

    Re : Un pic peut-il faire deux choses à la fois ?

    Citation Envoyé par Seb.26 Voir le message
    Bonjour @ tous,

    Pas plus qu'un Core 2 Duo @3GHz ne peut en faire 3 ...


    Bsr,
    un processeur n'exécute qu'une seule opération à la fois.
    La simultanéité n'est donc qu'apparente.

    Je ne connais pas suffisamment l'architecture des "multi-core" pour pouvoir juger . Il y a plusieurs coeurs, mais semble-t-il quelque chose de commun (qui pourrait alors limiter les perfos...)

    personnellement, je viens de changer mon ordi (Athlon XP3000+) par un autre (Quad Core) pour cause de foudre (pas de coup de foudre) et je ne constate aucune amélioration...
    Il est vrai que je ne fais pas non plus de jeux ....ou autres gourmands en ressources.

    Bonne soirée à tous,
    JY

  27. #26
    sdec25

    Re : Un pic peut-il faire deux choses à la fois ?

    Citation Envoyé par Kowentin Voir le message
    Qu'est-ce que tu veux dire par TMRH et TMRL ?
    cf mon message #20 :
    Un timer 16 bits utilise 2 registres : par exemple TMR0H et TMR0L pour le timer 0.
    H pour poids fort et L pour poids faible.

    Si tu réinitialise TMR0H à 11 et TMR0L à 220, avec la configuration que j'ai décrite, il y aura une interruption toutes les secondes avec l'oscillateur 8 Mhz.

  28. #27
    Kowentin

    Re : Un pic peut-il faire deux choses à la fois ?

    Et.... Si j'applique un signal de 1 Hz sur la broche RB0/INT du PIC ? comme ca pas besoin de faire des divisions et tout, moins de travail pour le PIC... enfin il peut calculer, il est fait pour ca ^^

    Sinon comme précision, il me faut une précision comme une horloge, enfin une précision pour pas avoir besoin de remettre la boîte à l'heure toutes les semaines

  29. #28
    Kowentin

    Re : Un pic peut-il faire deux choses à la fois ?

    Citation Envoyé par sdec25 Voir le message
    cf mon message #20 :
    Un timer 16 bits utilise 2 registres : par exemple TMR0H et TMR0L pour le timer 0.
    H pour poids fort et L pour poids faible.

    Si tu réinitialise TMR0H à 11 et TMR0L à 220, avec la configuration que j'ai décrite, il y aura une interruption toutes les secondes avec l'oscillateur 8 Mhz.
    Ce n'est apparement pas possible avec Flowcode

  30. #29
    sdec25

    Re : Un pic peut-il faire deux choses à la fois ?

    Dans ce cas c'est le circuit qui va envoyer le signal au PIC qui va travailler

    Comme tu dis le PIC est fait pour ça

    Sinon c'est sûr qu'il y a plusieurs solution : l'oscillateur 32768 Hz externe est simple mais nécessite un oscillateur externe...
    La mienne est moins évidente mais n'utilise pas d'oscillateur externe.

    Il faudrait que tu mesure la durée de traitement d'une interruption, pour voir s'il y a besoin de corriger la valeur du timer.

  31. #30
    sdec25

    Re : Un pic peut-il faire deux choses à la fois ?

    Citation Envoyé par Kowentin Voir le message
    Ce n'est apparement pas possible avec Flowcode
    Si j'ai bien compris, sur tes captures d'écran tu as un timer 8 bits, prescaler 32 et oscillateur 32768 Hz ?
    Si mes calculs sont bons on a 32768/4 = 8192 Hz de fréquence de traitement d'instructions, divisé encore par 32 et on obtient bien 256 qui va faire déborder le timer.

    Tu peux toujours essayer avec MPSIM. Mais à moins que tu n'utilises un oscillateur de fréquence multiple d'1 seconde, il faudra initialiser le timer à une valeur différente de 0.

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. Peut-on faire changer les choses
    Par Phil19 dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 1
    Dernier message: 08/10/2007, 07h58
  2. Visual basic et windows, deux choses différentes ou sont liées?
    Par invite3c4c47ae dans le forum Matériel - Hardware
    Réponses: 3
    Dernier message: 14/06/2006, 08h50
Découvrez nos comparatifs produits sur l'informatique et les technologies.