конец приема в UART через Таймер
- Войдите на сайт для отправки комментариев
Сб, 25/04/2020 - 11:47
Здраствуйте, возможно ли отслеживать конец приема сообщения через таймер? т.е настроить таймер на 1мс и сбрасывать пока приходят байты. Как только байты перестают поступать - таймер вызывает прерывание... Например если скорость 9600, то сброс значения таймера будет происходить каждую 0.1мс (приблизительно).
возможно
если скорость 9600, то сброс значения таймера будет происходить каждую 0.1мс (приблизительно).
что-то у вас плохо с математикой. ошиблись почти на порядок
а как правильно сбрасывать значение? Просто в RX прерывании UARTa написать TCNT = 0?
если скорость 9600, то сброс значения таймера будет происходить каждую 0.1мс (приблизительно).
что-то у вас плохо с математикой. ошиблись почти на порядок
я просто разделил 1 на 9600 и получилось 0.1041мс
я просто разделил 1 на 9600 и получилось 0.1041мс
9600 - это боды
9600 - это боды
надо еще на 8 бит помножить? ну еще стоп биты и четность, если есть
т.е 9600 8-1-N = 0.9375мс так?
Скачайте Freemodbus 1.5 . Там есть примеры. Пример RTU для AVR как раз Ваш случай. Принцип RTU - как только в линии тишина больше чем 2.5 символа - значит пакет пришёл. Поэтому по приходу каждого символа перезаряжают таймер. Если таймер сработал - то пакет готов к обработке. Путь в архиве freemodbus-v1.5.0.zip\freemodbus-v1.5.0\demo\AVR\port\porttimer.c и около него.
Спасибо