Пн ноя 29, 2021 23:09:15
Вт ноя 30, 2021 06:23:10
Вт ноя 30, 2021 12:59:53
Вт ноя 30, 2021 13:44:37
Вт ноя 30, 2021 16:20:47
Вт ноя 30, 2021 17:06:03
Вт ноя 30, 2021 18:32:08
Вт ноя 30, 2021 18:41:11
Вт ноя 30, 2021 19:00:51
Вт ноя 30, 2021 20:26:16
Так ведь ее не надо писать каждый раз с нуля. Писать надо фактически только то, что в main.cкак это может быть проще?
Ну так в этом и смысл буферизации: размениваем память на быстродействие или отклик.в вашем еще куча дел с буферами, плюс расход ОЗУ на сам буфер?!
Да мало ли. Хотите, можно usb реализовать (а для vusb периодичность poll'а важна). Можно всякие датчики опрашивать. На самом деле не удивительно что возникает проблема с ответом на подобный вопрос: сложно описать плюсы того, что просто работает и не требует лишнего внимания.чисто для справки напомню, что и в моём варианте "не каждый день" все писать приходится. а куда девать "уйму высвобождающегося процессорного времени", за минимум 10 лет моего общения на форуме никто так и не смог рассказать...
Вт ноя 30, 2021 21:01:48
так и с выводом методом поллинга аналогично. то есть это не аргумент в пользу прерываний.COKPOWEHEU писал(а):Так ведь ее не надо писать каждый раз с нуля.
тут я бы задумался над ценностью этого отклика и быстродействия - оно на самом деле того стоит?COKPOWEHEU писал(а):размениваем память на быстродействие или отклик
и при чем тут USART? поллить USB во время работы с USART-ом? так сам бог повелел в USART без прерываний писать, а USB поллить по таймерным прерываниям. и тут, чем меньше прерываний, тем стабильнее поллинг. так что и здесь ваш вариант работы с USART не выглядит предпочтительнее...COKPOWEHEU писал(а):для vusb периодичность poll'а важна
специально под меня вы писали свой буфер кольцевой (ну не считать же на самом деле проблемой функцию вывода символа для stdio?!). что лишний раз говорит, что в вашем примере писанины (сиречь - работы) больше...COKPOWEHEU писал(а):реализацию stdio мне пришлось писать под вас специально
Вт ноя 30, 2021 21:45:04
Чтобы что? Для чего именно вы используете именно форматый вывод вместо обычного?с моей точки зрения stdio очень даже удачно может применяться в AVR
Откуда вдруг взялся поллинг если вы за задержки агитировали?так и с выводом методом поллинга аналогично. то есть это не аргумент в пользу прерываний.
Далеко не всегда. Но и задачи, где это нужно, бывают.тут я бы задумался над ценностью этого отклика и быстродействия - оно на самом деле того стоит?
Все равно ведь лучше вашего варианта на задержках.и при чем тут USART? <...> здесь ваш вариант работы с USART не выглядит предпочтительнее...
Нет, только stdio. Сам-то uart был давным-давно.специально под меня вы писали свой буфер кольцевой
Вт ноя 30, 2021 22:11:10
да практически для всего: printf применяю по максимуму везде, где требуется вывод текста и где нет лимита на размер кода (типа attiny13). намного удобнее и проще, чем городить под каждый случай пирамиду itoa и т.п. даже на LCD1602 через printf делал вывод... но не восхитился - позиций крайне мало, негде развернуться...COKPOWEHEU писал(а):Для чего именно вы используете именно форматый вывод вместо обычного?
я за задержки не агитировал (хотя ничего против принципиально не имею). я агитировал за работу с USART на передачу без прерываний, просто по ожиданию готовности буфера к приему очередного символа - это разве не поллинг?COKPOWEHEU писал(а):Откуда вдруг взялся поллинг если вы за задержки агитировали?
не спорю, бывают. но само решение от этого проще не становитсяCOKPOWEHEU писал(а):Но и задачи, где это нужно, бывают
откуда вы взяли задержки?! о них и слова не было... разве что вы превратно поняли "задержку на время вывода строки" - принцип блокирующего вывода printf.COKPOWEHEU писал(а):Все равно ведь лучше вашего варианта на задержках.
ну, раз вы не пользовались stdio, вам, конечно пришлось писать... я-то тут ни при чем.COKPOWEHEU писал(а):Нет, только stdio
Вт ноя 30, 2021 22:44:38
Теперь уже я не могу не поинтересоваться примером кода реализации stdio без прерываний и с минимальной многозадачностью. Хотя бы на уровне конечного автомата и обмена короткими сообщениями.я за задержки не агитировал (хотя ничего против принципиально не имею). я агитировал за работу с USART на передачу без прерываний, просто по ожиданию готовности буфера к приему очередного символа - это разве не поллинг?
Когда вся задача состоит в написании десятка шаблонных строк, вряд ли имеет смысл сравнивать что там проще, что сложнее.не спорю, бывают. но само решение от этого проще не становится
Собственно, из ваших слов и взял.лично я, хоть меня и критиковали не раз за такой подход, в исключительно редких случаях реализовывал передачу по прерываниям, в основном меня всегда удовлетворяет передача по тупому ожиданию:
откуда вы взяли задержки?! о них и слова не было...
ну, раз вы не пользовались stdio, вам, конечно пришлось писать... я-то тут ни при чем.
Вт ноя 30, 2021 22:50:58
только с этим не ко мне: я многозадачность реализую при помощи прерываний не для ввода-вывода ТЕКСТА, а для всяких процессов, в которых человек не участвует. поэтому stdio у меня блокирующий, а вот, например, измерение напряжения, которое по USART я наблюдать хочу - по прерываниям.COKPOWEHEU писал(а):не могу не поинтересоваться примером кода реализации stdio без прерываний и с минимальной многозадачностью
так больших и сложных задач не так уж и много в реальности непрофессионального программирования.COKPOWEHEU писал(а):Когда вся задача состоит в написании десятка шаблонных строк, вряд ли имеет смысл сравнивать что там проще, что сложнее.
Ср дек 01, 2021 09:09:32
Ср дек 01, 2021 09:44:42
ну вот смотрите, что я по этому поводу думаю.COKPOWEHEU писал(а):Я говорил скорее о многозадачном.
Ср дек 01, 2021 10:08:25
Ср дек 01, 2021 10:23:25
Ср дек 01, 2021 10:48:29
А что на счет простейшего конечного автомата? То есть каждая задача выполняет одну итерацию и возвращает управление в основной цикл. Для задержек очень удобно выделить какой-нибудь таймер и соответственно сравнивать его значение с переменной. Насколько я понимаю, примерно такое же вы называете проверкой флагов. И да, такой подход для UART или других интерфейсов тоже имеет право на жизнь: в основной цикл добавляется задача поллинга, которая складывает байтики из интерфейса в буфер.я делал несколько подходов к различным многозадачным ОС для МК: OSA, FreeRTOS и еще куча разных поделок из интернета