Advertisement
Guest User

Untitled

a guest
May 30th, 2017
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.42 KB | None | 0 0
  1. #include "mbed.h"
  2. //--------- Tx Rx
  3. Serial uart(p9, p10,10000); // Créez un port série, connecté aux broches d'émission et de réception 9 et 10 à 9600bauds
  4. InterruptIn event(p8); // InterruptIn : Interruption (broche PinName) : Créez un interrupteur connecté à la broche 8 c'est-à-dire la broche 8.
  5. void Spint_compt(); //
  6. unsigned int comptage,i,val,imod,duree=1,temps; //
  7. unsigned int n=0,nlu=0,nd; //
  8. #define max 15000 //
  9. unsigned short Tab[15000]; //
  10.  
  11. int main() //Programme Principal
  12. {
  13. event.rise(&Spint_compt); // Permet de joindre une fonction membre pour appeler lorsqu'un front montant survient sur l'entrée.
  14. while(1) // Boucle Tant que (toujours faire)
  15. {
  16. comptage=0; //
  17. wait(duree); // 1s
  18. //----------STOCKAGE
  19. if(comptage!=0 && Tab[n]==0) //
  20. {
  21. Tab[n]=comptage; //
  22. n= (n+1)%max; //
  23. }
  24.  
  25. //*******************************
  26. //---DEMANDE LABVIEW
  27. //--Réception Durée et nbre de mesures
  28. if(uart.readable()) //permet d'exécuter une série d'instructions et déterminez s'il existe un caractére disponible à lire.
  29. {
  30. //----Attendre de tout recevoir
  31. wait(0.04); // Tempo de 0.04s
  32. //convertir DUREE
  33. temps=duree;
  34. duree=uart.getc()&0x0F; //
  35. val=uart.getc(); //
  36. while(val!=0x0A) //
  37. {
  38. duree=duree*10+ (val&0x0F); //
  39. val=uart.getc(); //
  40. }
  41. //-- Init à 0 RAM
  42. if (duree!=temps) //
  43. {
  44. for(i=0;i<max;i++) Tab[i]=0; //
  45. n=0;nlu=0; //
  46. }
  47. //convertir Nbre mesure
  48. val=(uart.getc())&0x0F; //
  49. while(uart.readable()) //
  50. {
  51. val=val*10; //
  52. val=val+ ((uart.getc())&0x0F); //
  53. }
  54. //Envoyer les mesures
  55. nd=nlu; // la valeur du pointeur nd prend la valeur du pointeur nlu
  56. for(i=nd;i<(nd+val);i++) //
  57. {
  58. imod= i%15000; // lorsque imod vient à 15000 cela repasse à 0
  59. uart.printf("%d\n",Tab[imod]); //
  60. if(Tab[imod]!=0) //
  61. nlu=(nlu+1)%15000; // pointeur de lecture nlu incrémenter à n+1 modulo 15000
  62.  
  63. Tab[imod]=0; // Remplace la valeur lue par 0
  64. wait(0.001); //Tempo de 0.001s
  65. }
  66. }
  67. }
  68. }
  69.  
  70. void Spint_compt() // Permet de définir le format de transmission utilisé par le port série.
  71. {
  72. comptage++; //Incrémenter
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement