-
- Я понял, что меня смущает: вывод принадлежит периферии, даже если
это (как частный случай) GPIO. То есть хочется сказать UART-у
что-то вроде "цепляйся к TX3 = PD8, RX = PD9" и хоба - всё готово.
Для примера задачу можно упростить предельно, прибив гвоздями
битрейт, чётность и прочие параметры самого порта. Инициализировать
структурой периферию - норм, а вывод имеет номер и порт, то есть
двухкомпонентная адресация. И номер альтернативной функции для
каждого случая Dingo(180 знак., 13.05.2022 10:59)
- Я отказался от идеи тащить пины в классы UART, SPI и т.д. GPIO это отдельный блок, настраиваю его сразу после тактирования один раз проходясь по схеме. Бывает, что по ходу работы надо менять режимы пинов, тогда это в общих алгоритмах через вызов методов класса. В классах других периферийных (и внешних исполнительных) модулей реализую только их логику. Например, в класс какого-нибудь аттенюатора, висящего на SPI или I2C шаблонным параметром передаю соответствующий порт VladislavS.(1123 знак., 14.05.2022 07:55)
- А ты проверь, возможно константную таблицу с константным индексом
компилятор сократит до загрузки константы. Может быть придётся
поиграть с static const. - =AlexD=(13.05.2022 11:02)
- +1. Но тут ещё одно соображение: ну ОК, после нескольких дней
перетирания темы в пустыне и отладки кода с таблицей на все случаи
жизни окажется, что несколько сэкономленных байт никому не были
нужны. Так себе размен. - SciFi(13.05.2022 11:07)
- Это вопрос любого библиотечного кода, он начинает "окупаться" с
N-ного проекта. Казалось бы, потратил пару часов, чтобы сэкономить
пару байт на дёрганьи ноги. Но ведь компилятор теперь будет
неустанно это делать везде из строки к строке, из проекта к
проекту. Отсюда следствие, вложиться надо в то, что чаще всего
используется или сложно пишется даже один раз (разложить на уровни
USB- стек, например). - VladislavS.(14.05.2022 08:37)
- Вот именно. А в наше непростое время так далеко смотреть в
завтрашний день могут не только лишь все... Но есть ещё одно
соображение: получение новых знаний, освоение инструментов, просто
удовлетворение любопытства, в конце концов. - SciFi(14.05.2022 08:48)
- Как по мне, просто хуярить продукт - куда дальновиднее. Cкpипaч(172 знак., 14.05.2022 10:06 - 13:04)
- За 25 лет моей практики С как был так и остался. И никуда не
денется из-за количества наработок и разработчиков. А вот С++ за
это время развился в мощнейший инструмент эмбеддера, позволяющий
как писать более оптимальный код на самом низком уровне, так и
легко масштабироваться в большие приложения. Но, в эмбедд он,
скорее всего, окончательно не придёт из-за этой серой массы,
считающих знания лишними. Так и будет только энтузиастами
использоваться. А остальные будут в VladislavS.(29 знак., 14.05.2022 12:49)
- А мне нужно было сварганить по-быстрому устройство, отражающее в
веб несколько графиков - я часок погуглил, нашел подходящий
фреймворк и к концу дня показывал работающий прототип заказчику. - Cкpипaч(14.05.2022 13:03)
- Ну всё верно. Нашёл подходящий инструмент, хуяк-хуяк и в продакшн
:) Имеет место быть, не всё же велосипедостроением заниматься. Но
ведь кто-то должен этот инструмент сначала сделать? - VladislavS.(14.05.2022 13:48)
- Уже. Все уже есть. Причем по десятому-двадцатому кругу. Без наращивания функционала, просто "в ногу с технологиями". Cкpипaч(71 знак., 14.05.2022 14:25)
- Ну всё верно. Нашёл подходящий инструмент, хуяк-хуяк и в продакшн
:) Имеет место быть, не всё же велосипедостроением заниматься. Но
ведь кто-то должен этот инструмент сначала сделать? - VladislavS.(14.05.2022 13:48)
- А мне нужно было сварганить по-быстрому устройство, отражающее в
веб несколько графиков - я часок погуглил, нашел подходящий
фреймворк и к концу дня показывал работающий прототип заказчику. - Cкpипaч(14.05.2022 13:03)
- За 25 лет моей практики С как был так и остался. И никуда не
денется из-за количества наработок и разработчиков. А вот С++ за
это время развился в мощнейший инструмент эмбеддера, позволяющий
как писать более оптимальный код на самом низком уровне, так и
легко масштабироваться в большие приложения. Но, в эмбедд он,
скорее всего, окончательно не придёт из-за этой серой массы,
считающих знания лишними. Так и будет только энтузиастами
использоваться. А остальные будут в VladislavS.(29 знак., 14.05.2022 12:49)
- Как по мне, просто хуярить продукт - куда дальновиднее. Cкpипaч(172 знак., 14.05.2022 10:06 - 13:04)
- Вот именно. А в наше непростое время так далеко смотреть в
завтрашний день могут не только лишь все... Но есть ещё одно
соображение: получение новых знаний, освоение инструментов, просто
удовлетворение любопытства, в конце концов. - SciFi(14.05.2022 08:48)
- Это и останавливает. Спросил, потому как может кто нашёл такой велосипед или сам уже сделал. - Dingo(13.05.2022 11:09)
- Это вопрос любого библиотечного кода, он начинает "окупаться" с
N-ного проекта. Казалось бы, потратил пару часов, чтобы сэкономить
пару байт на дёрганьи ноги. Но ведь компилятор теперь будет
неустанно это делать везде из строки к строке, из проекта к
проекту. Отсюда следствие, вложиться надо в то, что чаще всего
используется или сложно пишется даже один раз (разложить на уровни
USB- стек, например). - VladislavS.(14.05.2022 08:37)
- +1. Но тут ещё одно соображение: ну ОК, после нескольких дней
перетирания темы в пустыне и отладки кода с таблицей на все случаи
жизни окажется, что несколько сэкономленных байт никому не были
нужны. Так себе размен. - SciFi(13.05.2022 11:07)
- Я понял, что меня смущает: вывод принадлежит периферии, даже если
это (как частный случай) GPIO. То есть хочется сказать UART-у
что-то вроде "цепляйся к TX3 = PD8, RX = PD9" и хоба - всё готово.
Для примера задачу можно упростить предельно, прибив гвоздями
битрейт, чётность и прочие параметры самого порта. Инициализировать
структурой периферию - норм, а вывод имеет номер и порт, то есть
двухкомпонентная адресация. И номер альтернативной функции для
каждого случая Dingo(180 знак., 13.05.2022 10:59)