除了 ESP32 PCNT(Pulse Counter / 脈衝計數器)API 函數模塊外,還提供了結構件(Structures)、巨集(Marco)、 泛型型別定義(Type Definitions)和枚舉(Enumerations)。
1. Structure:
1.1. struct pcnt_config_t:
Pulse Counter configuration for a single channel.
Public Members
|
Description
|
int
pulse_gpio_num
|
Pulse input GPIO number, if you want to use GPIO16, enter
pulse_gpio_num = 16, a negative value will be ignored
|
int
ctrl_gpio_num
|
Control signal input GPIO number, a negative value will be ignored
|
pcnt_ctrl_mode_t
lctrl_mode
|
PCNT low control mode
|
pcnt_ctrl_mode_t
hctrl_mode
|
PCNT high control mode
|
pcnt_count_mode_t
pos_mode
|
PCNT positive edge count mode
|
pcnt_count_mode_t
neg_mode
|
PCNT negative edge count mode
|
int16_t
counter_h_lim
|
Maximum counter value
|
int16_t
counter_l_lim
|
Minimum counter value
|
pcnt_unit_t unit
|
PCNT unit number
|
pcnt_channel_t
channel
|
the PCNT channel
|
範例:
pcnt_config_t
pcnt_config = {
.pulse_gpio_num = 4, //set gpio4 as pulse input gpio
.ctrl_gpio_num = 5, //set
gpio5 as control gpio
.channel = PCNT_CHANNEL_0, //use unit 0 channel 0
.lctrl_mode = PCNT_MODE_REVERSE, //when control signal is low, reverse
the primary counter mode(inc->dec/dec->inc)
.hctrl_mode = PCNT_MODE_KEEP, //when control signal is high, keep the
primary counter mode
.pos_mode = PCNT_COUNT_INC, //increment the counter
.neg_mode = PCNT_COUNT_DIS, //keep the counter value
.counter_h_lim = 10,
.counter_l_lim = -10,
};
2. Macros:
Macros
|
Description
|
PCNT_PIN_NOT_USED
|
When selected for a pin, this pin will not be used
|
3. Type Definitions:
Type Definitions
|
Description
|
typedef
intr_handle_t pcnt_isr_handle_t
|
4. Enumerations:
4.1. enum pcnt_ctrl_mode_t:
Selection of available modes that
determine the counter’s action depending on the state of the control signal’s
input GPIO.
Note:Configuration
covers two actions, one for high, and one for low level on the control input
Enumeration
|
Description
|
PCNT_MODE_KEEP = 0
|
Control mode: won’t change counter mode
|
PCNT_MODE_DISABLE = 1
|
Control mode: invert counter mode(increase -> decrease,
decrease -> increase)
|
PCNT_MODE_DISABLE = 2
|
Control mode: Inhibit counter(counter value will not
change in this condition)
|
PCNT_MODE_MAX
|
4.2. enum pcnt_count_mode_t:
Selection of available modes that
determine the counter’s action on the edge of the pulse signal’s input GPIO.
Note:Configuration
covers two actions, one for positive, and one for negative edge on the pulse
input
Enumeration
|
Description
|
PCNT_COUNT_DIS = 0
|
Counter mode: Inhibit counter(counter value will not
change in this condition)
|
PCNT_COUNT_INC = 1
|
Counter mode: Increase counter value
|
PCNT_COUNT_DEC = 2
|
Counter mode: Decrease counter value
|
PCNT_COUNT_MAX
|
4.3. enum pcnt_unit_t:
Selection of all available PCNT
units.
Enumeration
|
Description
|
PCNT_UNIT_0 = 0
|
PCNT unit 0
|
PCNT_UNIT_1 = 1
|
PCNT unit 1
|
PCNT_UNIT_2 = 2
|
PCNT unit 2
|
PCNT_UNIT_3 = 3
|
PCNT unit 3
|
PCNT_UNIT_4 = 4
|
PCNT unit 4
|
PCNT_UNIT_5 = 5
|
PCNT unit 5
|
PCNT_UNIT_6 = 6
|
PCNT unit 6
|
PCNT_UNIT_7 = 7
|
PCNT unit 7
|
PCNT_UNIT_MAX
|
4.4. enum pcnt_channel_t:
Selection of channels available
for a single PCNT unit.
Enumeration
|
Description
|
PCNT_CHANNEL_0 = 0x00
|
PCNT channel 0
|
PCNT_CHANNEL_1 = 0x01
|
PCNT channel 1
|
PCNT_CHANNEL_MAX
|
4.5. enum pcnt_evt_type_t:
Selection of counter’s events the
may trigger an interrupt.
Enumeration
|
Description
|
PCNT_EVT_L_LIM = 0
|
PCNT watch point event: Minimum counter value
|
PCNT_EVT_H_LIM = 1
|
PCNT watch point event: Maximum counter value
|
PCNT_EVT_THRES_0 = 2
|
PCNT watch point event: threshold0 value event
|
PCNT_EVT_THRES_1 = 3
|
PCNT watch point event: threshold1 value event
|
PCNT_EVT_ZERO = 4
|
PCNT watch point event: counter value zero event
|
PCNT_EVT_MAX
|
PCNT unit 5
|
相關網址:
※ DIY - ESP32:ESP32 PCNT 脈衝計數器電路(三十八)
※ DIY - ESP32:ESP32 PCNT 脈衝計數器程式(三十九)
※ DIY - ESP32:ESP32 PCNT API 函數模塊介紹(四十)
※ DIY - ESP32:ESP32 PCNT API 函數(四十一)
2018年 11月 30日 天氣報告
氣溫:22.1度 @ 22:00
相對濕度:百分之 64%
天氣:大致多雲