Работа с портами пинам. Макросы, X-macro

Обсуждаем контроллеры компании Atmel.
Ответить
Потрогал лапой паяльник
Сообщения: 302
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Красивая константа.
2.7 1828 1828 45 90 45 2 353 60287471352
Легко запомнить как 2.7 1828 1828 45 90 45 - громадная точность. Хотя и не особо нужная. Но легкозапоминаемая. Но ненужная. Наверное :)
Реклама
Вымогатель припоя
Сообщения: 544
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

Demiurg писал(а): Ср июн 24, 2026 08:50:04 . Я хотел создать конструктивную тему. Ты пришел все обкакал?
Пришел поручик Ржевский и всё опошлил :))
А если серьезно, в этой теме особо и нет ничего конструктивного, прорывного. Тема макросов в работе с пинами - это морально устаревшая тема, потерявшая свою актуальность десяток лет назад, как минимум.
Реклама
Потрогал лапой паяльник
Сообщения: 302
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Rapra писал(а): Ср июн 24, 2026 19:17:37 Тема макросов в работе с пинами - это морально устаревшая тема, потерявшая свою актуальность
А почему? Новизны - да, ноль, но актуальность... Кроме риска переопределения вроде беды иной не видно, да и можно предупреждения этому включить. В отличие от высокоуровневого HAL банальный "ногодрыг" на прямой работе с регистрами быстрее. Визуально выглядит проще инлайна. :dont_know:
OKF
Это не хвост, это антенна
Сообщения: 1422
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

Новизны никакой. Но я уже хз сколько времени пишу типа on(LED); При том что неважно как он подключен, к плюсу или к минусу.
Просто прописывая #define LED B,0,L. И неважно какой компилятор, с плюсами или без. Есть ли возможность инлайнить или нет.
Реклама
Эиком - электронные компоненты и радиодетали
Модератор
Аватара пользователя
Сообщения: 19060
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

я и сам знаю, что это "е", но хотелось указать на ошибку.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
OKF
Это не хвост, это антенна
Сообщения: 1422
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

Ё маё! Всё же интересен русский язык, однако.)
Реклама
Вымогатель припоя
Сообщения: 544
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

Zapolyarny писал(а): Ср июн 24, 2026 19:40:05 В отличие от высокоуровневого HAL банальный "ногодрыг" на прямой работе с регистрами быстрее. Визуально выглядит проще инлайна.
Тогда попробуйте С++ :) GpioA::Pin5::Set(); или pa5::Set(); или даже pa5 = 1; занимает столько же инструкций, сколько прямое GPIOA->BSRR = 1 << 5;
Секрет - в шаблонном классе Gpio, параметр шаблона которого указывает на букву имени порта и через нее на базовый адрес регистров порта. Вложенный в Gpio класс Pin тоже является шаблонным, параметр шаблона - номер пина. По номеру пина получается маска, которая передается в класс Gpio в его шаблонный метод SetPins в виде параметра шаблона. Ну и в финале, посредством using определяются короткие псевдонимы GpioA, GpioB, Pin0, Pin1 и тд.
Макросы для этого хоть и используемая, но очень уж архаичная конструкция.
Потрогал лапой паяльник
Сообщения: 302
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Не люблю С++ :)
Понял, спасибо. Надо подумать. Конечно, подобное даёт больше плюшек.
Но тяжко отказываться от "8-битных" привычек. Даже линейным кодом грешу часто, пока не станет неудобно.
Пытался на такое перейти с CH32, но как-то кривее получилось, чем с макросами. Попробую ещё раз.
Вымогатель припоя
Сообщения: 544
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

Конечно С++ неидеален, в нем много недостатков. Как, впрочем, в любом языке. Но альтернатив фактически то и нету, поскольку нужна одновременно и близость к железу, и достаточно хорошая от него абстракция.
Ардуина именно С++ взяла как основной язык. Просто в скетчах обычно никто не пользуется плюшками языка, кроме разве что синтаксиса области видимости :: .
У меня был довольно длительный переходный процесс. Однако концепция шаблонных классов для описания такой периферии, как порты, таймеры, интерфейсы, мне очень понравилась.
OKF
Это не хвост, это антенна
Сообщения: 1422
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

Rapra писал(а): Чт июн 25, 2026 06:07:11Просто в скетчах обычно никто не пользуется плюшками языка...
Да, да, конечно. Начинающие не используют, а матёрые так вовсю. Плюсы же. Ничто не мешает использовать во весь рост! Иной раз так накрутят, что волосы дыбом.
Вымогатель припоя
Сообщения: 570
Зарегистрирован: Вт окт 01, 2024 15:22:33

Сообщение Adrift »

OKF писал(а): Чт июн 25, 2026 11:52:31Да, да, конечно. Начинающие не используют, а матёрые так вовсю. Плюсы же. Ничто не мешает использовать во весь рост!
Если говорить про ядро и официальные либы, то там ограничение на минимум С++11, после которого уже 5 новых стандартов выходило. А если это что-то любительское, то откуда там матерые программисты возьмутся? Матерые ардуино обычно не используют.
OKF
Это не хвост, это антенна
Сообщения: 1422
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

Матёрые - всё относительно. И Ардуино тут не ограничитель. А матёрые где хош случаются.)
Вымогатель припоя
Сообщения: 544
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

Я с Ардуиной очень слабо знаком, только помелочи. И то, что доводилось видеть - это в основном использование namespace.
Версия языка С++11 довольно слабенькая.
OKF писал(а): Чт июн 25, 2026 11:52:31Иной раз так накрутят, что волосы дыбом.
Ну, с дуру то можно и член сломать. Любая крайность нежелательна.
Потрогал лапой паяльник
Сообщения: 302
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Rapra писал(а): Чт июн 25, 2026 16:13:38 с Ардуиной очень слабо знаком, только помелочи.
Попробовал на днях. Мне не понравилось. Казалось бы, чем меньше у человека опыта - тем больше надо давать ему информации, чтобы видел, как, что, где, куда. А она как чёрный ящик. Потом полез в Adafruit-ную библиотеку работы с дисплеями. Все же хвалят, какая она классная. Хотел опыт перенять. Ну, после неё перестал себя считать худшим программистом в мире :)
OKF
Это не хвост, это антенна
Сообщения: 1422
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

Да, библиотеки зачастую сделаны тяп-ляп. Такое впечатление, что многое делалось на скорую руку. Зато всё открыто - бери дорабатывай.)
Вымогатель припоя
Сообщения: 544
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

Библиотеки, идущие к дисплеям - это просто демки, чтобы проверить работоспособность дисплея. Дорабатывать там особо нечего, там как в анекдоте про ремонт автомобиля - открутить передний и задний бампер и вложить между ними новый автомобиль.
Графическая библиотека не должна быть привязана к конкретному дисплею. Построение графики - это отдельная сложная и объемная задача. А задача библиотеки дисплея - это взаимодействие с дисплеем в рамках его команд, описанных в даташите. В даташите дисплея ведь нет команды DrawLine? Значит, и в библиотеки дисплея её не должно быть.
Ответить

Вернуться в «AVR»