Forth
https://fforum.winglion.ru/

Forth over Arduino
https://fforum.winglion.ru/viewtopic.php?f=39&t=3306
Страница 5 из 5

Автор:  zma [ Пн дек 25, 2023 00:54 ]
Заголовок сообщения:  Re: Forth over Arduino

Возможно, кому-нибудь будет полезно:

Обнаружил, что на ESP8266 ардуиновская digitalWrite перед собственно установкой уровня пина ещё отключает на нём ШИМ и генерацию импульсов (которые могли быть запущены функциями analogWrite и tone соответственно). При большом числе вызовов эти вспомогательные действия могут занимать заметное время.

Cоорудил макросы, которые просто устанавливают указанный уровень на пине и работают значительно быстрее:
Код:
#define pinHigh(pin)  (*portOutputRegister(digitalPinToPort(pin)) |= digitalPinToBitMask(pin))
#define pinLow(pin)   (*portOutputRegister(digitalPinToPort(pin)) &= ~digitalPinToBitMask(pin))


Скорее всего, будет работать и под ESP32, но пока не проверял.

Автор:  Hishnik [ Пн дек 25, 2023 03:31 ]
Заголовок сообщения:  Re: Forth over Arduino

Ну, в принципе, включение вывода как GPIO и должно отключать режимы специального назначения. Со скоростью еще определенный резерв в том, что вычисление digitalPinToPort(pin) каждый раз при выводе - это вынужденная дань подходу Arduino как таковому. Просто чтобы "вывод в pin 13" всегда был зажиганием светодиода. Соответственно, для разработчиков это определенная головная боль, чтобы по аргументу 13 понять, где на их плате соответствующий регистр IO в МК.

Я сейчас жду еще одну интересную платформу на ESP32: M5Stack Core2 ESP32 IoT Памяти тут побольше, поэтому и разместить всякого тоже можно. Кроме того, чем больше памяти задействовано, тем дольше грузится прошивка, что опять-таки происходит при каждой перекомпиляции исходных текстов, и избавиться от части этого можно как раз с интерпретатором, работающим внутри Arduino.

Страница 5 из 5 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/