Есть LCD 128 на 64, подключен по SPI.  Есть у него сигнал "команды/данные". Все вроде хорошо, но иногда когда слишком часто вызываются внешние прерывания или иногда при нажатии кнопок ( которые обрабатываются по таймеру, хотя и по EXTI результат не лучше) дисплей сходит с ума. обычно просто переворачивается и зависает. помогает только принудительная переинициализация. Происходит это не часто и поймать отладчиком такой прикол практически невозможно.

Есть мнение что более приоритетное прерывание приходится в момент переключения сигнальных линий и по возврату из прерываний возникает этот глюк.  Фишка в том что внешние прерывания крайне важны в проекте и отключать их надолго нельзя. Дисплей же в свою очередь можно обновлять не чаще 5-10 раз в секунду.

была идея как то обновлять его через ДМА, но алгоритм что-то так и не был реализован. отчасти потому что дисплей записывается постранично и для записи в новую строку нужно прогнать команды с ногодрыгом пина "команды/данные". т.е. нельзя просто взять и послать весь буфер в дисплей.

Может кто сталкивался с такой же проблемой ?

P.S. скорость работы SPI понижал - не помогает. специальных ручных задержек при отправки данных не делал.

Отредактировано Atomic-dm (2017-12-25 20:06:35)