Задать вопрос

Почему при выводе на LCD дисплей в прeрывании ESP32 уходит в ошибку и перезагружается?

Всем привет! Пишу программу для ESP32 на ArdiunoIDE. Пытаюсь выводить какой-либо текст на LCD дисплей 2004по I2C шине, и получаю циклическую перезагрузку. Подскажите, куда копать?
Тест программы:
#define LED 2                // встроеный светодиод Pin2
hw_timer_t *My_timer = NULL; // Переменная-указатель с именем My_timer для настройки
#include <LCDI2C_Multilingual.h>
#include <Wire.h>

LCDI2C_Russian lcd(0x27, 16, 2);  // I2C address: 0x27; Display size: 16x2

void ARDUINO_ISR_ATTR onTimer() {  //Функция ISR для обработки прерывания таймера
  digitalWrite(LED, !digitalRead(LED)); //переключаем светодиод

   lcd.print("Расцветали яблони и груши, Поплыли туманы над рекой"); // wait for 4 seconds before each next screen
}

void setup() {
  Wire.begin(GPIO_NUM_33, GPIO_NUM_32); // sda, scl
  lcd.init();
  lcd.backlight();
  pinMode(LED, OUTPUT); // Pin2 как выход
  /*Для инициализации таймера есть функция timerbegin ()
    - Номер таймера, который мы хотим использовать (от 0...3),
    - Значение предварительного делителя
    - Флаг, указывающий, должен ли счетчик считать вверх true/false */
  My_timer = timerBegin(1000000);
  /*Перед включением таймера, необходимо прикрепить его к ISR,
    который будет выполняться при генерации прерывания.
    Это делается вызовом функции timerAttachInterrupt */
  timerAttachInterrupt(My_timer, &onTimer);
  /* Функция timerAlarmWrite() используется для указания значения счетчика,
    при котором должно генерироваться прерывание таймера!
    Генерируем прерывание каждую секунду, и поэтому передаем значение 1000000 микросекунд, 
    что равно 1 секунде. В качестве третьего аргумента передаем значение true-счетчик будет 
    перезагружаться и, таким образом, прерывание будет генерироваться периодически.*/
  timerAlarm(My_timer, 1000000, true, 0);
  //timerStart(My_timer);
  /*Разрешаем прерывание по таймеру с помощью функции timerAlarmEnable.*/  
  //timerAlarmEnable(My_timer);
  
}

void loop() {
}


Текст ошибки в консоли:
14:31:54.857 -> Guru Meditation Error: Core  1 panic'ed (Unhandled debug exception). 
14:31:54.857 -> Debug exception reason: Stack canary watchpoint triggered (loopTask) 
14:31:54.890 -> Core  1 register dump:
14:31:54.890 -> PC      : 0x40085242  PS      : 0x00060536  A0      : 0x800e01a0  A1      : 0x3ffbf44c  
14:31:54.890 -> A2      : 0x3ffbf460  A3      : 0x00000000  A4      : 0x0000000c  A5      : 0x3ffbf460  
14:31:54.890 -> A6      : 0x800896a9  A7      : 0x00000000  A8      : 0x3ffc2de8  A9      : 0x00000000  
14:31:54.890 -> A10     : 0x3f402b55  A11     : 0x0000000a  A12     : 0x00000001  A13     : 0x3ffbf504  
14:31:54.924 -> A14     : 0x00000009  A15     : 0x00000000  SAR     : 0x00000020  EXCCAUSE: 0x00000001  
14:31:54.924 -> EXCVADDR: 0x00000000  LBEG    : 0x40085234  LEND    : 0x4008523f  LCOUNT  : 0xffffffff  
14:31:54.924 -> 
14:31:54.924 -> 
14:31:54.924 -> Backtrace: 0x4008523f:0x3ffbf44c |<-CORRUPTED
14:31:54.924 -> 
14:31:54.924 -> 
14:31:54.924 -> Core  0 register dump:
14:31:54.924 -> PC      : 0x40088766  PS      : 0x00060035  A0      : 0x00000001  A1      : 0x00000000  
14:31:54.957 -> A2      : 0x3f4028b4  A3      : 0x00000000  A4      : 0x400d8c20  A5      : 0x400d8aec  
14:31:54.957 -> A6      : 0x00000000  A7      : 0x3ffbf38c  A8      : 0x00000001  A9      : 0x00000004  
14:31:54.957 -> A10     : 0x3ffc23b8  A11     : 0x00000001  A12     : 0x3ffbf328  A13     : 0x00040024  
14:31:54.957 -> A14     : 0x3ffbf38c  A15     : 0x00060536  SAR     : 0x00040026  EXCCAUSE: 0x3ffc2de8  
14:31:54.957 -> EXCVADDR: 0x400842d3  LBEG    : 0x3f402b55  LEND    : 0x0000000a  LCOUNT  : 0x800e01a0  
14:31:54.991 -> 
14:31:54.991 -> 
14:31:54.991 -> Backtrace: 0x40088763:0x00000000 |<-CORRUPTED
14:31:54.991 -> 
14:31:54.991 -> 
14:31:54.991 -> 
14:31:54.991 -> 
14:31:54.991 -> ELF file SHA256: a969b1739
14:31:54.991 -> 
14:31:54.991 -> Re-entered core dump! Exception happened during core dump!
14:31:54.991 -> Rebooting...
  • Вопрос задан
  • 16 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы