|
Останов UART в Atmega, как остановить передачу в любом месте ? |
|
|
|
 |
Ответов
|
Jul 17 2006, 08:00
|

Профессионал
    
Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380

|
Если байт попал в шифтер ничего уже сделать нельзя, автомат запущен, и сдвиг отработает. Единственное, что можно попробовать, это обнулить UBRR, но это достаточно лихой номер и не факт, что сработает.
--------------------
Вони шукають те, чого нема, Щоб довести, що його не існує.
|
|
|
|
|
Jul 17 2006, 08:24
|
Частый гость
 
Группа: Validating
Сообщений: 169
Регистрация: 10-11-04
Из: Челябинск
Пользователь №: 1 088

|
Цитата(beer_warrior @ Jul 17 2006, 11:00)  Если байт попал в шифтер ничего уже сделать нельзя, автомат запущен, и сдвиг отработает. Единственное, что можно попробовать, это обнулить UBRR, но это достаточно лихой номер и не факт, что сработает. Ясно. Жаль. Задумка была нацелена на экономное решение приёма пакетов по протоколу MODBUS-RTU. Оно работает в симплексном режиме, и признаком ошибки является расстояние между байтами в пакете более 1.5 символа (ну, скажем 2, для круглости) и признаком конца пакета (и уже не ошибки) время простоя приёмника более 3.5 символов (для круглости 4). Думал, было бы, раз режим симплексный, отсчитывать интервалы самим UART-ом, пусть бы передатчик молотил и временные интервалы отмерял, но вот если кто-то будет отправлять байты на приём с паузами, то такой символьный таймер хрен остановишь, как выяснилось, и непонятно, что он там сможет намерять. То есть, немного подробнее: когда приходит символ на приёмник, нужно запустить таймер. Некий абстрактный таймер с разрешением примерно 1 символ. Сгодился бы передатчик того-же UART, который бы пулял в космос, и генерил бы прерывания, которые я бы асинхронно считал. Приём байт тоже асинхронный, так что корячится просто использование таймера, которых что-то мало осталось на чипе. А касательно перенастройки ножки - сам включеный UART её переопределяет и он на ней самй главный. В общем, опять AVR-ка показала свою негибкость.
Сообщение отредактировал impatt - Jul 17 2006, 08:29
|
|
|
|
|
Jul 17 2006, 08:29
|

Знающий
   
Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206

|
Цитата(impatt @ Jul 17 2006, 14:24)  Цитата(beer_warrior @ Jul 17 2006, 11:00)  Если байт попал в шифтер ничего уже сделать нельзя, автомат запущен, и сдвиг отработает. Единственное, что можно попробовать, это обнулить UBRR, но это достаточно лихой номер и не факт, что сработает.
Ясно. Жаль. Задумка была нацелена на экономное решение приёма пакетов по протоколу MODBUS-RTU. Оно работает в симплексном режиме, и признаком ошибки является расстояние между байтами в пакете более 1.5 символа (ну, скажем 2, для круглости) и признаком конца пакета (и уже не ошибки) время простоя приёмника более 3.5 символов (для круглости 4). Думал, было бы, раз режим симплексный, отсчитывать интервалы самим UART-ом, пусть бы передатчик молотил и временные интервалы отмерял, но вот если кто-то будет отправлять байты на приём с паузами, то такой символьный таймер хрен остановишь, как выяснилось, и непонятно, что он там сможет намерять. В общем, опять AVR-ка показала свою негибкость. Сделайте таймер интервалов на таймере, это будет проще и прямее, меньше ошибок допустите. Делать, как хотите Вы имеет смысл, только если таймера заняты под другие задачи.
--------------------
Пасу котов...
|
|
|
|
Сообщений в этой теме
impatt Останов UART в Atmega Jul 17 2006, 07:42 impatt Цитата(impatt @ Jul 17 2006, 10:42) Заран... Jul 17 2006, 07:58 Andy Mozzhevilov Цитата(beer_warrior @ Jul 17 2006, 14:00)... Jul 17 2006, 08:14  zltigo Цитата(Andy Mozzhevilov @ Jul 17 2006, 11... Jul 17 2006, 08:19 Andy Mozzhevilov Цитата(impatt @ Jul 17 2006, 13:42) Байт ... Jul 17 2006, 08:21 impatt Цитата(Andy Mozzhevilov @ Jul 17 2006, 11... Jul 17 2006, 08:33  impatt Цитата(impatt @ Jul 17 2006, 11:33) [Запи... Jul 17 2006, 08:41 zltigo Цитата(Andy Mozzhevilov @ Jul 17 2006, 11... Jul 17 2006, 08:37 beer_warrior ЦитатаНе помню как в AVR, но в некоторых типах uC ... Jul 17 2006, 09:17 defunct Ну и к чему все это?
Все равно на приемной стороне... Jul 17 2006, 09:45 CDT Цитата(defunct @ Jul 17 2006, 12:45) Ну и... Jul 18 2006, 05:49 Dog Pawlowa Цитата(defunct @ Jul 17 2006, 12:45) В об... Jul 18 2006, 06:00
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|