|
@@ -9,22 +9,17 @@
|
|
#include <freertos/FreeRTOS.h>
|
|
#include <freertos/FreeRTOS.h>
|
|
#include <freertos/event_groups.h>
|
|
#include <freertos/event_groups.h>
|
|
|
|
|
|
|
|
+#include "configuration.h"
|
|
|
|
+
|
|
#define MODE LEDC_LOW_SPEED_MODE
|
|
#define MODE LEDC_LOW_SPEED_MODE
|
|
#define CHANNEL LEDC_CHANNEL_0
|
|
#define CHANNEL LEDC_CHANNEL_0
|
|
-#define DUTY 4095
|
|
|
|
-
|
|
|
|
-/* TODO: This code works reasonably well for low frequencies
|
|
|
|
- * but has nasty high-pitched interference for high frequencies.
|
|
|
|
- * It needs to be checked if this is caused by the code or the
|
|
|
|
- * circutry.
|
|
|
|
- */
|
|
|
|
|
|
|
|
void alarm_init(uint32_t frequency) {
|
|
void alarm_init(uint32_t frequency) {
|
|
ledc_timer_config_t ledc_timer = {
|
|
ledc_timer_config_t ledc_timer = {
|
|
.speed_mode = MODE,
|
|
.speed_mode = MODE,
|
|
.timer_num = LEDC_TIMER_0,
|
|
.timer_num = LEDC_TIMER_0,
|
|
- .duty_resolution = LEDC_TIMER_13_BIT,
|
|
|
|
- .freq_hz = frequency, // Set output frequency at 5 kHz
|
|
|
|
|
|
+ .duty_resolution = LEDC_TIMER_8_BIT,
|
|
|
|
+ .freq_hz = frequency,
|
|
.clk_cfg = LEDC_AUTO_CLK
|
|
.clk_cfg = LEDC_AUTO_CLK
|
|
};
|
|
};
|
|
ESP_ERROR_CHECK(ledc_timer_config(&ledc_timer));
|
|
ESP_ERROR_CHECK(ledc_timer_config(&ledc_timer));
|
|
@@ -34,7 +29,7 @@ void alarm_init(uint32_t frequency) {
|
|
.channel = CHANNEL,
|
|
.channel = CHANNEL,
|
|
.timer_sel = LEDC_TIMER_0,
|
|
.timer_sel = LEDC_TIMER_0,
|
|
.intr_type = LEDC_INTR_DISABLE,
|
|
.intr_type = LEDC_INTR_DISABLE,
|
|
- .gpio_num = 5,
|
|
|
|
|
|
+ .gpio_num = BUZZER_PIN,
|
|
.duty = 0,
|
|
.duty = 0,
|
|
.hpoint = 0
|
|
.hpoint = 0
|
|
};
|
|
};
|
|
@@ -42,7 +37,7 @@ void alarm_init(uint32_t frequency) {
|
|
}
|
|
}
|
|
|
|
|
|
void beep(uint32_t length_ms) {
|
|
void beep(uint32_t length_ms) {
|
|
- ESP_ERROR_CHECK(ledc_set_duty(MODE, CHANNEL, DUTY));
|
|
|
|
|
|
+ ESP_ERROR_CHECK(ledc_set_duty(MODE, CHANNEL, LEDC_DUTY));
|
|
ESP_ERROR_CHECK(ledc_update_duty(MODE, CHANNEL));
|
|
ESP_ERROR_CHECK(ledc_update_duty(MODE, CHANNEL));
|
|
vTaskDelay(length_ms / portTICK_PERIOD_MS);
|
|
vTaskDelay(length_ms / portTICK_PERIOD_MS);
|
|
ESP_ERROR_CHECK(ledc_set_duty(MODE, CHANNEL, 0));
|
|
ESP_ERROR_CHECK(ledc_set_duty(MODE, CHANNEL, 0));
|