Skip to content

Commit ad6fb59

Browse files
committed
Fix stack corruption while transmitting packets on ESP32 board package versions 3.x.x
1 parent e896048 commit ad6fb59

2 files changed

Lines changed: 10 additions & 22 deletions

File tree

src/VanBusRx.cpp

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -601,11 +601,9 @@ extern hw_timer_t* txTimer;
601601
void IRAM_ATTR SetTxBitTimer()
602602
{
603603
#ifdef ARDUINO_ARCH_ESP32
604-
#if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 0)
605-
//timerStop(timer);
606-
#else // ESP_ARDUINO_VERSION < ESP_ARDUINO_VERSION_VAL(3, 0, 0)
604+
#if ESP_ARDUINO_VERSION < ESP_ARDUINO_VERSION_VAL(3, 0, 0)
607605
timerAlarmDisable(timer);
608-
#endif // ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 0)
606+
#endif // ESP_ARDUINO_VERSION < ESP_ARDUINO_VERSION_VAL(3, 0, 0)
609607
#else // ! ARDUINO_ARCH_ESP32
610608
timer1_disable();
611609
#endif // ARDUINO_ARCH_ESP32
@@ -617,10 +615,8 @@ void IRAM_ATTR SetTxBitTimer()
617615
#ifdef ARDUINO_ARCH_ESP32
618616

619617
#if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 0)
620-
timerDetachInterrupt(txTimer);
621-
timerAttachInterrupt(txTimer, VanBusRx.txTimerIsr);
622618
timerAlarm(txTimer, VanBusRx.txTimerTicks, true, 0);
623-
timerRestart(txTimer);
619+
timerStart(txTimer);
624620
#else // ESP_ARDUINO_VERSION < ESP_ARDUINO_VERSION_VAL(3, 0, 0)
625621
timerAlarmDisable(timer);
626622
timerDetachInterrupt(timer);
@@ -916,13 +912,9 @@ void IRAM_ATTR RxPinChangeIsr()
916912
{
917913
#ifdef ARDUINO_ARCH_ESP32
918914

919-
#if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 0)
920-
//if (timerRead(timer) > 0) timerStop(timer);
921-
//timerStop(timer);
922-
// if (timerRead(timer) < 40) timerStop(timer);
923-
#else // ESP_ARDUINO_VERSION < ESP_ARDUINO_VERSION_VAL(3, 0, 0)
915+
#if ESP_ARDUINO_VERSION < ESP_ARDUINO_VERSION_VAL(3, 0, 0)
924916
timerAlarmDisable(timer);
925-
#endif // ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 0)
917+
#endif // ESP_ARDUINO_VERSION < ESP_ARDUINO_VERSION_VAL(3, 0, 0)
926918

927919
#else // ! ARDUINO_ARCH_ESP32
928920
timer1_disable();
@@ -1359,11 +1351,9 @@ void TVanPacketRxQueue::Disable()
13591351

13601352
#ifdef ARDUINO_ARCH_ESP32
13611353

1362-
#if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 0)
1363-
//timerStop(timer);
1364-
#else // ESP_ARDUINO_VERSION < ESP_ARDUINO_VERSION_VAL(3, 0, 0)
1354+
#if ESP_ARDUINO_VERSION < ESP_ARDUINO_VERSION_VAL(3, 0, 0)
13651355
timerAlarmDisable(timer);
1366-
#endif // ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 0)
1356+
#endif // ESP_ARDUINO_VERSION < ESP_ARDUINO_VERSION_VAL(3, 0, 0)
13671357

13681358
#else // ! ARDUINO_ARCH_ESP32
13691359
timer1_disable();

src/VanBusTx.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ void IRAM_ATTR FinishPacketTransmission(TVanPacketTxDesc* txDesc)
4040

4141
#ifdef ARDUINO_ARCH_ESP32
4242
#if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 0)
43-
timerDetachInterrupt(txTimer);
43+
timerStop(txTimer);
4444
#else // ESP_ARDUINO_VERSION < ESP_ARDUINO_VERSION_VAL(3, 0, 0)
4545
timerAlarmDisable(timer);
4646
timerDetachInterrupt(timer);
@@ -178,6 +178,7 @@ void TVanPacketTxQueue::Setup(uint8_t theRxPin, uint8_t theTxPin)
178178
#if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 0)
179179
#define TIMER_FREQ (5000000)
180180
txTimer = timerBegin(TIMER_FREQ);
181+
timerAttachInterrupt(txTimer, &SendBitIsr);
181182
#endif
182183
#endif
183184

@@ -266,11 +267,8 @@ void TVanPacketTxQueue::StartBitSendTimer()
266267
#ifdef ARDUINO_ARCH_ESP32
267268

268269
#if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 0)
269-
// timerStop(timer);
270-
timerDetachInterrupt(txTimer);
271-
timerAttachInterrupt(txTimer, &SendBitIsr);
272270
timerAlarm(txTimer, VAN_BIT_TIMER_TICKS, true, 0);
273-
timerRestart(txTimer);
271+
timerStart(txTimer);
274272
#else // ESP_ARDUINO_VERSION < ESP_ARDUINO_VERSION_VAL(3, 0, 0)
275273
if (! timerAlarmEnabled(timer))
276274
{

0 commit comments

Comments
 (0)