Сб май 21, 2022 09:39:53
Сб май 21, 2022 10:29:21
Сб май 21, 2022 11:40:42
Вы смешиваете в одном предложении две разные задачи:
Отдельно для светодиода, отдельно для реле, отдельно для кнопки, отдельно для каждой периферии?Всё верно. Светодиод, кнопка и даже реле типовые объекты наших схем и заслуживают написания для них, пусть и простенького, но отдельного от GPIO кода.
Тогда к чему был пример с контроллером на ПЛИС?Вы не поверите, у меня никогда не возникает задача перевести только входные ноги в режим push-pull.
Тут стоило бы поставить ВАШЕ ЖИРНОЕ IMHO.
Вот даже не надо далеко ходить, пару сообщений выше, сравните
Если это работает так, как я думаю, то это отличная фича языка.И если присмотреться то видно, что почти в каждый класс пробрасываются пины
Порядочно. Но вешать дисплей на несколько портов это обычно плохая идея.А на С что будет? Сколько страниц кода придется написать чтобы заменить хотя бы две последние строки
Сб май 21, 2022 12:18:33
Сб май 21, 2022 15:24:34
Сб май 21, 2022 18:25:44
Сб май 21, 2022 19:09:36
Сб май 21, 2022 19:24:36
VladislavS, помнится, у меня губа отвисла, а у этого еще и слюна потекла.НовыйДень писал(а):Графическая утилита ... Почему бы не запилить подобную графическую утилиту?
Сб май 21, 2022 20:17:22
НовыйДень писал(а):HAL - это Hardware Application Layer - очень правильная идеология абстракции уровней программного кода.
Сб май 21, 2022 20:30:59
Сб май 21, 2022 20:41:15
Сб май 21, 2022 20:53:31
Сб май 21, 2022 21:10:06
Сб май 21, 2022 21:27:29
Сб май 21, 2022 23:54:07
Сб май 21, 2022 23:58:35
Вс май 22, 2022 08:28:27
using lcdDataPins = PinList<PE10, PE9, PE8, PE7, PD1, PD0, PD15, PD14>;
Lcd<RM68140, LcdOrient::Landscape, PB13, lcdDataPins, PD7, PE6, PD5, PD4, 0, 8, 0> lcd;
lcd.init();
Вс май 22, 2022 08:30:48
Ну так любую задачу можно разбить на подзадачи.Вот прямо в вашей фразе звучит две отдельных задачи: сконфигурировать, переключать.
И сколько вариантов периферии вы реализовали? Отдельно светодиод. Что еще?Совершенно верно! Причём вы пишете код, чтобы ему можно было просто в заголовочном файле типа main.hpp указать параметром шаблона куда он подключен и всё.
Нет, меня удивило зачем вы такой приме рпривели в обсуждении настройки на push-pull. У вас часто возникает задача генерировать такие контроллеры и настраивать именно урезанные пины?К тому что существуют порты у которых нет Push-Pull режима, что вас удивило, на что я привёл пример.
Где вы видели? Я показывал свой код? По фрагментам судите?
Выигрыш в пару тактов у вас только там, где вы заморочились с ручной оптимизацией (вроде байтового доступа к регистрам)."Мочало, мочало, начинай сначала". Много раз показал, что быстрее.
Зачем вы врете? Компилятор не имеет права разивать 32-битный регистр на байты, это вы делали вручную.В том то и дело, что вы не упарываетесь и получаете менее оптимальный код. И я не упарываюсь тоже, но за меня это делает компилятор, неустанно, в каждом проекте, сурово и беспощадно.
На Земле. Это третья планета солнечной системы.Это на какой такой планете?
И что, общие соображения внезапно станут фактами?Может стоит глаза разуть?
Не знаю зачем вы пытаетесь вывернуть реальность.Чёрное это белое, война это мир. Выведи не пойми что не пойми откуда в вашем случае. Против чёткого "выведи все элементы буфера", при этом тип элемента будет автоматически учтён и правильно выведен, именно так как в буфере и хранится. Как можно так шиворот на выворот реальность переворачивать?
Конечно, он же не завязан на внутреннее устройство переменной. Хоть int туда подставить, хоть строку - все будет работать очевидно и предсказуемо.А из вашего аж прям так очевидно...
Хорошо, но какое это имеет отношение к разбиению линии данных по портам?Если дисплей подразумевает разные интерфейсы, если в контроллере шину можно реализовать разными способами (ногодрыг или fmc), то разделить интерфейсы рисования и подключения вполне логично. Менять интерфейс подключения несколькими параметрами в шаблоне при определении в заголовочном файле это быстро, удобно, мало кода.
...идиотов.Графическая утилита с выбором ног и режимов и генерация готового кода чисто конкретно под этот выбор...
Вс май 22, 2022 10:27:57
Reflector писал(а):Здесь можно указать любые пины и все максимально оптимизируется
Вс май 22, 2022 10:37:14
Если делать конфигуратор он ведь может сгенерить такой-же компактный код? Конечно может, более того это еще и упростит написание самого конфигуратора. С другой стороны он может нагенерить плохо читаемые портянки настолько же эффективного кода под конкретные пины или нечто менее громоздкое, но и настолько же менее эффективное. Точно лучше получится? Ты за портянки или против? Хороший конфигуратор должен опираться на качественные библиотеки