From cdd15bafd8fb414b4abddfc54ab56a7b03063aa5 Mon Sep 17 00:00:00 2001 From: junkfix <165699921+junkfix@users.noreply.github.com> Date: Thu, 4 Jul 2024 22:06:18 +0100 Subject: [PATCH 1/3] Update OneWireESP32.cpp --- OneWireESP32.cpp | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/OneWireESP32.cpp b/OneWireESP32.cpp index 624bb61..ff5513b 100644 --- a/OneWireESP32.cpp +++ b/OneWireESP32.cpp @@ -21,7 +21,6 @@ #define OW_SLOT_RECOVERY 5 #define OW_TIMEOUT 50 -const size_t owbuflen = 64 * sizeof(rmt_symbol_word_t); static rmt_symbol_word_t ow_bit0 = { .duration0 = OW_SLOT_START + OW_SLOT_BIT, @@ -74,7 +73,7 @@ OneWire32::OneWire32(uint8_t pin){ .gpio_num = owpin, .clk_src = RMT_CLK_SRC_APB, .resolution_hz = 1000000, - .mem_block_symbols = 64 + .mem_block_symbols = MAX_BLOCKS }; if(rmt_new_rx_channel(&rxconf, &(owrx)) != ESP_OK) { @@ -85,7 +84,7 @@ OneWire32::OneWire32(uint8_t pin){ .gpio_num = owpin, .clk_src = RMT_CLK_SRC_APB, .resolution_hz = 1000000, - .mem_block_symbols = 64, + .mem_block_symbols = MAX_BLOCKS, .trans_queue_depth = 4, .flags = { .io_loop_back = 1, @@ -93,7 +92,7 @@ OneWire32::OneWire32(uint8_t pin){ } }; - if(rmt_new_tx_channel(&txconf, &(owtx)) != ESP_OK) { + if(rmt_new_tx_channel(&txconf, &owtx) != ESP_OK) { return; } @@ -102,11 +101,6 @@ OneWire32::OneWire32(uint8_t pin){ return; } - owbuf = (rmt_symbol_word_t *)malloc(owbuflen); - if(owbuf == NULL) { - return; - } - rmt_rx_event_callbacks_t rx_callbacks = { .on_recv_done = owrxdone }; @@ -154,9 +148,6 @@ OneWire32::~OneWire32(){ if(owqueue) { vQueueDelete(owqueue); } - if(owbuf != NULL) { - free(owbuf); - } drv = 0; } @@ -178,7 +169,7 @@ bool OneWire32::reset(){ }; rmt_rx_done_event_data_t evt; - rmt_receive(owrx, owbuf, owbuflen, &owrxconf); + rmt_receive(owrx, owbuf, sizeof(owbuf), &owrxconf); rmt_transmit(owtx, owcenc, &symbol_reset, sizeof(rmt_symbol_word_t), &owtxconf); bool found = false; if(xQueueReceive(owqueue, &evt, pdMS_TO_TICKS(OW_TIMEOUT)) == pdTRUE) { @@ -209,7 +200,7 @@ bool OneWire32::reset(){ bool OneWire32::read(uint8_t &data, uint8_t len){ rmt_rx_done_event_data_t evt; - rmt_receive(owrx, owbuf, owbuflen, &owrxconf); + rmt_receive(owrx, owbuf, sizeof(owbuf), &owrxconf); if(!write((len > 1)? 0xff : 1, len) || xQueueReceive(owqueue, &evt, pdMS_TO_TICKS(OW_TIMEOUT)) != pdTRUE) { return false; @@ -230,7 +221,6 @@ bool OneWire32::read(uint8_t &data, uint8_t len){ bool OneWire32::write(const uint8_t data, uint8_t len){ - size_t ssz = sizeof(rmt_symbol_word_t); if(len < 8){ const rmt_symbol_word_t *sb; @@ -239,7 +229,7 @@ bool OneWire32::write(const uint8_t data, uint8_t len){ if((data & (1 << i)) != 0) { sb = &ow_bit1; } - if(rmt_transmit(owtx, owcenc, sb, ssz, &owtxconf) != ESP_OK){ + if(rmt_transmit(owtx, owcenc, sb, sizeof(rmt_symbol_word_t), &owtxconf) != ESP_OK){ return false; } } From 1be1dd803cba6ba326a79547a5ac975df97044f0 Mon Sep 17 00:00:00 2001 From: junkfix <165699921+junkfix@users.noreply.github.com> Date: Thu, 4 Jul 2024 22:07:08 +0100 Subject: [PATCH 2/3] Update OneWireESP32.h --- OneWireESP32.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/OneWireESP32.h b/OneWireESP32.h index 7c76c07..91cc46d 100644 --- a/OneWireESP32.h +++ b/OneWireESP32.h @@ -10,6 +10,13 @@ #include "freertos/queue.h" #include "driver/rmt_tx.h" #include "driver/rmt_rx.h" +#include "sdkconfig.h" + +#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2 +#define MAX_BLOCKS 64 +#else +#define MAX_BLOCKS 48 +#endif IRAM_ATTR bool owrxdone(rmt_channel_handle_t ch, const rmt_rx_done_event_data_t *edata, void *udata); @@ -20,7 +27,7 @@ class OneWire32 { rmt_channel_handle_t owrx; rmt_encoder_handle_t owcenc; rmt_encoder_handle_t owbenc; - rmt_symbol_word_t *owbuf; + rmt_symbol_word_t owbuf[MAX_BLOCKS]; QueueHandle_t owqueue; uint8_t drv = 0; public: From 9036888edec890e8751d034542beba590aa7dbfc Mon Sep 17 00:00:00 2001 From: junkfix <165699921+junkfix@users.noreply.github.com> Date: Thu, 4 Jul 2024 22:07:37 +0100 Subject: [PATCH 3/3] Update library.properties --- library.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library.properties b/library.properties index 0b3bc4a..6906391 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=esp32-ds18b20 -version=2.0.0 +version=2.0.1 author=junkfix maintainer=junkfix sentence=Minimal, non-blocking, DS18B20 sensor library for ESP32 using RMT pheripheral, supports multiple sensors, lightweight, no dependencies, will need Arduino esp32 3.x based on IDF 5.X