Ok, mais pourquoi ?
... qu'est ce qui pour toi justifie l'utilisation des IT ?
( attention, je ne dis pas que c'est pas la bonne solution, je cherche juste à comprendre ce qui te pousse à vouloir les utiliser... )
<< L'histoire nous apprend que l'on apprend rien de l'histoire. >>
Dans ta proposition lil vince, le BP1 n'est pas gérer avec les interruptions? il est gérer dans le main()..
Car mon PIC gerera la conversion analogique/numérique, l'affichage sur le LCD, et je pense que si j'y insere la gestion des BP sans interruptions, j'aurai un temps de réponse lent a mon avis(je me trompe peut etre) et donc si j'utilise les interruptions pour cela sera sans doute mieux..Ok, mais pourquoi ?
... qu'est ce qui pour toi justifie l'utilisation des IT ?
Je crois que j´ais compris en fait, donc revient à mon message#26:
Avec lissage = long int (pour aller à 1sec/0,2us = 5.000.000 donc seuil = 5.000.000 (ou 2.500.000 a tester))// Dans la routine d´interruption
if (INTCON3bits.INT1IF) // interruption front descendant du BP
{
for (lissage = 0; lissage < seuil; lissage++) {} // Délais proportionnel à "seuil"
if (PORTBbits.RB1==0) // Si encore en appui->appui long
{
LEDA5 = !LEDA5;
}
else // Bouton relaché -> appui court
{
LEDA3 = !LEDA3;
}
INTCON3bits.INT1IF=0;
}
Ca fera tout dans ton interruption, pas besoin du timer et pas de raison que ca ne marche pas!
Mais par contre je ne vois pas le problème (justement on t´as dit que c´était mieux d´en faire le plus possible en dehors des interruptions)Dans ta proposition lil vince, le BP1 n'est pas gérer avec les interruptions? il est gérer dans le main()..
Et dans la boucle
Tu peux mettre ce que tu veux pour faire autre chose en attendant...while(INT_BP1 == 0){}
Enfin bon,lis tous mes derniers messages (a partir du #89) et choisit soit le message#26 (oubli pas lissage = 4octets !) soit le #75...
Un temps de réponse lent ??? ... tu dois avoir des yeux bioniques alors ... mais j'imagine que tu dis cela car tu vois la LED clignoter quand elle est sur le 10ms ...Car mon PIC gerera la conversion analogique/numérique, l'affichage sur le LCD, et je pense que si j'y insere la gestion des BP sans interruptions, j'aurai un temps de réponse lent a mon avis(je me trompe peut etre) et donc si j'utilise les interruptions pour cela sera sans doute mieux..
Mais donc tu vas aussi mettre la gestion de ton LCD dans tes IT, (sinon à quoi cela servirait de voir les évènements super vite et de réagir plus lentement ? )
<< L'histoire nous apprend que l'on apprend rien de l'histoire. >>
Autant que je mette un delay_ms(1000)...ça ferai la meme chose, non?for (lissage = 0; lissage < seuil; lissage++) {} // Délais proportionnel à "seuil"
(meme si je sais que mettre des delay dans une interruption...c'est moche..et que l'on utilise pas l'interruption dans son propre but..qui est de interrompre..
mais bon!c'est faisaible?
à Seb26, je suis d'accord avec toi, mais si j'appui sur le BP pas assez longtemps pour que le programme revienne scruter letat du BP, le programme ne prendra pa en compte lappui..non??
<< L'histoire nous apprend que l'on apprend rien de l'histoire. >>
Grillé par Seb.26: tu ne verras pas de lenteur à mon avis!Car mon PIC gerera la conversion analogique/numérique, l'affichage sur le LCD, et je pense que si j'y insere la gestion des BP sans interruptions, j'aurai un temps de réponse lent a mon avis(je me trompe peut etre) et donc si j'utilise les interruptions pour cela sera sans doute mieux..
Tu voudras faire quoi comme action à l´appui sur ton BP? Parsque comme j´ai compris, tu voudras modifier l´affichage non?
Hum ... donc un appui de moins de 10ms ... perso je considère pas que ce soit un appui ça, c'est un parasite, et c'est justement ce que tu veux eviter en lissant ... si c'est pour prendre un glitch de 10ms comme une action utilisateur, autant ne pas lisser du tout ...
<< L'histoire nous apprend que l'on apprend rien de l'histoire. >>
A mon avis ca marcherait quand même mais si tu veux etre sur , si tu utilise les flags des interruptions du coup ca garde en memoire l´action tant que tu le remets pas a zero...à Seb26, je suis d'accord avec toi, mais si j'appui sur le BP pas assez longtemps pour que le programme revienne scruter letat du BP, le programme ne prendra pa en compte lappui..non??
Oui je l'avoue, je suis grillé par Seb26...mais tant pis
Oui exactement, changer la valeur de paramètre, d'image à l'écran,..et une fonction arret...et là je pourrai utiliser les interruptions..OUI ou NON?Tu voudras faire quoi comme action à l´appui sur ton BP? Parsque comme j´ai compris, tu voudras modifier l´affichage non?
Ce que je pensai, c'est que la durée totale de mon while(1) qui contient la gestion LCD et conversion AN, dure plus longtemps que l'appui sur mon BP (mais je me suis peut etre trompé..Hum ... donc un appui de moins de 10ms ...
Pour l'instant ce n'est pas au gout du jour...PS: j'éspère que tu n'auras jamais besoin de l'UART ...
Je n´ais pas de Delay_ms() dans mes softs.... L´habitude! (et puis NOP() ou boucle for(){} c´est du pareil au meme)Autant que je mette un delay_ms(1000)...ça ferai la meme chose, non?
Oui, et ce serait même plus propre ...
<< L'histoire nous apprend que l'on apprend rien de l'histoire. >>
Perso je pense que si le hard est bien fait de toute facon le lissage (comme ca) ne sert à rien... Il faudrait vraiment du gros parasite pour faire descendre l´entrée en dessous du Vil ! non?donc un appui de moins de 10ms ... perso je considère pas que ce soit un appui ça, c'est un parasite,
(d´ailleurs dans mon messge #26 je ne le fait pas, je controle l´état du BP apres un certain temps apres l´interruption!)
Ce que je pense c´est qu´il vaut mieux que tu finisses tes taches (gestion LCD et recuperation des valeurs du CAN) avant de faire autre chose car sinon tu va faire une interruption pendant l´affichage par exemple, traiter ton interrupt puis venir terminer ton affichage (et ca n´aura surement pas pris en compte tes nouveaux parametres vu qu´il avit déjà commencé donc ils seront pris en compte au prochain rafraichissement du LCD)...Oui exactement, changer la valeur de paramètre, d'image à l'écran,..et une fonction arret...et là je pourrai utiliser les interruptions..OUI ou NON?
Tu comprends mon idée? (je ne sais pas, peut-être que ca marcherait tres bien, mais à mon avis ca ne changerait pas la vitesse (surtout pour un oeil humain))
C`est pour quel genre d´utilisation?(perso/industrielle)
Toujours à fond mes CPU (et pour l´instant toujours 16MHz max) et si je me mets aux PIC j´aurais Delay_ms()Jusqu'a que tu change la freq de ton CPU ou que tu change de CPU ...
Bon ca fait 20 min que je parle tout seul
Et a cause de vous (mais surtout de moi) j´ai encore rien foutu ce matin!!!
Faut dire que je prefere aider des gens en prog plutot que faire ces p***** de dessins techniques!!!
Vivement le boulot que ca soit moi qui programme...