PIC, multi thread ?
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

PIC, multi thread ?



  1. #1
    invite116c4f9b

    PIC, multi thread ?


    ------

    Bonjour,

    je débute dans les PICs, à la base je suis développeur Java, donc la gestion de processus n'est pas un souci.

    Là je suis confronté à un problème.

    En effet, j'ai fais un programme qui affiche sur un LCD, pas de souci.
    Un autre programme qui affiche la température, pas de souci.
    Un autre programme qui allume des leds en fonction de l'appui sur des boutons, pas de souci.

    Mais quand je veux tout mettre dans le même programme c'est là que ça commence à merder ...

    Vu qu'apparemment, les programmes PIC tournent dans un do{}while(1) , oui je programme en C avec mikroC, dès qu'un bout de programme a besoin de faire un sleep d'un certain temps, ça bloque tout !!

    Pourriez vous me guider dans la façon de gérer ça ? ? Comment bien structurer mon programme ?

    Merci !!!


    -----

  2. #2
    DAUDET78

    Re : PIC, multi thread ?

    Tes trois taches s'exécutent l'une après l'autre et tout est pour le mieux dans le meilleur des mondes.
    Si une tache doit attendre un certain temps, faut gérer des sémaphores
    Tu positionnes ton sémaphore à 1 et tu lances un timer hard interne et tu passes à la tache suivante. ta tache qui a positionnée le sémaphore sera sautée tant que le sémaphore est à 1
    Quand ton timer hard a remis (en interruption) le sémaphore à zéro le processus de la tache en attente peut continuer.

    Evidemment ce job est le role d'un O.S. temps réel, mais on est sur un p'tit micro .......
    J'aime pas le Grec

  3. #3
    invite116c4f9b

    Re : PIC, multi thread ?

    oula, j'ai pas compris grand chose


    Citation Envoyé par DAUDET78 Voir le message
    Tes trois taches s'exécutent l'une après l'autre et tout est pour le mieux dans le meilleur des mondes.
    Si une tache doit attendre un certain temps, faut gérer des sémaphores
    Tu positionnes ton sémaphore à 1 et tu lances un timer hard interne et tu passes à la tache suivante. ta tache qui a positionnée le sémaphore sera sautée tant que le sémaphore est à 1
    Quand ton timer hard a remis (en interruption) le sémaphore à zéro le processus de la tache en attente peut continuer.

    Evidemment ce job est le role d'un O.S. temps réel, mais on est sur un p'tit micro .......

  4. #4
    DAUDET78

    Re : PIC, multi thread ?

    Bon, ben je crois que tu as un problème sur la gestion des process. Sorry, je peux pas être plus clair
    J'aime pas le Grec

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : PIC, multi thread ?

    Sans se lancer dans un OS multitâche, tu peux faire de la programmation évènementielle de base à l'aide des interruptions.
    Un timer lancer les mesures et calcule toutes les x ms, et l'affichage toutes les y ms.

    L'appui sur un bouton poussoir déclenchera une interruption également.

    Ainsi tu n'es plus bloqué.

  7. #6
    invite5735c9fd

    Re : PIC, multi thread ?

    Ce que DAUDET78 veut dire c'est que :

    Si tes 3 taches peuvent tourner l'une apres l'autre ben y a aps de problème : mais apparement c'est pas le cas ici

    Si tes 3 taches peuvent pas tourner l'une apres l'autre (ce qui apparement est le cas ici) ben il te faut utiliser des sémaphores. Un sémaphore te permet de "découper" chacune des taches en sous taches et d'éxecuter plusieurs de ses sous taches les une apres les autres, mais au final on pourra considérer que c'est de la programmation parralelle (meme si ca ne l'est pas vraiment puisque tu n'as qu'1 micro)

    Le seule soucis c'est que pour gérer des sémaphore faut de sgestion de priorités et ca c'est un OS temps réel qui le fait, pas un PIC16F...

    Donc ne fait t'es dans la merd...

  8. #7
    Seb.26

    Re : PIC, multi thread ?

    Quel que soit ton CPU ( sauf un dualcore evidement ) et ton language , de toute façon, un seul processus s'execute en même temps, c'est le job d'un scheduler de partager le temps ...

    perso j'ai utilisé un 18F4550 ... avec un timespan du scheduler à 10ms et pas mal d'interuptions "intelligentes" ( I2C, UART principalement ) ... ça donne d'assez bon resultats ...

    J'ai modelisé chaque "tache" par une fonction, et une structure de données pour heberger les données membres de chaque instance de chaque tache. En gros : comment faire du pseudo C++ en C sur PIC ...

    J'ai donc comme cela quelques taches LCD, I/O, UART ... et au dessus une tache applicative qui interface les autres et reagit aux evenements.

    Le principale étant de bien poser le problème au début ...

Discussions similaires

  1. Télécharger un thread
    Par cipango dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 5
    Dernier message: 19/08/2006, 20h53
  2. Chargeur (GSM) - multi input - multi output
    Par james_patageul dans le forum Électronique
    Réponses: 0
    Dernier message: 15/07/2006, 18h14
Découvrez nos comparatifs produits sur l'informatique et les technologies.