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_CHANNEL PCNT_CHANNEL_0
- #define PCNT_INPUT_SIG_IO 23
- int16_t contador = 0; // Contador de pulsos
- bool flag = false; // Flag indicativo de overflow de pcnt
- uint32_t valor1 = 0;
- uint32_t valor2 = 0;
- uint32_t valor3 = 0;
- //----------------------------------------------------------------------------------
- void setup()
- {
- Serial.begin(115200); // Inicializa a serial
- pcnt_config_t pcnt_config = { }; // Instancia pulse config
- pcnt_config.pulse_gpio_num = PCNT_INPUT_SIG_IO; // Port de entrada dos pulsos
- pcnt_config.channel = PCNT_CHANNEL;
- pcnt_config.pos_mode = PCNT_COUNT_INC; // Conta na subida do pulso
- pcnt_unit_config(&pcnt_config); // Inicializa PCNT
- }
- //----------------------------------------------------------------------------------
- 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;
- pcnt_get_counter_value(PCNT_TEST_UNIT, &contador);
- valor2 = contador;
- // valor2 = contador; // No minimo 12,5 ns por instrucao
- // valor2 = contador;
- // valor2 = contador;
- // valor2 = contador;
- // valor2 = contador;
- // valor2 = contador;
- // valor2 = contador;
- // valor2 = contador;
- // valor2 = contador;
- // valor2 = contador;
- // valor2 = contador;
- // valor2 = contador;
- // valor2 = contador;
- // valor2 = contador;
- // valor2 = contador;
- // valor2 = contador;
- // valor2 = contador;
- // valor2 = contador;
- // valor2 = contador;
- // valor2 = contador; // No minimo total 12,5 * 20 = 250 ns = 10 puslsos em 40 MHz
- pcnt_get_counter_value(PCNT_TEST_UNIT, &contador);
- valor3 = contador ; // Com as 20 instrucoes aqui deveria ser 10 a mais do que sem elas
- flag = true;
- delay(100);
- }
- if (flag == true)
- {
- printf(" contador-1: %d", valor1);
- printf(" contador-2: %d", valor2);
- printf(" contador-3: %d\n", valor3);
- flag = false;
- pcnt_counter_clear(PCNT_TEST_UNIT);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement