Bonjour, cliquez-ici pour vous inscrire et participer au forum.
  • Login:



+ Répondre à la discussion
Page 2 sur 5 PremièrePremière 2 DernièreDernière
Affichage des résultats 16 à 30 sur 62

Interruptions avec bouton (Arduino)

  1. lpt1com2

    Date d'inscription
    novembre 2012
    Messages
    858

    Re : Interruptions avec bouton (Arduino)

    Citation Envoyé par antek Voir le message
    La gestion des interruptions est hiérarchisable.
    Ben oui, mais avec la priorité minimum pour le poussoir, ton utilisateur attendra autant de millisecondes que sans interruption.
    Pourquoi faire simple...
    De plus, l’action sur le bouton poussoir peut déclencher des procédures longues, selon les besoins du programme.

    -----

    Il vaut mieux être le deuxième mari d'une veuve, que le premier
     


    • Publicité



  2. DAUDET78

    Date d'inscription
    septembre 2006
    Localisation
    Ile de France
    Âge
    74
    Messages
    62 713

    Re : Interruptions avec bouton (Arduino)

    Citation Envoyé par lpt1com2 Voir le message
    De plus, l’action sur le bouton poussoir peut déclencher des procédures longues, selon les besoins du programme.
    Jamais en interruption !
    En interruption, on vient tester le sens de changement, un rebond et on positionne un flag 'semaphore) qui sera traité plus tard dans le "main"
    Bonjour et au revoir .... a remettre en début et en fin de réponse
     

  3. lpt1com2

    Date d'inscription
    novembre 2012
    Messages
    858

    Re : Interruptions avec bouton (Arduino)

    Citation Envoyé par DAUDET78 Voir le message
    Jamais en interruption !
    En interruption, on vient tester le sens de changement, un rebond et on positionne un flag 'semaphore) qui sera traité plus tard dans le "main"
    Mais c'est bien ce que je voulais dire: pas besoin d'interruption pour détecter l'appui sur un poussoir !
    Il vaut mieux être le deuxième mari d'une veuve, que le premier
     

  4. DAUDET78

    Date d'inscription
    septembre 2006
    Localisation
    Ile de France
    Âge
    74
    Messages
    62 713

    Re : Interruptions avec bouton (Arduino)

    Citation Envoyé par lpt1com2 Voir le message
    Mais c'est bien ce que je voulais dire: pas besoin d'interruption pour détecter l'appui sur un poussoir !
    Ben non ....
    - L'interruption permet de prendre en compte "immédiatement (?)" l'évenement sur le bouton
    - Le test du flag "plus tard (?)", d’exécuter l'action qui en résulte
    Bonjour et au revoir .... a remettre en début et en fin de réponse
     

  5. Vincent PETIT

    Date d'inscription
    juin 2010
    Localisation
    Pas de Calais
    Âge
    36
    Messages
    302

    Re : Interruptions avec bouton (Arduino)

    Je partage à 100% le point de vu de antek et de DAUDET78. Moi j'ai toujours géré mes interrupteurs/boutons poussoirs en interruption.

    Cela permet de réaliser une machine à état en guise de programme principal.

    Au lieu, de scruter sans arrêt une entrée pour voir si l'utilisateur à appuyé sur un bouton (100% du CPU utilisé), moi je mets mon micro en veille et c'est une interruption sur le bouton qui vient réveiller mon micro.

    dans mon programme d'interruption, je mets simplement une variable à une certaine valeur. Puis le micro se réveille à cause de l'interruption. Enfin le programme principal, qui est une boucle avec un simple switch case test la variable et exécute l'action désirée et hop..... re-mise en en veille. En faisant du polling (une boucle qui scrute tout le temps dans le soft) tu consommes toujours à 100%

    Après effectivement, on peut toujours faire du polling ça va fonctionner aussi.
     


    • Publicité



  6. antek

    Date d'inscription
    février 2015
    Messages
    8 490

    Re : Interruptions avec bouton (Arduino)

    Citation Envoyé par Forhorse Voir le message
    Donc je persiste, dans un contexte normal (genre j'appuie sur un bouton ça allume une led, je re-appuie ça l’éteint) les interruptions ne sont pas nécessaires.
    Ton contexte n'est pas "normal", on n'utilise pas un µC pour allumer une led.
    Sauf dans le cadre de l'apprentissage.

    Et il y a toujours plusieurs façons pour résoudre un problème.
     

  7. lpt1com2

    Date d'inscription
    novembre 2012
    Messages
    858

    Re : Interruptions avec bouton (Arduino)

    Citation Envoyé par DAUDET78 Voir le message
    Ben non ....
    - L'interruption permet de prendre en compte "immédiatement (?)" l'évenement sur le bouton
    - Le test du flag "plus tard (?)", d’exécuter l'action qui en résulte
    D'accord pour le cas où l'utilisateur devrait maintenir appuyé le poussoir plusieurs secondes.
    Ce cas doit quand même être assez rare, non ?
    Il vaut mieux être le deuxième mari d'une veuve, que le premier
     

  8. Yvan_Delaserge

    Date d'inscription
    mars 2013
    Localisation
    Aspretto
    Messages
    2 067

    Re : Interruptions avec bouton (Arduino)

    Citation Envoyé par Forhorse Voir le message
    Par exemple, un automate programmable industriel est capable de géré des dizaines, voir des centaines d'entrées : boutons, capteurs, commutateurs, interrupteurs... sans interruptions, simplement en scrutant régulièrement ses entrées (temps de cycle typique 10ms)
    Dans ce contexte les interruptions sont plutôt utilisées pour des périphériques genre codeur incrémental, compteurs, communication.

    Je ne vois pas pourquoi un µC aurait besoin d'interruption pour gérer l’appui sur un bouton poussoir (actionné par un humain...)
    ça fait pas loin de 20 ans que je bricole avec des µC, et j'ai jamais eu besoins d'interruptions pour gérer des boutons. (et mes boutons réagissent très bien et sans latence...)
    Je ne dis pas qu'il ne faut pas le faire, et je ne dis pas qu'il n'y a pas des cas particuliers où ça peut être nécessaires, mais quand on regardes un peu l'historique des messages liés à la programmation de µC, on constate que de plus en plus souvent on à recours aux interruptions pour lire des boutons, alors qu'a côté de ça les programmes sont bourrés de "delay()" et autres temporisations bloquantes du genre. (mais l'un ne va pas sans l'autre, forcement on ne peut pas faire un scrutation régulière des boutons, si à côté de ça le programme passe un temps fou bloqué par des boucles de temporisations...)
    J'ai surtout l'impression que les bonnes pratiques de la programmation se perdent, et que pour compenser on à de plus en plus recours à des artifices inutiles pour se sortir d'un programme mal foutu...

    Donc je persiste, dans un contexte normal (genre j'appuie sur un bouton ça allume une led, je re-appuie ça l’éteint) les interruptions ne sont pas nécessaires.
    Dans le cas de l'Arduino, les interruptions ne font pas forcément bon ménage avec les temporisations.

    Millis () s'appuie sur les interruptions pour compter, donc il ne sera jamais incrémenté pendant une interruption.
    Comme delay () requiert des interruptions pour fonctionner, il ne fonctionnera pas s'il est appelé par une interruption.
    Micros () fonctionne initialement, mais va commencer à se comporter de façon erratique après 1-2 ms.
    DelayMicroseconds () n'utilise pas de compteur, donc il fonctionnera normalement.
    Un civet, un plat de côtes et puis, glissez-moi une petite paupiette avec.( Lino Ventura)
     

  9. antek

    Date d'inscription
    février 2015
    Messages
    8 490

    Re : Interruptions avec bouton (Arduino)

    Citation Envoyé par lpt1com2 Voir le message
    D'accord pour le cas où l'utilisateur devrait maintenir appuyé le poussoir plusieurs secondes.
    Pas du tout, ça fonctionne dans tous les cas.
     

  10. Forhorse

    Date d'inscription
    décembre 2010
    Messages
    1 748

    Re : Interruptions avec bouton (Arduino)

    Citation Envoyé par antek Voir le message
    Ton contexte n'est pas "normal", on n'utilise pas un µC pour allumer une led.
    Sauf dans le cadre de l'apprentissage.
    Faut apprendre à lire entre les lignes hein...
    Tout projet flou conduit à une connerie précise !
     

  11. antek

    Date d'inscription
    février 2015
    Messages
    8 490

    Re : Interruptions avec bouton (Arduino)

    Citation Envoyé par Yvan_Delaserge Voir le message
    Dans le cas de l'Arduino, . . .
    Il est vrai que la question de départ concerne Arduino et pas les µC en général.
     

  12. antek

    Date d'inscription
    février 2015
    Messages
    8 490

    Re : Interruptions avec bouton (Arduino)

    Citation Envoyé par Forhorse Voir le message
    Faut apprendre à lire entre les lignes hein...
    C'est déjà assez difficile de communiquer par écrit.
    Alors si on rajoute des possibilités d'interprétation . . .
     

  13. Forhorse

    Date d'inscription
    décembre 2010
    Messages
    1 748

    Re : Interruptions avec bouton (Arduino)

    Citation Envoyé par Vincent PETIT Voir le message
    Je partage à 100% le point de vu de antek et de DAUDET78. Moi j'ai toujours géré mes interrupteurs/boutons poussoirs en interruption.

    Cela permet de réaliser une machine à état en guise de programme principal.

    Au lieu, de scruter sans arrêt une entrée pour voir si l'utilisateur à appuyé sur un bouton (100% du CPU utilisé), moi je mets mon micro en veille et c'est une interruption sur le bouton qui vient réveiller mon micro.
    C'est une approche intéressante pour une application qui passe son temps à attendre des événements et ça permet effectivement d’économiser un peu d’énergie. Mais ça demande d'utiliser les interruptions pour un peu prêt tout.
    Quand on doit faire des calculs réguliers en tache de fond (régulation PID par exemple) ça tombe un peu à l'eau.

    En scrutation on peut aussi faire un programme qui met le µC en veille et sans interruption*. Si on vient lire les entrées que toutes les 10ms, et qu'on déroule le programme que s'il y a eu un changement, les µC passe aussi le plus clair de son temps en veille. (bien-sûr même limitation que si à côté de ça on doit faire des calculs réguliers)
    C'est un tout petit peu moins économe qu'avec les interruptions, mais ça ne nécessite pas d'interruptions...(nombre de vecteurs parfois limités, etc...)
    10ms sur un appuis de bouton c'est rien... c'est le temps minimum de l'anti-rebond... et pour un µC c'est une éternité, donc ça fait quand même pas mal d'économies.

    *EDIT : avant qu'on vienne pinailler... oui bien sur il faut quand même une interruption sur un timer pour réveiller régulièrement le µC
    Dernière modification par Forhorse ; 18/03/2017 à 12h19.
    Tout projet flou conduit à une connerie précise !
     

  14. Forhorse

    Date d'inscription
    décembre 2010
    Messages
    1 748

    Re : Interruptions avec bouton (Arduino)

    Citation Envoyé par antek Voir le message
    C'est déjà assez difficile de communiquer par écrit.
    Alors si on rajoute des possibilités d'interprétation . . .
    C'est quand même evident que c'était un exemple... j'allais pas citer toutes les actions que l'on peut déclencher par l’appui sur un BP. Et puis je me met au niveau de la grande majorité des utilisateurs qui viennent poser des questions sur ce forum à propos de l'arduino...
    En caricaturant à peine : il ont fait un programme qui font clignoter une led à grand coups de "delay()" et ensuite il veulent en allumer une autre quand ils appuient sur un bouton, et ils se demandent pourquoi ça marche pas...

    Je pense que ceux qui participent à cette discussion ont déjà un certain niveau et j'imaginais donc qu'ils comprendraient ce que je voulais dire par "allumer une led" visiblement c'est pas le cas...
    Tout projet flou conduit à une connerie précise !
     

  15. lpt1com2

    Date d'inscription
    novembre 2012
    Messages
    858

    Re : Interruptions avec bouton (Arduino)

    Citation Envoyé par antek Voir le message
    Pas du tout, ça fonctionne dans tous les cas.
    Évidemment!
    Alors je précise : traiter l’appui du BP par interruption est justifié si des tâches longues peuvent être en cours. C’est le principe du flag levé dans l’interruption, proposé par DAUDET78.
    Question : ce cas est-il fréquent ?
    AMHA, c’est assez exceptionnel, et le test d’un poussoir est suffisant dans 90% des cas. J’ai cru comprendre que le demandeur se trouve dans les 90%.
    Il vaut mieux être le deuxième mari d'une veuve, que le premier
     


    • Publicité







Sur le même thème :





 

Discussions similaires

  1. [Analogique] On/Off Arduino avec Bouton Fugitif
    Par Rodila dans le forum Électronique
    Réponses: 3
    Dernier message: 02/06/2016, 16h32
  2. Besoin d'aide Servomoteur Arduino avec bouton.
    Par theol31 dans le forum Électronique
    Réponses: 3
    Dernier message: 12/02/2016, 00h04
  3. Alimentation Arduino avec bouton manuel et electrique
    Par baptiste77370 dans le forum Électronique
    Réponses: 3
    Dernier message: 10/10/2015, 18h56
  4. besoin d'aide bouton poussoir avec l'arduino mega
    Par joeman1 dans le forum Électronique
    Réponses: 11
    Dernier message: 20/10/2014, 20h32
  5. Allumer une led avec un bouton pousoir (Arduino)
    Par Darrkshadow dans le forum Électronique
    Réponses: 9
    Dernier message: 12/12/2012, 13h26