ARDUINO Конфликт GyverTimes с TFT Дисплеем на базе ST7735

SanYch

✩✩✩✩✩✩✩
4 Ноя 2020
50
0
День добрый. Обнаружил конфликт при совместном использовании библиотеки прерываний по таймеру GyverTimers и TFT дисплея на базе ST7735. При активации канала прерываний прекращается отображение графических примитивов на дисплее (скетч ниже).
Используется arduino nano и tft oled дисплей 1.8 на ST7735. Возможно кто-то сталкивался с проблемой, сходу решить не удалось, опыта маловато.
#include <Adafruit_GFX.h> // Библиотека для вывода графических примитивов на дисплей
#include <Adafruit_ST7735.h> // Библиотека драйвера дисплея

#include "GyverTimers.h" // Библиотека для работы с прерываниями по таймеру


#define TFT_CS 7
#define TFT_RST 6
#define TFT_DC 8

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

void setup()
{
tft.initR(INITR_BLACKTAB);
tft.fillScreen(ST7735_BLACK);
tft.setRotation(1);

Timer1.setPeriod(40); // Устанавливаем период таймера
Timer1.enableISR(); // Если закомментировать эту строку то квадрат рисуется на экране, иначе - экран залит цветом заднего фона, квадрат не рисуется!
Timer1.stop();
}

void loop() {
tft.fillRect(10,10,150,118,ST7735_YELLOW); // Рисуем прямоугольник заполненный желтым цветом

}
 

Fleshdeck

★★★✩✩✩✩
19 Янв 2019
349
176
Киев
@SanYch, библиотека экрана использует один из таймеров, и библиотека гайвера похоже что использует тот же таймер, попробуй изменить вручную используемый таймер для прерываний
 

SanYch

✩✩✩✩✩✩✩
4 Ноя 2020
50
0
@Fleshdeck, Пробовал все 3 таймера и разные каналы - без улучшений. Конфликт возникает при активации канала прерываний Timer1.enableISR(); , при переопределении таймера всё норм вроде.

@SanYch, втыкал в файлы библиотек не нашёл прямых указаний на таймеры, опыта маловато в этих делах пока.