Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "driver/pcnt.h" // Biblioteca de pulse count
- #define PCNT_TEST_UNIT PCNT_UNIT_0
- #define PCNT_H_LIM_VAL 1000
- #define PCNT_L_LIM_VAL -1000
- #define PCNT_THRESH1_VAL 500
- #define PCNT_THRESH0_VAL -500
- #define PCNT_INPUT_SIG_IO 23 // Pulse Input GPIO
- int16_t contador = 0; // Contador de pulsos
- bool flag = false; // Flag indicativo de overflow de pcnt
- uint32_t valor1 = 0;
- uint32_t valor2 = 0;
- //----------------------------------------------------------------------------------
- void setup()
- {
- Serial.begin(115200); // Inicializa a serial
- pcnt_init(); // Inicializa o pulse count
- }
- //----------------------------------------------------------------------------------
- void loop()
- {
- if (flag == false)
- {
- pcnt_counter_clear(PCNT_TEST_UNIT); // Zera o contador PCNT
- pcnt_get_counter_value(PCNT_TEST_UNIT, &contador);
- valor1 = contador;
- delayMicroseconds(1);
- pcnt_get_counter_value(PCNT_TEST_UNIT, &contador);
- valor2 = contador;
- flag = true;
- }
- if (flag == true)
- {
- printf(" contador-1: %d", valor1);
- printf(" contador-2: %d\n", valor2);
- flag = false;
- }
- }
- //----------------------------------------------------------------------------------
- void pcnt_init(void) // Rotina de inicializacao do pulse count
- {
- pcnt_config_t pcnt_config = { }; // Instancia pulse config
- pcnt_config.pulse_gpio_num = PCNT_INPUT_SIG_IO; // Port de entrada dos pulsos
- pcnt_config.pos_mode = PCNT_COUNT_INC; // Conta na subida do pulso
- pcnt_unit_config(&pcnt_config); // Inicializa PCNT
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement