Skip to content

Commit 16c9d26

Browse files
FozzTexxdillera
authored andcommitted
Revert "Use driver/gptimer.h"
This reverts commit a017eba.
1 parent 1b3f533 commit 16c9d26

File tree

2 files changed

+44
-5
lines changed

2 files changed

+44
-5
lines changed

lib/hardware/fnHardwareTimer.cpp

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,18 +77,34 @@ void HardwareTimer::config()
7777
// uint32_t divider; /*!< Counter clock divider */
7878
// } timer_config_t;
7979

80+
#if defined(CONFIG_IDF_TARGET_ESP32S3)
81+
8082
fn_config.direction = GPTIMER_COUNT_UP,
8183
fn_config.clk_src = GPTIMER_CLK_SRC_APB;
82-
#if defined(CONFIG_IDF_TARGET_ESP32)
83-
fn_config.resolution_hz = APB_CLK_FREQ / TIMER_DIVIDER;
84-
#else
8584
fn_config.resolution_hz = 10000000;
86-
#endif
8785

8886
gptimer_new_timer(&fn_config, &gptimer);
8987
gptimer_enable(gptimer);
9088
gptimer_start(gptimer);
9189

90+
#else
91+
92+
fn_config.alarm_en = TIMER_ALARM_DIS;
93+
fn_config.counter_en = TIMER_PAUSE;
94+
fn_config.intr_type = TIMER_INTR_LEVEL;
95+
fn_config.counter_dir = TIMER_COUNT_UP;
96+
fn_config.auto_reload = TIMER_AUTORELOAD_DIS;
97+
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)
98+
fn_config.clk_src = TIMER_SRC_CLK_APB;
99+
#endif
100+
fn_config.divider = TIMER_DIVIDER; // default clock source is APB
101+
102+
timer_init(TIMER_GROUP_1, TIMER_1, &fn_config);
103+
timer_set_counter_value(TIMER_GROUP_1, TIMER_1, 0);
104+
timer_start(TIMER_GROUP_1, TIMER_1);
105+
106+
#endif
107+
92108
}
93109

94110
HardwareTimer fnTimer; // global object for the hardware timer

lib/hardware/fnHardwareTimer.h

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
#include "esp_idf_version.h"
55
#include "sdkconfig.h"
66

7-
#if defined(CONFIG_IDF_TARGET_ESP32) || defined(CONFIG_IDF_TARGET_ESP32S3)
7+
#if defined(CONFIG_IDF_TARGET_ESP32)
8+
#include "driver/timer.h"
9+
#elif defined(CONFIG_IDF_TARGET_ESP32S3)
810
#include "driver/gptimer.h"
911
#else
1012
#error "neither esp32 or s3"
@@ -40,12 +42,19 @@ class HardwareTimer
4042
} fn_timer;
4143

4244

45+
#if defined(CONFIG_IDF_TARGET_ESP32S3)
4346
gptimer_handle_t gptimer;
4447
gptimer_config_t fn_config;
4548
//gptimer_alarm_config_t alarm_config;
49+
#else
50+
timer_config_t fn_config;
51+
#endif
4652

4753
public:
4854
void config();
55+
56+
#if defined(CONFIG_IDF_TARGET_ESP32S3)
57+
4958
void reset() { gptimer_set_raw_count(gptimer, 0); };
5059
void latch() {};
5160
void read() {
@@ -54,6 +63,20 @@ gptimer_config_t fn_config;
5463
fn_timer.t0 = count & 0xFFFFFFFF;
5564
};
5665

66+
#else
67+
68+
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)
69+
void reset() { TIMERG1.hw_timer[TIMER_1].loadlo.val = 0; TIMERG1.hw_timer[TIMER_1].load.val = 0; };
70+
void latch() { TIMERG1.hw_timer[TIMER_1].update.val = 0; };
71+
void read() { fn_timer.t0 = TIMERG1.hw_timer[TIMER_1].lo.val; };
72+
#else
73+
void reset() { TIMERG1.hw_timer[TIMER_1].load_low = 0; TIMERG1.hw_timer[TIMER_1].reload = 0; };
74+
void latch() { TIMERG1.hw_timer[TIMER_1].update = 0; };
75+
void read() { fn_timer.t0 = TIMERG1.hw_timer[TIMER_1].cnt_low; };
76+
#endif
77+
78+
#endif
79+
5780
bool timeout() { return (fn_timer.t0 > fn_timer.tn); };
5881
void wait() { do{latch(); read();} while (!timeout()); };
5982
void alarm_set(int s) { fn_timer.tn = fn_timer.t0 + s * TIMER_100NS_FACTOR - TIMER_ADJUST; };

0 commit comments

Comments
 (0)