Advertisement
RuiViana

Time_PWM

Aug 13th, 2016
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1.  
  2. #define pwmPin 6 // Port PWM
  3. #define Sensor 2 // Port para sentir a mudanca
  4. unsigned long tempoI = 0; // Tempo inicial do Pulso
  5. unsigned long tempoF = 0; // Tempo final do Pulso
  6. byte Flag = 0; // Flag para controle do status do pulso
  7. byte Step = 250; // Valor de Duty
  8. //----------------------------------
  9. void setup()
  10. {
  11. Serial.begin(9600); // Inicialisa a serial
  12. pinMode(pwmPin, OUTPUT); // Define pino de PWM como saída
  13. pinMode(Sensor, INPUT); // Define port
  14. attachInterrupt(0, Count, RISING); // Inicia interrupt para subida de pulso
  15. }
  16. //----------------------------------
  17. void loop()
  18. {
  19. if (Flag == 0 ) // Se pulso é LOW
  20. {
  21. Serial.print("uSeg ");
  22. Serial.println(tempoF); // Imprime resultdo
  23. }
  24. analogWrite(pwmPin, Step); // Define valor de Duty Cycle
  25. }
  26. //----------------------------------
  27. void Count()
  28. {
  29. if (Flag == 0 ) // Se pulso e LOW
  30. {
  31. tempoI = micros(); // Salva o tempo inicial
  32. detachInterrupt(0); // Desabilita interrupt
  33. attachInterrupt(0, Count, FALLING); // Muda interrupt para queda de pulso
  34. Flag = 1; // Informa que pulso subiu
  35. return; // Sai da função
  36. }
  37. if (Flag == 1 ) // Se pulso e HIGH
  38. {
  39. tempoF = micros() - tempoI ; // Calcula o tempo dinal
  40. detachInterrupt(0); // Desabilita interrupt
  41. attachInterrupt(0, Count, RISING); // Muda interrupt para subida de pulso
  42. Flag = 0; // Informa que pulso caiu
  43. return; // Sai da função
  44. }
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement