-
- Чего непонятного? mse homjak(409 знак., 11.05.2022 23:12)
- Для дополнительной помехоустойчивости Tyмблep(94 знак., 11.05.2022 23:51)
- Можно сам UART использовать как таймер. По первому TXC переключить
ножку TX в GPIO и "отправить" пустой символ. А уже по второму TXC
переключать драйвер. Будет пауза в один символ. - LightElf(12.05.2022 02:21)
- Интересное решение, однако надо 1,5. Tyмблep(103 знак., 12.05.2022 19:08)
- Никто не мешает аналогично сделать паузу любой длины. Отправляете
2, 3, 4 символа, меняете скорость/битность и тыды. Зависит от
наличных ресурсов: у STM обычно до чёртовой страсти таймеров (но
фигово, что они все разные) , а у более других камней не всегда так
шоколадно. Бывает и 4 таймера на 11 UART-ов. Поэтому считаю вариант
с использованием только ресурсов самого UART более универсальным. - LightElf(14.05.2022 14:58)
- Смысл использования таймера в другом. Tyмблep(578 знак., 23.05.2022 16:37)
- Проще сделать сколько нужно программных каналов на одном аппаратном
таймере. - Cкpипaч(14.05.2022 15:49)
- Проще, но точность времянок страдает. Задержка в полтора символа на
115200/230400 да на 3-4 UART-ах сразу - ну такое себе. А уж если
под линухом каким - совсем туши свет. LightElf(115 знак., 14.05.2022 22:52)
- Создавать таймеры под Линуксом "врукопашную" - полный бред. Для этого есть select. - Cкpипaч(15.05.2022 09:34)
- Я на ассемблере делал (на Си не умел ещё). Появляется задача
сделать выдержку. В этот момент, относительно текущего значения
таймера, вычисляется значение, при котором должна быть сработка.
Это значение помещается в очередь. В компаратор таймера заносится
ближайшее, по времени, значение. В прерывании таймера оповещается
соответствующий заказчик выдержки и в компаратор загружается
следующее, по времени значение. Отлично работало! - Nikolay_Po(14.05.2022 17:16)
- Мне проще думать "в обратной симметрии". С каким-то шагом
вызываются "обрабочики", они проверяют разные всякие условия,
смотрят задержку (разница сохраненного значения таймера и текущего)
и делают разные действия. - Cкpипaч(14.05.2022 17:56)
- У меня требование к точности времянок было. Минимально допустимая задержка начиналась от нескольких мкс, а выдержка была с джиттером в несколько периодов инструкций. Ассемблер... Архитектурно, сразу несколько прерываний в один момент не пересекались. Далеко не ОСРВ была. - Nikolay_Po(14.05.2022 18:57)
- +1. Давно к этому пришёл. Минимум требований: 1) достаточно одного
таймера на всех, 2) нужно просто следить, что обработчики
вызываются достаточно часто, чтобы гарантировать приемлемый
джиттер. Обработчики друг от друга никак не зависят. Сплошные
удобства, короче. - SciFi(14.05.2022 18:02)
- Из "тонкого тьюнинга". На самом деле, прерывание таймера -
"пустое". Биг-луп, начинается командой halt() и стоит ждет
у моря погодылюбого прерывания. В том числе, таймера. Все проверки - просто в биг-лупе. - Cкpипaч(14.05.2022 18:14)- Так точно. Прерывания практикую, когда биг луп с необходимой
времянкой ну точно не справится, что бывает крайне редко. - SciFi(14.05.2022 18:16)
- Я тоже пришёл к мнению что выбирать нужно из двух вариантов - 1) биглуп без прерываний 2) РТОСина со всем фаршем. Полумеры фтопку. - =AlexD=(23.05.2022 14:07)
- У дураков мысли сходятся :) - Cкpипaч(14.05.2022 18:17)
- Доставай белое :-) - SciFi(14.05.2022 18:25)
- Жена привезла с Кипра "Пять Королей" (это бренди такой :-) - Cкpипaч(14.05.2022 21:22)
- Доставай белое :-) - SciFi(14.05.2022 18:25)
- Так точно. Прерывания практикую, когда биг луп с необходимой
времянкой ну точно не справится, что бывает крайне редко. - SciFi(14.05.2022 18:16)
- Из "тонкого тьюнинга". На самом деле, прерывание таймера -
"пустое". Биг-луп, начинается командой halt() и стоит ждет
- Мне проще думать "в обратной симметрии". С каким-то шагом
вызываются "обрабочики", они проверяют разные всякие условия,
смотрят задержку (разница сохраненного значения таймера и текущего)
и делают разные действия. - Cкpипaч(14.05.2022 17:56)
- Проще, но точность времянок страдает. Задержка в полтора символа на
115200/230400 да на 3-4 UART-ах сразу - ну такое себе. А уж если
под линухом каким - совсем туши свет. LightElf(115 знак., 14.05.2022 22:52)
- Никто не мешает аналогично сделать паузу любой длины. Отправляете
2, 3, 4 символа, меняете скорость/битность и тыды. Зависит от
наличных ресурсов: у STM обычно до чёртовой страсти таймеров (но
фигово, что они все разные) , а у более других камней не всегда так
шоколадно. Бывает и 4 таймера на 11 UART-ов. Поэтому считаю вариант
с использованием только ресурсов самого UART более универсальным. - LightElf(14.05.2022 14:58)
- Интересное решение, однако надо 1,5. Tyмблep(103 знак., 12.05.2022 19:08)
- Ну, не знаю. Если это хост, то мобуть, если слэйв, то нуивона.
Хосту приспичит, а тут 1,5 символа на шине. - mse homjak(12.05.2022 00:12)
- Да как приспичит - без пауз в сети асинхронная передача невозможна. Tyмблep(46 знак., 12.05.2022 19:11)
- Ну, по памяти, Модбас, это один хост и куча слэйвов? ИМХО, это хост
должен обеспечить такой зазор в передачах, чтобы все гарантированно
словили конец транзакцыи и напряглись ловить следующую. - mse homjak(12.05.2022 21:38)
- В стандарте "зазор" четко прописан. - Cкpипaч(12.05.2022 21:40)
- Спору нет. Только кто его должен обеспечить? Чота кажется, что
слэйв, занимающий шину, плохой вариант. Оттарабанил и по последнему
стоп-биту отвалился от шины. А дальше пусть хост таймаут считает, у
него
головапамять большая. - mse homjak(12.05.2022 21:48)- Смотри, как я сделал в одной из систем. Tyмблep(1188 знак., 23.05.2022 13:48)
- ХЗ, канешно, но, по моему, паранойа какойты. Если есть растяжки, зачем всё это? - mse homjak(23.05.2022 19:14)
- Читайте стандарт, там все написано. - Cкpипaч(12.05.2022 21:51)
- Приспичит, почитаю. - mse homjak(12.05.2022 21:56)
- Смотри, как я сделал в одной из систем. Tyмблep(1188 знак., 23.05.2022 13:48)
- Спору нет. Только кто его должен обеспечить? Чота кажется, что
слэйв, занимающий шину, плохой вариант. Оттарабанил и по последнему
стоп-биту отвалился от шины. А дальше пусть хост таймаут считает, у
него
- В стандарте "зазор" четко прописан. - Cкpипaч(12.05.2022 21:40)
- Ну, по памяти, Модбас, это один хост и куча слэйвов? ИМХО, это хост
должен обеспечить такой зазор в передачах, чтобы все гарантированно
словили конец транзакцыи и напряглись ловить следующую. - mse homjak(12.05.2022 21:38)
- Да как приспичит - без пауз в сети асинхронная передача невозможна. Tyмблep(46 знак., 12.05.2022 19:11)
- Можно сам UART использовать как таймер. По первому TXC переключить
ножку TX в GPIO и "отправить" пустой символ. А уже по второму TXC
переключать драйвер. Будет пауза в один символ. - LightElf(12.05.2022 02:21)
- Для дополнительной помехоустойчивости Tyмблep(94 знак., 11.05.2022 23:51)
- Чего непонятного? mse homjak(409 знак., 11.05.2022 23:12)