M5.Axp.ScreenBreath() crashes when used in interrupt
-
Hi.
It seems that M5.Axp.ScreenBreath() crashes when it is used in a interrupt. Try the demo below in Arduino IDE. It should turn off the display after a timer delay and turn it back on when the button is pressed.
On my system this program crashes with a watchdog timeout during i2c operation.#include <M5StickC.h> //define M5StickC hardware components and functions #define BUTTON_MAIN 37 //The main button pin number #define SCREEN_TIMEOUT 10 //Screen-off timeout in seconds hw_timer_t *timer; void IRAM_ATTR onButton() { //Interrupt on button press => turn on the screen detachInterrupt(BUTTON_MAIN); //Ignore more button presses M5.Axp.ScreenBreath(10); //Set screen light ON timerAlarmEnable(timer); //Start timer for screen-off delay } void IRAM_ATTR onTimer(){ //Interrupt on timer => turn off the screen timerAlarmDisable(timer); //Stop the timer. M5.Axp.ScreenBreath(0); //Set screen light OFF attachInterrupt(BUTTON_MAIN,onButton,FALLING); //Attach interrupt on button press => turn on the screen } void setup() { M5.begin(); //Init M5 M5.Lcd.fillScreen(YELLOW); //Make screen yellow pinMode(BUTTON_MAIN, INPUT_PULLUP); //Button GPIO set as input, pull-up enabled timer=timerBegin(1,40000,true); //Init screen light timer, divisor 40000 => 0.5ms steps timerAttachInterrupt(timer,&onTimer,true); //Set screen light timer interrupt function timerAlarmWrite(timer,SCREEN_TIMEOUT*2000,true); //Set interrupt to turn off screen after X timer steps of 0.5ms each. timerAlarmEnable(timer); //Start timer for screen-off delay } void loop() { //No code here. }
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login