2018年12月26日 星期三

DIY - ESP32:ESP32 頻率計數器 Frequency Counter 程式(五十九)

DIY - ESP32:ESP32 頻率計數器 Frequency Counter 程式(五十九):

ESP32 頻率計數器(Frequency Counter)的主要控制是放在程式中,頻率計數器程式是可以更改時基(Time Base),PCNT 是作波形發生的數量,使用 ESP32 IDF 的 PCNT 和 RMT API來實現。

ESP32 頻率計數器 Frequency Counter 製作
ESP32 頻率計數器 Frequency Counter IO 設定:
// Please connect GPIO26  and GPIO18
#define GPIO_SIGNAL_INPUT 26     // RMT Input = GPIO26
#define GPIO_RMT_GATE         5     
#define LEDC_OUTPUT_IO     18      // LEDC Output = GPIO 18

static void init_pcnt(uint8_t pulse_gpio, uint8_t ctrl_gpio, pcnt_unit_t unit, pcnt_channel_t channel, uint16_t filter_length)
{
    // set up counter
    pcnt_config_t pcnt_config = {
        .pulse_gpio_num = pulse_gpio,
        .ctrl_gpio_num = ctrl_gpio,
        .lctrl_mode = PCNT_MODE_DISABLE,
        .hctrl_mode = PCNT_MODE_KEEP,
        .pos_mode = PCNT_COUNT_INC, 
        .neg_mode = PCNT_COUNT_INC,
        .counter_h_lim = 0,
        .counter_l_lim = 0,
        .unit = unit,
        .channel = channel,
    };
}

ESP32 頻率計數器 Frequency Counter 主程式:
void app_main()
{
    frequency_count_configuration_t config;
    config.pcnt_gpio = GPIO_SIGNAL_INPUT;
    config.pcnt_unit = PCNT_UNIT;
    config.pcnt_channel = PCNT_CHANNEL;
    config.rmt_gpio = GPIO_RMT_GATE;
    config.rmt_channel = RMT_CHANNEL;
    config.rmt_clk_div = new_clk_div;
    config.rmt_max_blocks = 2;
    config.sampling_period_seconds = new_sample_period;
    config.sampling_window_seconds = new_window_duration;
    config.filter_length = new_filter_length;
    config.window_start_callback = &pcnt_window_callback;
    config.frequency_update_callback = &pcnt_freqcount_callback;

    // task takes ownership of allocated memory
    xTaskCreate(&frequency_count_task_function, "frequency_count_task", 4096, config, 5, NULL);
    }


操作系統:Windows 7 64-bit 版本
開發環境:AiThinker05 版本
原程碼: ESP32 ESP-IDF V3.0rc1
程式:DIY-ESP32-029-PCNT_05_FreqCount_Menu-20181214
 
ESP32 頻率計數器 Frequency Counter 運行中
ESP32 頻率計數器 Frequency Counter 電路製作顯示
ESP32 頻率計數器 Frequency Counter 電路製作的設定菜單
ESP32 頻率計數器 Frequency Counter 電路製作的 Frequency Counter 設定菜單
ESP32 頻率計數器 Frequency Counter 電路製作設定最高頻率的菜單
ESP32 頻率計數器 Frequency Counter 電路製作和遙控器
2018年 12月 26日 天氣報告
氣溫:19.3@ 20:40
相對濕度:百分之 90%
天氣:天色良好

沒有留言:

張貼留言