Не шутка. Она ждёт когда сигнал на линии упадёт до «0», генерирует прерывание и ждёт уже высокого уровня. Чтобы потом цикл повторился.
И на 3 строки PIO-ассемблера надо 17 строк на C/C++, чтобы это всё инициализировать, сконфигурировать и запустить. 🙂
А всё для того, чтобы правая и левая клавиатура висели не на одном и том же GPIO-прерывании (мне не нравится, как оно в SDK оформлено), а чтобы каждая клава висела на своём прерывании.
Для моей колонки «soundbar» я проектирую управляющий модуль. На Arduino nano. Чтобы колонка автоматически включалась при обнаружении звукового сигнала на входе от телевизора, и чтобы телевизионный ИК пульт мог регулировать громкость колонки, когда она включена. Ну и чтобы, собственно, управлять микросхемой-регулятором громкости.
Опыт показал, что сочетание FreeRTOS и Arduino nano возможно, но особого простора для творчества тут нет.
5 задач
5 мьютексов
4 таймера
2 очереди
2 EventGroups
И память уже забита настолько, что шаг вправо-влево означает либо переполнение кучи, либо переполнение стеков задач. Я, конечно уместил всё это хозяйство в ардуинку, подкручивая настройки системы (в основном размер стека задач по-умолчанию), но похоже, это примерно всё, что может вынести этот Боливар.
До сих пор для проектирования всякого столярного я использовал SketchUp 2017 (это последняя версия, где доступно бесплатное приложение, работающее на компе, а не в браузере).
А тут, заимев линуксовую версию Компаса, я убедился, что она не глючит (по сравнению с виндовой версией, запущенной под Wine). И решил нарисовать в нём что-то простенькое столярное (см. рис. 1).
В общем, Компас для моих столярных задач вполне пригоден. Детали рисуются, все свойства моделей редактируются, сборки собираются, параметризация работает.
Рис. 1
Собственно, параметризация — это и есть главный козырь Компаса. Если в скетчапе детали просто рисуются и составляются вместе, как кубики, то в Компасе, в «сборке» задаются условия сопряжения деталей друг с другом. А также, одну деталь можно использовать в качестве базы для проектирования другой детали. Таким образом, если любую деталь изменить, то все зависимые от неё детали и сборки перестроятся сами.
Вот, например, на рис. 2 я просто изменил длину царги:
Установил себе на kubuntu, работает, не глючит. Виндовая версия, запущенная под wine, всё же подглюкивала во многих местах. А сейчас специально прошёлся по критичным местам — работает стабильно.
Для того, что я сейчас разучиваю, у меня есть и фортепианная аранжировка от Юлии Шишкиной, и баянный вариант.
Играю я на готовых аккордах в левой. При этом для куплета я левую руку беру в основном из фортепианного варианта, дополняя готовыми аккордами. Потому что в фортепианном варианте есть красивые басовые ходы, которые отлично звучат, и которые не так хорошо проработаны в баянном варианте нот. А вот в припеве левая рука из баянного варианта — прекрасна (см. рис. 1).
Не буду скрывать, я попробовал нечто подобное изобразить самостоятельно (глядя в фортепианные ноты), но тот, кто делал баянный вариант, был профи, и не мне с ним тягаться. Я до такой гармонизации не додумался.
К тому же, поскольку, опять же, левая рука играется на готовых аккордах, она звучит «гуще» и интереснее, чем фортепианный вариант. На фортепиано так не сыграть из-за ограничений инструмента.
В общем, я в восторге от того, как в баянном варианте сделана левая рука в припеве. (Правая рука наоборот, «гуще» и интересней в фортепианном варианте. Её возьму оттуда.)