Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2148 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Programmation en C, besoin d'aide

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Programmation en C, besoin d'aide

n°2055278
GisBouL
Posté le 09-02-2011 à 10:15:49  profilanswer
 

Code :
  1. #include <stdlib.h> 
  2. #include <delay.h>
  3. interrupt [1] void BP1(void)
  4. {
  5. }
  6. interrupt [2] void BP2(void)
  7. {
  8. //Arrêt chrono1 et chrono2
  9. }
  10. interrupt [3] void BP3(void)
  11. {
  12. //Arrêt chrono1 et chrono2
  13. }
  14. interrupt [4] void BP4(void)
  15. {
  16. //Arrêt chrono1 et chrono2
  17. }
  18. interrupt [5] void BP0(void)
  19. {
  20. //Déclenchement chrono2   
  21. }
  22. interrupt [6] void BP0(void)
  23. {
  24. //RAZ du programme   
  25. }
  26. int main (void)
  27. int nbr_alea=0;
  28. DDRD=0x00;   //port D en entrée (BP)
  29. DDRB=0xFF;   //port B en sortie (LED)
  30. #asm("sei" )     //Valide toutes les interruptions   
  31. GIMSK = 0b11000000; //valide les broches d'interruption INT0 et INT1
  32. MCUCR = 0b00001111; //détermination du type d'évènement sur les broches INT0 et INT1   
  33. //Déclaration de variables pour le chronomètre
  34. int _2ms=0;   //Compteur pour 50 passages à 2ms = 0.1sec
  35. int MIL_SECONDS=0;            //HTR virtuelle : diziaime de seconde
  36. char SECONDS=0;            //HTR virtuelle : Seconde
  37. char MIN=0;
  38. while(1)
  39. {                   
  40. nbr_alea = rand()%4;
  41. if(nbr_alea==0)
  42.         {
  43.         PORTB=~0b00000001;   // "~" pour passer de logique négative a logique positive ( "0"=led allumée enn théorie)
  44.         //Déclenchement chrono1
  45.         if (TIMSK==0b10000000)  TIMSK=0b00000000;        //Interruption comparaison réussie timer2 validée
  46.         else TIMSK=0b10000000;
  47.         delay_ms(500);
  48.         PORTB=~0b00000000;
  49.         }
  50. else if(nbr_alea==1)
  51.         {
  52.         PORTB=~0b00000010;
  53.         //Déclenchement chrono1
  54.         if (TIMSK==0b10000000)  TIMSK=0b00000000;        //Interruption comparaison réussie timer2 validée
  55.         else TIMSK=0b10000000;
  56.         delay_ms(500);
  57.         PORTB=~0b00000000;
  58.         }
  59. else if(nbr_alea==2)
  60.         {
  61.         PORTB=~0b00000100;
  62.         //Déclenchement chrono1
  63.         if (TIMSK==0b10000000)  TIMSK=0b00000000;        //Interruption comparaison réussie timer2 validée
  64.         else TIMSK=0b10000000;
  65.         delay_ms(500);   
  66.         PORTB=~0b00000000;
  67.         }
  68. else if(nbr_alea==3)
  69.         {
  70.         PORTB=~0b00001000;
  71.         //Déclenchement chrono1
  72.         if (TIMSK==0b10000000)  TIMSK=0b00000000;        //Interruption comparaison réussie timer2 validée
  73.         else TIMSK=0b10000000;
  74.         delay_ms(500);
  75.         PORTB=~0b00000000;
  76.         } 
  77. }


 
Bonjour,
J'ai besoin d'aide pour programmer deux chronometre d'un processeur via les timer...
L'un ce déclencherai lors de l'allumage d'une des 4 led allumer aléatoirement, et l'autre lors d'un relachement d'un bouton poussoir (a définir).
 
Je vous ai mis la première partie qui consiste a allumer aléatoirement les 4 led que l'on utilisera.
 
Merci d'avance

mood
Publicité
Posté le 09-02-2011 à 10:15:49  profilanswer
 

n°2055281
esox_ch
Posté le 09-02-2011 à 10:21:52  profilanswer
 

Et le problème étant (mis à part que tes 4 blocks " nbr_alea" sont identiques) ?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2055291
GisBouL
Posté le 09-02-2011 à 10:44:18  profilanswer
 

esox_ch a écrit :

Et le problème étant (mis à part que tes 4 blocks " nbr_alea" sont identiques) ?


 
Je vais expliquer tout mon problème plus précisement...
Donc je dois créer un programme qui doit enregistrer la réactivité de quelqu'un par l'allumage de led. C'est à dire que l'allumage des led doit être aléatoire, qui déclenche un chronometre, un deuxième chronometre sera déclencher lorsque la personne levera sa main d'un bouton poussoir1 et les deux chrono seront arrété lorsque la personne tape sur un bouton poussoir2 a proximiter de la bonne led...
Pour qu'une nouvelle led soit allumer (aléatoirement) la personne remet sa main sur le bouton poussoir1.
 
Mon problème est donc de déclencher les deux chronometre... Je ne vois pas par ou partir. Mettre tous dans chaque bloc et en ressortir a la fin? mais je ne vois pas comment? Ou faire l'aléatoire d'un coter et les chrono apart?
 
En fait je suis perdu...

n°2055321
404 Not Fo​und
Posté le 09-02-2011 à 12:01:54  profilanswer
 

Tu peux utiliser un timer qui tourne en permanence et incrémente une variable comme base de temps pour mesurer les évènements, et un deuxième timer pour l'aléatoire.  
 
( AVR spotted [:huit] )
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Programmation en C, besoin d'aide

 

Sujets relatifs
Problème C++ : Syntax error : missing ';'[C++] Fenêtre SDL ne s'affiche pas [RESOLU]
[C++/SMFL] Recrutement Jeu Action/ Infiltration 2D[RESOLU] Petite aide rapide sur SQL
[C++] Logger en C/C++utiliser le langage C dans des fichiers cpp
Besoin d'aide concernant résultat suivi de colis 
Plus de sujets relatifs à : Programmation en C, besoin d'aide


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR