Compter un nombre d'évènement à la suite en C

Compter un nombre d'évènement à la suite en C - C - Programmation

Marsh Posté le 20-04-2005 à 10:19:18    

Bonjour!
Alors c'est certainement assez simple, mais c'est pour placer dans une fonction d'interruption, il faut donc que ce soit le plus rapide possible.
JE m'explique :
il faut que je détecte combien de fois à la suite une valeur récupérée sur interruption est ok, et si cette valeur n'est pas bonne une seule, c'est qu'il y a un problème, on recommence...
C''est pas très clair... J'espère que quelqu'un pourra m'aider svp :)

Reply

Marsh Posté le 20-04-2005 à 10:19:18   

Reply

Marsh Posté le 20-04-2005 à 12:16:33    

aurelien2723 a écrit :

Alors c'est certainement assez simple, mais c'est pour placer dans une fonction d'interruption, il faut donc que ce soit le plus rapide possible.
JE m'explique :
il faut que je détecte combien de fois à la suite une valeur récupérée sur interruption est ok, et si cette valeur n'est pas bonne une seule, c'est qu'il y a un problème, on recommence...
C''est pas très clair... J'espère que quelqu'un pourra m'aider svp :)


Dans l'interruption tu mets le test et le compteur qui va bien. Je ne vois pas trop où est le problème...
Qu'est-ce qui ne fonctionne pas ?


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 20-04-2005 à 13:01:47    

Il faudrait que tu nous explique un peu plus précisément ton problème, sans quoi nous ne pourrons pas beaucoup t'aider...  
 
-----  
Esil pawa - http://docjeepe.free.fr/location/location.htm

Reply

Marsh Posté le 20-04-2005 à 13:39:47    

Ok... dsl
J'explique le problème.
Je programme un microcontroleur. Je lui donc deux PWM venant d'un recepteur d'une télécommande radio. JE lis le pwm sans problème.
Le truc, s'est que lorsque la télécommande est coupé, le PWM prend des valeures au hasard, il fait n'importe quoi.
En fait, je dois détecter que la télécommande est allumé, donc, que le PWM est bien entre deux valeures.  
Le problème est donc que je peux avoir des valeurs bonnes alors que la télécomande est éteinte. Après plusieurs réflections, l'idée est de détecter que n valeures de PWM à la suite sont bonnes. Il me faut donc juste les test qui permettent de calculer ca... svp :)

Reply

Marsh Posté le 20-04-2005 à 16:21:26    

J'ai pas très bien compris, mais tu parles de valeur bonne et pas bonne, dabord connais tu "les valeurs des valeurs" qui sont bonne ?
Si oui bah tout bete il te suffit de vérifier si les valeurs du PWM sont bien dans l'intervalle genre

Code :
  1. if((n<x)&&(n>k)){
  2. ...
  3. }else{
  4. ...}


 
Nan ?? :??:

Reply

Marsh Posté le 20-04-2005 à 17:42:54    

aurelien2723 a écrit :

Ok... dsl
J'explique le problème.
Je programme un microcontroleur. Je lui donc deux PWM venant d'un recepteur d'une télécommande radio. JE lis le pwm sans problème.
Le truc, s'est que lorsque la télécommande est coupé, le PWM prend des valeures au hasard, il fait n'importe quoi.
En fait, je dois détecter que la télécommande est allumé, donc, que le PWM est bien entre deux valeures.  
Le problème est donc que je peux avoir des valeurs bonnes alors que la télécomande est éteinte. Après plusieurs réflections, l'idée est de détecter que n valeures de PWM à la suite sont bonnes. Il me faut donc juste les test qui permettent de calculer ca... svp :)


C'est un bête algorithme qui demande 10 minutes de secouage de neurone...


#define N 3
 
int first = 1;
 
while (1)
{
   int mem;
   int count;
   int val = get_val();
 
   if (first)
   {
      mem = val;
      count = N;  
      first = 0;
   }
   else
   {
      if (mem == val)
      {
         if (count > 0)
         {
            count--;
            if (count == 0)
            {
                printf ("valeur acquise = %d\n", mem);
            }
      }
      else
      {
         /* rearmer l'acquisition */
         mem = val;
         count = N;  
      }
   }
}


Message édité par Emmanuel Delahaye le 20-04-2005 à 17:43:19

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 20-04-2005 à 19:12:53    

aurelien2723 a écrit :

Ok... dsl
J'explique le problème.
Je programme un microcontroleur. Je lui donc deux PWM venant d'un recepteur d'une télécommande radio. JE lis le pwm sans problème.
Le truc, s'est que lorsque la télécommande est coupé, le PWM prend des valeures au hasard, il fait n'importe quoi.
En fait, je dois détecter que la télécommande est allumé, donc, que le PWM est bien entre deux valeures.  
Le problème est donc que je peux avoir des valeurs bonnes alors que la télécomande est éteinte. Après plusieurs réflections, l'idée est de détecter que n valeures de PWM à la suite sont bonnes. Il me faut donc juste les test qui permettent de calculer ca... svp :)


 
1) Tu reçois "n" valeurs
2) Tu considères qu'elles sont toutes true
3) Tu boucles sur chaque valeur
4) Si valeur mauvaise (n'appartient pas à la plage ) => false + sortie de boucle
5) en fin de boucle t'as "true => tout bon" ou "false => une mauvaise valeur trouvée (donc peut-être plusieurs) donc télécommande éteinte"


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 22-04-2005 à 09:25:24    

salut!:)
Merci pour vos réponses.
C'est cool, ca marche niquel ;)
@+

Reply

Marsh Posté le 22-04-2005 à 17:59:11    

aurelien2723 a écrit :

salut!:)
Merci pour vos réponses.
C'est cool, ca marche niquel ;)
@+


 
C'est un algo tout simple pour vérifier que tous les éléments d'un ensemble sont bons => tu considères d'office qu'ils sont tous bons et t'en cherches un mauvais... ;)


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed