RuiViana

pulse_Teste.ino

Jul 3rd, 2020
2,699
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. #include "driver/pcnt.h"                                    // Biblioteca de pulse count
  3.  
  4. #define PCNT_TEST_UNIT      PCNT_UNIT_0
  5. #define PCNT_H_LIM_VAL      1000
  6. #define PCNT_L_LIM_VAL     -1000
  7. #define PCNT_THRESH1_VAL    500
  8. #define PCNT_THRESH0_VAL   -500
  9. #define PCNT_INPUT_SIG_IO   23  // Pulse Input GPIO
  10.  
  11. int16_t contador = 0;                                     // Contador de pulsos
  12. bool flag = false;                                        // Flag indicativo de overflow de pcnt
  13. uint32_t valor1 = 0;
  14. uint32_t valor2 = 0;
  15. //----------------------------------------------------------------------------------
  16. void setup()
  17. {
  18.   Serial.begin(115200);                                   // Inicializa a serial
  19.   pcnt_init();                                            // Inicializa o pulse count
  20. }
  21. //----------------------------------------------------------------------------------
  22. void loop()
  23. {
  24.   if (flag == false)
  25.   {
  26.     pcnt_counter_clear(PCNT_TEST_UNIT);                     // Zera o contador PCNT
  27.     pcnt_get_counter_value(PCNT_TEST_UNIT, &contador);
  28.     valor1 = contador;
  29.     delayMicroseconds(1);
  30.     pcnt_get_counter_value(PCNT_TEST_UNIT, &contador);
  31.     valor2 = contador;
  32.     flag = true;
  33.   }
  34.   if (flag == true)
  35.   {
  36.     printf(" contador-1: %d", valor1);
  37.     printf(" contador-2: %d\n", valor2);
  38.    
  39.     flag = false;
  40.   }
  41. }
  42. //----------------------------------------------------------------------------------
  43. void pcnt_init(void)                                      // Rotina de inicializacao do pulse count
  44. {
  45.   pcnt_config_t pcnt_config = { };                        // Instancia pulse config
  46.   pcnt_config.pulse_gpio_num = PCNT_INPUT_SIG_IO;         // Port de entrada dos pulsos
  47.   pcnt_config.pos_mode = PCNT_COUNT_INC;                  // Conta na subida do pulso
  48.   pcnt_unit_config(&pcnt_config);                         // Inicializa PCNT
  49. }
RAW Paste Data