Некоторое время назад я изменил библиотеку LiquidCrystal для поддержки флага занятости.
Обратите внимание, что реальная операция, управляемая прерываниями, невозможна возможна - для каждого чтения вам нужно дважды переключать строку E
nable. Поэтому вам нужно будет опросить флаг занятости.
Затем я сделал несколько тестов и обнаружил, что опрос флага занятости на медленнее , чем просто ожидание большинства команд. (Исключение составляют команды 'clear' и 'home'). Причина была в том, что переключение между режимом чтения и режимом записи требует дополнительных шагов, таких как 8 дополнительных вызовов на digitaWrite
и 8 дополнительных вызовов на pinMode
. Даже с 16 МГц Arduinos это медленнее, чем просто ожидание 100 мкс.
После этого я написал библиотеку, которая управляет регистрами выводов напрямую и в массовом режиме - все 8 выводов с одним доступом к регистру. После этого я был на стадионе, чтобы получить какую-то выгоду от опроса.