работа с UART как правильнее?
- Войдите на сайт для отправки комментариев
в общем столкнулся с проблемкой - надо читать УАРТ - данные с жпс, но предполагается использовать современные модули - до 20 гц
328я атмега успевает считаывть 3-4 раза в секунду , при этом она практически непрерывно только и читает порт - соответственно если делать чтото еще - то это тормозит (тк пока не считает верный набор данных, не завершает чтение порта) или работает, но порт не может читать (много порерь, изза чего данные сильно фрагментирует)
так вот посоветуйте что дулать?
у меня 2 мысли
1) - пересесть на СМТ32 и получить 20кб озу и 72мгц проц, а также несколько аппаратных УАРтоы и надеяться что её хватит и жпс обрабатывать и прочие задачи делать не зависая более 10мс (приемлимо для моих задач)
2) поставить 328 только на ЖПС - прием и обработка результатов - передача на второй МК по СПИ готовых данных по запросу
------
вроде как 2й вариант более технически правильный, но не хочется 2 МК использовать....с другой стороны СТМ32 стоит в 2 раза дешевле 328го а ресурсов у неё в десяток раз больше... и надеятся, что за счет быстродействия, она будет успевать и порт читать, и выполнять иные задачи, не упуская ничего с порта....
наиболее правильно - понизить частоту обновления данных с ЖПС, в современных модулях это обычно настраивается. Для земных приложений (а не космоса или крылатых ракет) обновление координат чаще 3-5 раз в секунду абсолютно избыточно.
Если выбирать только из двух ваших вариантов - я бы выбрал СТМ32. Но лично вы - не потянете проект на СТМ.
ну и кстати - если у вас сейчас ардуина зависает более чем на 10мс - наверняка это сказывается "легендарное" качество вашего кода.
Имейте в виду. что СТМ32 тоже программируют на "неправильном и нелогичном" Си, так что не факт, что переезд на 72МГц вам поможет.
спасибо за мнение
да, код у меня не столь печальный, просто на форум я выкладываю так его )
-- по теме
мне достаточно 2 обновления в секунду, тк надо достаточно оперативно видеть изменение курса и скорость
и да, стм32 будет также на ардуиновском IDE писаться...
https://ru.aliexpress.com/item/STM32-ARM-STM32F103C8T6-Minimum-System-De...
Писец - чтение из порта на 20 Гц тормозит 16 МГц. Чую, код там волшебный, аж закачаешься :)
Для справки: у мну на Mega2560 одновременно работают ЧЕТЫРЕ Serial, по которым гоняются данные: конфигуратор постоянно запрашивает данные с контроллера, через ESP вебморда запрашивает данные також, RS-485 мастер опрашивает модули, ну и SIM800 до кучи. Ни-че-го не тормозит, ещё успевает основная логика как-то работать.
Выкиньте ваш блокирующий код вычитывания из Serial в дальний замшелый угол, и перепишите нормально - и ничего не будет тормозить. А то сразу - STM32. А чо не комп взрослый - уж он-то точно справится, правда? :)
чую, код там волшебный, аж закачаешься :)
Да, ладно Вам, ТС ведь всё объяснил:
код у меня не столь печальный, просто на форум я выкладываю так его )
Код у него классный, то он просто нам - дурачкам тут фуфло всякое выкладывает.
А чо не комп взрослый - уж он-то точно справится, правда? :)
С чего бы? Оно, конечно, сделать так, чтобы он не справился непросто, но специалисты имеются и ТС как раз из них :))))