irq code sanitizations
This commit is contained in:
parent
51917b79d3
commit
aeccb59f55
@ -19,7 +19,7 @@ void defaultConfig() {
|
|||||||
cfg.screenon = 1; // 0=disabled, 1=enabled
|
cfg.screenon = 1; // 0=disabled, 1=enabled
|
||||||
cfg.countermode = 0; // 0=cyclic, 1=cumulative, 2=cyclic confirmed
|
cfg.countermode = 0; // 0=cyclic, 1=cumulative, 2=cyclic confirmed
|
||||||
cfg.rssilimit = 0; // threshold for rssilimiter, negative value!
|
cfg.rssilimit = 0; // threshold for rssilimiter, negative value!
|
||||||
cfg.sendcycle = SEND_CYCLE; // payload send cycle [seconds/2]
|
cfg.sendcycle = SENDCYCLE; // payload send cycle [seconds/2]
|
||||||
cfg.wifichancycle =
|
cfg.wifichancycle =
|
||||||
WIFI_CHANNEL_SWITCH_INTERVAL; // wifi channel switch cycle [seconds/100]
|
WIFI_CHANNEL_SWITCH_INTERVAL; // wifi channel switch cycle [seconds/100]
|
||||||
cfg.blescantime =
|
cfg.blescantime =
|
||||||
|
32
src/main.cpp
32
src/main.cpp
@ -45,10 +45,8 @@ Tasks using i2c bus all must have same priority, because using mutex semaphore
|
|||||||
|
|
||||||
// ESP32 hardware timers
|
// ESP32 hardware timers
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
0 displayIRQ -> display refresh -> 40ms (DISPLAYREFRESH_MS in paxcounter.conf)
|
0 displayIRQ -> display refresh -> 40ms (DISPLAYREFRESH_MS in
|
||||||
1 ppsIRQ -> pps clock irq -> 1sec
|
paxcounter.conf) 1 ppsIRQ -> pps clock irq -> 1sec 2 unused 3 unused
|
||||||
2 unused
|
|
||||||
3 unused
|
|
||||||
|
|
||||||
|
|
||||||
// Interrupt routines
|
// Interrupt routines
|
||||||
@ -316,15 +314,6 @@ void setup() {
|
|||||||
strcat_P(features, " OLED");
|
strcat_P(features, " OLED");
|
||||||
DisplayState = cfg.screenon;
|
DisplayState = cfg.screenon;
|
||||||
init_display(PRODUCTNAME, PROGVERSION); // note: blocking call
|
init_display(PRODUCTNAME, PROGVERSION); // note: blocking call
|
||||||
|
|
||||||
// setup display refresh trigger IRQ using esp32 hardware timer
|
|
||||||
// https://techtutorialsx.com/2017/10/07/esp32-arduino-timer-interrupts/
|
|
||||||
// prescaler 80 -> divides 80 MHz CPU freq to 1 MHz, timer 0, count up
|
|
||||||
displayIRQ = timerBegin(0, 80, true);
|
|
||||||
// interrupt handler DisplayIRQ, triggered by edge
|
|
||||||
timerAttachInterrupt(displayIRQ, &DisplayIRQ, true);
|
|
||||||
// reload interrupt after each trigger of display refresh cycle
|
|
||||||
timerAlarmWrite(displayIRQ, DISPLAYREFRESH_MS * 1000, true);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// show payload encoder
|
// show payload encoder
|
||||||
@ -395,16 +384,25 @@ void setup() {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// starting timers and interrupts
|
||||||
assert(irqHandlerTask != NULL); // has interrupt handler task started?
|
assert(irqHandlerTask != NULL); // has interrupt handler task started?
|
||||||
// start timer triggered interrupts
|
|
||||||
ESP_LOGI(TAG, "Starting Timers...");
|
ESP_LOGI(TAG, "Starting Timers...");
|
||||||
|
|
||||||
|
// display interrupt
|
||||||
#ifdef HAS_DISPLAY
|
#ifdef HAS_DISPLAY
|
||||||
|
// https://techtutorialsx.com/2017/10/07/esp32-arduino-timer-interrupts/
|
||||||
|
// prescaler 80 -> divides 80 MHz CPU freq to 1 MHz, timer 0, count up
|
||||||
|
displayIRQ = timerBegin(0, 80, true);
|
||||||
|
timerAttachInterrupt(displayIRQ, &DisplayIRQ, true);
|
||||||
|
timerAlarmWrite(displayIRQ, DISPLAYREFRESH_MS * 1000, true);
|
||||||
timerAlarmEnable(displayIRQ);
|
timerAlarmEnable(displayIRQ);
|
||||||
#endif
|
#endif
|
||||||
sendcycler.attach(SEND_CYCLE * 2, sendcycle);
|
|
||||||
|
// cyclic function interrupts
|
||||||
|
sendcycler.attach(SENDCYCLE * 2, sendcycle);
|
||||||
housekeeper.attach(HOMECYCLE, housekeeping);
|
housekeeper.attach(HOMECYCLE, housekeeping);
|
||||||
|
|
||||||
// start button interrupt
|
// button interrupt
|
||||||
#ifdef HAS_BUTTON
|
#ifdef HAS_BUTTON
|
||||||
#ifdef BUTTON_PULLUP
|
#ifdef BUTTON_PULLUP
|
||||||
attachInterrupt(digitalPinToInterrupt(HAS_BUTTON), ButtonIRQ, RISING);
|
attachInterrupt(digitalPinToInterrupt(HAS_BUTTON), ButtonIRQ, RISING);
|
||||||
@ -424,7 +422,7 @@ void setup() {
|
|||||||
|
|
||||||
#if defined HAS_IF482 || defined HAS_DCF77
|
#if defined HAS_IF482 || defined HAS_DCF77
|
||||||
#ifndef TIME_SYNC_INTERVAL
|
#ifndef TIME_SYNC_INTERVAL
|
||||||
#error you must define TIME_SNYC_INTERVAL in paxcounter.conf
|
#error for clock controller function TIME_SNYC_INTERVAL must be defined in paxcounter.conf
|
||||||
#endif
|
#endif
|
||||||
ESP_LOGI(TAG, "Starting Clock Controller...");
|
ESP_LOGI(TAG, "Starting Clock Controller...");
|
||||||
clock_init();
|
clock_init();
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
#define VERBOSE 1 // comment out to silence the device, for mute use build option
|
#define VERBOSE 1 // comment out to silence the device, for mute use build option
|
||||||
|
|
||||||
// Payload send cycle and encoding
|
// Payload send cycle and encoding
|
||||||
#define SEND_CYCLE 30 // payload send cycle [seconds/2], 0 .. 255
|
#define SENDCYCLE 30 // payload send cycle [seconds/2], 0 .. 255
|
||||||
#define PAYLOAD_ENCODER 2 // payload encoder: 1=Plain, 2=Packed, 3=Cayenne LPP dynamic, 4=Cayenne LPP packed
|
#define PAYLOAD_ENCODER 2 // payload encoder: 1=Plain, 2=Packed, 3=Cayenne LPP dynamic, 4=Cayenne LPP packed
|
||||||
|
|
||||||
// Set this to include BLE counting and vendor filter functions
|
// Set this to include BLE counting and vendor filter functions
|
||||||
|
@ -457,7 +457,7 @@ void PayloadConvert::addButton(uint8_t value) {
|
|||||||
void PayloadConvert::addTime(time_t value) {
|
void PayloadConvert::addTime(time_t value) {
|
||||||
#if (PAYLOAD_ENCODER == 4)
|
#if (PAYLOAD_ENCODER == 4)
|
||||||
uint32_t t = (uint32_t)value;
|
uint32_t t = (uint32_t)value;
|
||||||
uint32_t tx_period = (uint32_t)SEND_CYCLE * 2;
|
uint32_t tx_period = (uint32_t)SENDCYCLE * 2;
|
||||||
buffer[cursor++] = 0x03; // set config mask to UTCTime + TXPeriod
|
buffer[cursor++] = 0x03; // set config mask to UTCTime + TXPeriod
|
||||||
// UTCTime in seconds
|
// UTCTime in seconds
|
||||||
buffer[cursor++] = (byte)((t & 0xFF000000) >> 24);
|
buffer[cursor++] = (byte)((t & 0xFF000000) >> 24);
|
||||||
|
Loading…
Reference in New Issue
Block a user