Обновить
4
0
Дмитрий@XMAKE

Программист и электронщик

Отправить сообщение

Она есть, но не через стандартные digitalWrite. Они слишком медленные. Можно и через них, но скорость вывода изображения на дисплей будет меньше в десятки раз. Поэтому в .cpp файле происходит максимально быстрая работа с регистрами GPIO, например вот тут:
GPIO.out_w1ts = 1UL << DC;
происходит запись в set регистр некоторого значения, где все биты нули, кроме бита под номером пина DC, т.е. эта строчка запишет логическую 1 в пин DC, причем в сотни раз быстрее digitalWrite. Конкретно эта строчка будет работать только на ESP32, но для других МК есть аналогичные регистры. Ещё есть регистр GPIO.out_w1tc (clear, отличается последней буквой) и он служит для записи 0 на пины. Эти регистры 32 битные, т.е. они покрывают пины 0-31. Это также означает что одной такой записью в регистр можно изменить состояние всех 32 пинов, но тут это не используется, будет полезно для параллельных подключений. Но на ESP32 есть несколько пинов с номером выше 31, для них есть отдельный регистр. Узнал об этом вот отсюда: https://github.com/maarten-pennings/howto/blob/main/esp32-fast-gpio/esp32-fast-gpio.md

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Разработчик игр, Инженер встраиваемых систем
C#
C++
Unity3d
Arduino
Python