|
11 | 11 | #include "adapter_gpio.hpp" |
12 | 12 | #include <driver/gpio.h> |
13 | 13 | #include <driver/adc.h> |
| 14 | + |
14 | 15 | #if defined(SOC_DAC_SUPPORTED) && SOC_DAC_SUPPORTED |
| 16 | +#pragma message "DAC supported" |
| 17 | + |
| 18 | +#if __has_include(<driver/dac_common.h>) |
15 | 19 | #include <driver/dac_common.h> |
| 20 | +#define USING_RMT_CHANNNE_T |
| 21 | +#endif |
| 22 | + |
| 23 | +#endif |
| 24 | + |
| 25 | +#if !defined(USING_RMT_CHANNNE_T) && defined(ARDUINO) |
| 26 | +#include <esp32-hal-dac.h> |
16 | 27 | #endif |
| 28 | + |
| 29 | +#if SOC_ADC_SUPPORTED |
| 30 | +#pragma message "ADC supported" |
| 31 | +#else |
| 32 | +#pragma message "ADC Not supported" |
| 33 | +#endif |
| 34 | + |
17 | 35 | #include <esp_timer.h> |
18 | 36 |
|
19 | 37 | namespace { |
@@ -244,10 +262,10 @@ constexpr int8_t gpio_to_adc_table[] = { |
244 | 262 | int8_t gpio_to_adc_channel(const int8_t pin) |
245 | 263 | { |
246 | 264 | if (pin < 0 || pin >= m5::stl::size(gpio_to_adc_table)) { |
247 | | - return static_cast<adc_channel_t>(-1); |
| 265 | + return -1; |
248 | 266 | } |
249 | 267 | auto v = gpio_to_adc_table[pin]; |
250 | | - return static_cast<adc_channel_t>(v < 10 ? v : v - 10); |
| 268 | + return (v < 10) ? v : v - 10; |
251 | 269 | } |
252 | 270 |
|
253 | 271 | #if 0 |
@@ -318,17 +336,19 @@ m5::hal::error::error_t AdapterGPIOBase::GPIOImpl::read_digital(const gpio_num_t |
318 | 336 |
|
319 | 337 | m5::hal::error::error_t AdapterGPIOBase::GPIOImpl::write_analog(const gpio_num_t pin, const uint16_t value) |
320 | 338 | { |
321 | | -#if defined(SOC_DAC_SUPPORTED) && SOC_DAC_SUPPORTED |
322 | 339 | if (pin != 25 && pin != 26) { |
323 | 340 | // DAC output can 25 or 26 |
324 | 341 | return m5::hal::error::error_t::INVALID_ARGUMENT; |
325 | 342 | } |
| 343 | +#if defined(USING_RMT_CHANNNE_T) |
326 | 344 | dac_channel_t ch = (pin == 25) ? DAC_CHANNEL_1 : DAC_CHANNEL_2; |
327 | 345 | dac_output_enable(ch); |
328 | 346 | dac_output_voltage(ch, static_cast<uint8_t>(value & 0xFF)); // 0〜255 |
329 | 347 | return m5::hal::error::error_t::OK; |
330 | 348 | #else |
331 | | - return m5::hal::error::error_t::NOT_IMPLEMENTED; |
| 349 | + analogWrite(pin, value & 0xFF); |
| 350 | + ; |
| 351 | + // return m5::hal::error::error_t::NOT_IMPLEMENTED; |
332 | 352 | #endif |
333 | 353 | } |
334 | 354 |
|
|
0 commit comments