8000 esp32: Fix hang in AS923 due to incorrect timer behaviour. · pycom/pycom-micropython-sigfox@746586e · GitHub
[go: up one dir, main page]

Skip to content
This repository was archived by the owner on Sep 16, 2024. It is now read-only.

Commit 746586e

Browse files
author
Daniel Campora
committed
esp32: Fix hang in AS923 due to incorrect timer behaviour.
1 parent 7c0b797 commit 746586e

File tree

2 files changed

+8
-21
lines changed

2 files changed

+8
-21
lines changed

drivers/sx127x/sx1276/sx1276.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -268,16 +268,14 @@ bool SX1276IsChannelFree( RadioModems_t modem, uint32_t freq, int16_t rssiThresh
268268
carrierSenseTime = TimerGetCurrentTime( );
269269

270270
// Perform carrier sense for maxCarrierSenseTime
271-
while( TimerGetElapsedTime( carrierSenseTime ) < maxCarrierSenseTime )
272-
{
271+
do {
273272
rssi = SX1276ReadRssi( modem );
274273

275-
if( rssi > rssiThresh )
276-
{
274+
if ( rssi > rssiThresh ) {
277275
status = false;
278276
break;
279277
}
280-
}
278+
} while( TimerGetElapsedTime( carrierSenseTime ) < maxCarrierSenseTime );
281279
SX1276SetSleep( );
282280
return status;
283281
}

esp32/lora/timer-board.c

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -57,18 +57,11 @@ static TimerTime_t TimerTickCounterContext = 0;
5757
*/
5858
volatile TimerTime_t TimeoutCntValue = 0;
5959

60-
/*!
61-
* Timer enabled/disabled flag
62-
*/
63-
volatile bool TimerEnabled = false;
64-
6560

6661
static IRAM_ATTR void TimerCallback (void) {
67-
if (TimerEnabled) {
68-
TimerTickCounter++;
69-
if (TimerTickCounter == TimeoutCntValue) {
70-
TimerIrqHandler();
71-
}
62+
TimerTickCounter++;
63+
if (TimeoutCntValue > 0 && TimerTickCounter == TimeoutCntValue) {
64+
TimerIrqHandler();
7265
}
7366
}
7467

@@ -96,12 +89,11 @@ IRAM_ATTR void TimerHwStart (uint32_t val) {
9689
} else {
9790
TimeoutCntValue = TimerTickCounterContext + val;
9891
}
99-
TimerEnabled = true;
10092
MICROPY_END_ATOMIC_SECTION(ilevel);
10193
}
10294

10395
void IRAM_ATTR TimerHwStop( void ) {
104-
TimerEnabled = false;
96+
10597
}
10698

10799
void TimerHwDelayMs( uint32_t delay ) {
@@ -126,10 +118,6 @@ IRAM_ATTR TimerTime_t TimerHwGetElapsedTime (void) {
126118
IRAM_ATTR TimerTime_t TimerHwComputeTimeDifference( TimerTime_t eventInTime ) {
127119
TimerTime_t currTime = TimerHwGetTime();
128120

129-
if (eventInTime == 0) {
130-
return 0;
131-
}
132-
133121
if (eventInTime <= currTime) {
134122
return currTime - eventInTime;
135123
} else {
@@ -139,4 +127,5 @@ IRAM_ATTR TimerTime_t TimerHwComputeTimeDifference( TimerTime_t eventInTime ) {
139127
}
140128

141129
void TimerHwEnterLowPowerStopMode( void ) {
130+
142131
}

0 commit comments

Comments
 (0)
0