脉冲计数器 (PCNT)
ESP8266 可以实现脉冲计数吗?
ESP8266 未包含硬件脉冲计数模块,所以仅支持通过 GPIO 上升沿或下降沿中断实现脉冲计数。
ESP8266 芯片中 Wi-Fi 开启后由于优先级太高可能会导致 GPIO 采样出现真空,中断采集的计数丢数据。
综上,在计数要求较为严格的场景推荐使用 ESP32 以及后续推出的芯片。
ESP32-S3 可以通过 PCNT 实现频率为 200 k 的低电平脉冲计数吗?
可以。
PCNT 可以在计数变化的时候产生中断吗?
PCNT 只会在达到设置的阈值时才会产生中断,其他计数值只能通过轮询的方式读取。
ESP32-C3 不支持 PCNT 我该怎么办?
可以使用软件 knob 进行 PCNT 的计数 。注意,该软件只能用于计数正交解码相关应用场景,并且计数频率不能太高。
PCNT 是否可以支持多路同时工作?signal 与 control 是否一定要成对输入?
PCNT 支持多路同时工作。signal 与 control 不一定要成对使用,如果不想使用 control,可以将其设置为 -1,计数模式使用 pcnt_channel_set_edge_action 进行配置。
是否可以使用 ESP32 PCNT 来计算两个脉冲之间的时间?
不可以。PCNT 只能对脉冲进行计数,不支持计算两个脉冲之间的时间。可以使用 RMT 来计算两个脉冲之间的时间。