Pull to refresh
-11
@Eddy_Emread⁠-⁠only

User

Send message
Это невозможно сделать на такой элементарщине. Только несколько команд и только для одного-двух голосов со строго определенной интонацией.
С++ — для гуйни. Для нормальных задач этот говноязык непригоден.
Но, думаю, ардуйне это не понять.
Я знаю, что извращенцев везде полно. Вон, некоторые даже жабку пытаются в МК запихать. И им пофиг, что вместо одного килобайта их код десятки килобайт занимает!
Ардуйня — такая ардуйня…
А жутчайшие библиотеки?
Ē-моē, там еще и C++! Вы б еще пхытон запихали на микроконтроллер! Жуть!!!
Какой ужас! Это что — эпидемия ардуйни?
Ну, для начала приведу очень удобное: «все есть файл». Т.е. все равно, подключен у вас МК по RS-232, RS-485 или USB (в режиме CDC) — вы просто открываете файл устройства, делаете нужные ioctl, и работаете обычными read/write. Т.е. код один и тот же вне зависимости от подключения!
Модули ядра тоже разрабатывать значительно проще, чем в игропрошивке «драйвера» писать.
Документация удобная: набрал man что-то → получил.
Да и просто баш с coreutils — как вы там без них существуете? Кактусы грызете?
Зря. Я не представляю, как люди в виндах программированием занимаются. Это ж как на одноколесном велосипеде с квадратными колесами ехать, одновременно на ходу его ремонтируя!
Тем более — работа с железом. Все-таки, прошивка для игровых приставок очень плохо выполняет роль операционной системы общего назначения!
Какой смысл проверять, если в линуксе клоны отлично работают?
Для микроконтроллеров.
Кстати, посмотрел упомянутую библиотечку по работе с радиомодулями. Впечатлило. Я как раз такие хотел использовать, думал, придется неделю-две тратить, чтобы свой интерфейс реализовать. А тут готовое.
Удобно.
Надо будет только с С++ на С переписать и вынести аппаратно-зависимые интерфейсы отдельно, чтобы базовый код можно было как на одноплатнике, так и на микроконтроллере применять.

Жаль, для работы с ЖК-экранами до сих пор не встречал приличных библиотек. Там уже стырить готовенькое не получится ☹
Ну, я и сам поспешил. Увидев до боли знакомую delay(), решил, что код для микроконтроллера. Потому как в glibc для этих целей используется usleep или select.
Вы подключаете радиомодуль по SPI → как только что-то туда написали, так сразу получили ответ.
Вывод: отдельный поток должен постоянно опрашивать радиомодуль на наличие новых данных. Т.е. в отличие от UART'а, здесь просто нужно в цикле писать в SPI данные, затем проверять ответ. Вот в этом потоке пишите свои задержки в каком угодно количестве — на выполнение основного потока они не повлияют!
На «малинке» линукс стоит. Он позаботится о прерываниях. Ваша задача — реализовать несколько потоков и синхронизовать их.
Скажем, как происходит работа с UART? Да элементарно: при помощи select (ну, на любителя: кому-то может eselect больше нравиться, а кому-то poll) проверяем, есть ли данные в буфере порта. Если есть, считываем их и заполняем промежуточный циклический буфер. А его уже обрабатываем: если нужно построчно читать, не принимаем данные, пока не появится конец строки; если посимвольно — считываем очередной символ и обрабатываем.
Можно вообще запихать работу в отдельный поток, который будет блокировать ввод-вывод. Но на работе основного цикла в main() это никак не скажется.
В данном случае, на мой взгляд, «малинка» избыточна. С другой стороны, т.к. цена на нее вполне вкусная, зачастую проще ее использовать, а не городить что-нибудь свое, скажем, на каком-нибудь STM32F407.
А вот если нужно много GPIO, то уже придется выбирать: либо к «малинке» или «кубиборде» подключать микроконтроллеры, либо сразу взять микроконтроллер с нужными интерфейсами.
Просто нужно сразу привыкать делать все по-человечески, а не тяп-ляп.
Графически можно найти, что действительных корня три, лежат они в районе: x=-1.8 первый, x=-1.6 — второй и x=1.25 — третий.
Можно простой линейной интерполяцией прикинуть, чему будут равны корни. Навскидку, x₁=-1.802, x₂=-1.618, x₃=1.247.
Поработайте с большим количеством периферии — поймете, зачем.
Да, достаточно man tty_ioctl почитать, чтобы понять, как этими ногами управлять. Там и пример проверки состояния DTR есть в конце.
Там SPI-интерфейс. Все просто.
За delay() убивать надо!
Прерывания для кого придумали? Реализуйте конечные автоматы, а не черт-те что!

Information

Rating
Does not participate
Location
Россия
Registered
Activity