Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
После получения этого символа в фоновом процессе (не в обработчике !) запрещайте прерывание от UART и разбирайте строку ...
Отправлено
Igor_Koval
(95.132.97.43)
12 апреля 2010, г. 14:12
В ответ на:
Ну почему же неправильно? Прием строки идет до символа 0xA, далее прием запрещается и строка обрабатывается. Чего тут неправильно?
отправлено dshabrov 12 апреля 2010, г. 14:08
Составить ответ
|
Вернуться на конференцию
Ответы
Ответ: 1)Запрещать прерывание по приему или сам прием? Кажется логичнее запрещать прием, тогда в буфере не будет мусора. 2)Как запрещать?
-
dshabrov
(12.04.2010, 14:44:46
84.21.231.242
,
пустое
)
Я бы вообще ничего не запрещал. Пусть себе принимает, он для этого и предназначен ...
-
Igor_Koval
(12.04.2010, 14:49:10
95.132.97.43
,
пустое
)
Не люблю нелогичные вещи. Принял конец строки - запретил прием - обработал - разрешил прием. Это логично. К тому же если делать иначе в буфере UDR будет мусор.
-
dshabrov
(12.04.2010, 14:57:34
84.21.231.242
,
пустое
)
Ответ: Вобщем, фильтр из прерывания убрал, оставил только отслеживание размера буфера и проверку на символ 0xA
-
dshabrov
(12.04.2010, 15:19:42
84.21.231.242
, 500 байт)
Хороший фильтр. Песец всему фильтр. if (temp==0xA|RSVCntr > 10) >>
-
VasilyS
(12.04.2010, 21:54:25
80.92.96.25
, 245 байт)
Естественно, символы получайте по прерыванию и в обработчике складывайте их в буфер приемника
-
Igor_Koval
(12.04.2010, 14:13:4
95.132.97.43
,
пустое
)
Ответ: А почему символы нельзя складывать в буфер именно в обработчике? Ведь это удобно!
-
dshabrov
(12.04.2010, 14:15:51
84.21.231.242
,
пустое
)
Так я и написал, что надо складывать именно в обработчике !
-
Igor_Koval
(12.04.2010, 14:21:49
95.132.97.43
,
пустое
)
Блин, опять я не в терминах. У меня символы принимаются, анализируется и складываются в буфер прямо в фоновом процессе.
-
dshabrov
(12.04.2010, 14:28:50
84.21.231.242
, 532 байт)
Так делать (+)
-
Igor_Koval
(12.04.2010, 14:32:55
95.132.97.43
, 409 байт)
Ответ: В сильно загруженой системе возможен тогда прием мусора в буфер после символа 0xA. Логично запрещать прием после принятия символа окончания именно в прерывании. Или я не прав?
-
dshabrov
(12.04.2010, 14:37:28
84.21.231.242
,
пустое
)
Ну и что ?
-
Igor_Koval
(12.04.2010, 14:48:24
95.132.97.43
, 549 байт)
Беда в том, что буфер конечен. И как заложено в требованиях при приеме больше 10 символов счетчик обнуляется и буфер пишется заново. Поэтому и требуется запрещать прием.
-
dshabrov
(12.04.2010, 14:54:12
84.21.231.242
,
пустое
)
Не делайте 10 байт, сделайте 20 (+)
-
Igor_Koval
(12.04.2010, 15:00:53
95.132.97.43
, 705 байт)
Да, блин. А в С51 это делается командой RI=0. Кому - то за такой регресс нужно руки оторвать...
-
dshabrov
(12.04.2010, 15:11:35
84.21.231.242
,
пустое
)
Ответ: Наврал! REN = 0
-
dshabrov
(12.04.2010, 15:13:50
84.21.231.242
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
сложите три и три:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru