arguments dans un void interrupt
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

arguments dans un void interrupt



  1. #1
    inviteba457a30

    arguments dans un void interrupt


    ------

    Bonjour la compagnie !! bon voila je suis en train de réaliser un programme sous mikroC et j'ai une question à laquelle je n'ai pas de réponse, j’espère la trouver ici Bon voila mon projet est une horloge à led et j'aimerai savoir si on peut mettre plusieurs arguments entre les parenthèse de l'interruption : void interrupt blabla(int *unite_seconde, int *unite_minute, int *dizaine_seconde, int *dizaire heure). En gros l'interruption serivrait à régler l'heure à l'aide de plusieurs BP. Donc si c'est possible, pouvez vous me dire comment on fait pour que les variables du main se retrouvent en argument pour l'intrrupt. N'hésitez pas si je n'ai pas été clair à me reposer des questions !! Merci d'avance en tout cas !!

    -----

  2. #2
    pilatomic

    Re : arguments dans un void interrupt

    Bonjour,
    ce n'est pas possible : la fonction INTERRUPT n'est pas appelée par le main, mais bien par le cpu lui même. Pour communiquer entre le main, et ta fonction d'interruption, utilise des variables globales ( déclarée en dehors de toute fonction, et donc accessible depuis tout ton code )

  3. #3
    luc_1049

    Re : arguments dans un void interrupt

    Bonjour

    Variables globales avec de préférence volatile pour être sur d'avoir la dernière valeur lors de la lecture dans une boucle dans le pg principale qui va lire cette variable globale.


    "ce n'est pas possible : la fonction INTERRUPT n'est pas appelée par le main, mais bien par le cpu lui même"
    Effectivement c'est le cpu qui part automatiquement en interruption si elle est validée et exécute ce code.

    Mais qu'est ce qui empêcherait théoriquement d'appeler cette fonction dans le main, je ne dis pas que cela est courant ou présente un intérêt (sauf peut être à dérouler le code pour le tester sans l'évènement matériel générant l'interruption) , mais il me semble que c'est possible, quitte à charger un pointeur de fonction avec son adresse et exécuter le code du pointeur de fonction ?

    cdlt

  4. #4
    pilatomic

    Re : arguments dans un void interrupt

    appeler l'interruption dans le main, ok, ça doit passer, mais si tu rajoutes des paramètres à la fonction qui se trouve au vecteur d'interruption, je pense que le compilo va copieusement t'insulter ^^

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

    Re : arguments dans un void interrupt

    Salut ! Waa super rapide la réponse merci !! Bon pour les variables globales je connais pas de soucis par contre je ne connaissais pas "volatile". Quelqu'un peut m'expliquer ?

  7. #6
    Jack
    Modérateur

    Re : arguments dans un void interrupt

    si dans ton code, le compilateur vient à détecter 2 lecture de cette variable, sans écriture entre les 2, il va optimiser et supprimer la 2ème lecture. Hors le programme d'interruption pourrait lmodifier cette variable.

    Pour empêcher le compilateur d'optimiser cette variable, on lui adjoint le modificateur volatile. Exemple:
    volatile int i= 0;

  8. #7
    jiherve

    Re : arguments dans un void interrupt

    Bonsoir,
    Ceci est vrai pour n'importe quelle fonction en C ou seul le "return" est censé être modifié, je connais certains compilo qui "simplifient" des appels de fonctions ou un pointeur( modifié par la fonction mais ne faisant pas l'objet explicite de modification) est donné en paramètre. Donc le poulailler est indispensable.
    Par contre modifier une variable commune à un programme d'interruption est la source de bugs hilarants, je vous laisse réfléchir sur le sujet.
    JR
    Dernière modification par jiherve ; 20/05/2013 à 20h15.
    l'électronique c'est pas du vaudou!

  9. #8
    invite105cee1c

    Re : arguments dans un void interrupt

    Bonsoir ,

    dsl si ce sujet m'interesse, je suis pas sur de tout comprendre surtout la fin( poulailler , bug hilarant , 4 éme dimension ?)
    avez vous des exemples d'utilisation de variable volatile .
    si je pige bien toutes variables utilisées dans une interruption doit être déclarée en volatile ?

  10. #9
    jiherve

    Re : arguments dans un void interrupt

    Re,
    cela dépend du compilateur et dans le doute on rajoute volatile (d'où le poulailler, ensemble de volatiles).
    Bug hilarant : bug de débutant, qui me fait toujours rire.
    4eme dimension : le temps certainement!
    JR
    l'électronique c'est pas du vaudou!

  11. #10
    Jack
    Modérateur

    Re : arguments dans un void interrupt

    si je pige bien toutes variables utilisées dans une interruption doit être déclarée en volatile ?
    Non, uniquement celles partagées avec d'autres processus dans ton cas.

  12. #11
    invite105cee1c

    Re : arguments dans un void interrupt

    Citation Envoyé par Jack Voir le message
    Non, uniquement celles partagées avec d'autres processus dans ton cas.
    ok merci pour la précision.

    en faite tout ça est écrit dans la notice des compilos mais jusqu'a présent ça n'a jamais été très clair pour moi.

  13. #12
    Jack
    Modérateur

    Re : arguments dans un void interrupt

    Par contre modifier une variable commune à un programme d'interruption est la source de bugs hilarants, je vous laisse réfléchir sur le sujet.
    Je pense que jiherve fait référence aux problème de variables partagées par plusieurs processus. Il faut que la modification soit ininterruptible. C'est le rôle des instructions processeur du type "test and set" par exemple qui permettent d'implémenter des mécanismes de sémaphores.

    A+

  14. #13
    inviteba457a30

    Re : arguments dans un void interrupt

    Ok donc si j'ai bien compris c'est pour pouvoir profiter des variables dans l'interrupt et ainsi ne pas avoir de soucis dans la modification de celles-ci. En tout cas niveau rapidité des réponses je pense qu'on ne peut pas faire mieux merci beaucoup !!!

Discussions similaires

  1. External interrupt pic18f
    Par invited40f9802 dans le forum Électronique
    Réponses: 3
    Dernier message: 23/08/2012, 23h42
  2. [Atmega-C] problème interrupt
    Par inviteb61e4847 dans le forum Électronique
    Réponses: 5
    Dernier message: 04/03/2011, 09h36
  3. int main ? void main ? ou int main(void) ??!!
    Par invitecce9331d dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 15/10/2010, 14h31
  4. Mikrobasic LCD et interrupt
    Par jpjcb66 dans le forum Électronique
    Réponses: 0
    Dernier message: 19/10/2009, 15h28
  5. Interrupt on change
    Par Qristoff dans le forum Électronique
    Réponses: 12
    Dernier message: 01/02/2009, 18h14
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...