Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Да, если SEI (RETI) перед этим выполнялось
Отправлено
argus98
17 января 2008 г. 15:50
В ответ на:
Сработает ли прерывание UDRE в момент его разрешения?
отправлено Dikoy 17 января 2008 г. 15:34
Составить ответ
|
Вернуться на конференцию
Ответы
А IAR-овские __disable_interrupt(); __restore_interrupt(); и т.п. не срабатывают аки SEI (RETI)? А то они тут всюду понатыканы.
—
Dikoy
(17.01.2008 16:22:20
87.244.18.26
,
пустое
)
disable_interrupt точно не SEI. restore_interrupt==SEI с вероятностью 50%
—
Quasy
(17.01.2008 16:44:15
80.243.9.34
,
пустое
)
Ну она восстанавливает разрешение прерываний из буферной переменной. Видимо и SEI потом делает...
—
Dikoy
(17.01.2008 16:50:38
87.244.18.26
,
пустое
)
Где-нибудь в дальнйшем конечно делает :) . SEI==enable_interrupt
—
Quasy
(17.01.2008 16:53:56
80.243.9.34
,
пустое
)
что такое sei я знаю, асм учили ;) Тока функции enable_interrupt там нету, только __restore_interrupt
—
Dikoy
(17.01.2008 17:04:37
87.244.18.26
,
пустое
)
Тогда в SREG пишут I-бит. Или правда в переменную перед restorе :)
—
Quasy
(17.01.2008 17:15:24
80.243.9.34
,
пустое
)
Ответ:
—
Dikoy
(17.01.2008 17:23:5
87.244.18.26
, 208 байт)
А если перед этим была отправка данных? То есть n байт ушли, потом включили это прерывание.
—
Dikoy
(17.01.2008 15:56:21
87.244.18.26
,
пустое
)
Просто мне нужно понять, как работает чужая прошивка. Есть подозрение, что разрешением прерывания ещё и инициируют отправку данных.
—
Dikoy
(17.01.2008 15:59:59
87.244.18.26
,
пустое
)
Обычно так и делается - готовятся исходные данные для прерывания передатчика, затем включают передачу битом UDRIE
—
argus98
(17.01.2008 16:11:34
81.22.205.230
,
пустое
)
Запросто. Разрешаем прерывание + суём байт в УАРТ. Дальше уже в прерывании автоматически загружается следующий байт
—
-=Shura=-
(17.01.2008 16:02:30
217.21.50.43
,
пустое
)
Только лучше в другой последовательности imho(+)
—
Quasy
(17.01.2008 16:34:44
80.243.9.34
, 693 байт)
UDRE не любит шуток для случаев полудуплекса, например, при сопряжении с RS485 :)
—
Щ.C.
(17.01.2008 16:52:32
144.206.186.102
,
пустое
)
А не надо ничего в УАРТ совать, ISR после разрешения данного прервыания и первый байт анологично отправит, а блокировать, после факта отправки последнего, действительно, в теле этой самой ISR и нужно.
—
Щ.C.
(17.01.2008 16:29:26
144.206.186.102
,
пустое
)
Ну это смотря какой бит - Buffer Empty или Byte Sent, у MSP к примеру есть и тот и другой. Чтоб второй выставился надо сунуть, чтоб первый - не надо
—
-=Shura=-
(17.01.2008 16:34:8
217.21.50.43
,
пустое
)
А прерывание только по второму, Buffer Empty только поллингом
—
-=Shura=-
(17.01.2008 16:34:44
217.21.50.43
,
пустое
)
Дык, UDRE и есть UART Data Register Empty, но для AVR :)
—
Щ.C.
(17.01.2008 16:43:8
144.206.186.102
,
пустое
)
Ни разу не спорю, я для общего случая нопесал :-)
—
-=Shura=-
(17.01.2008 16:47:16
217.21.50.43
,
пустое
)
Похоже. Ибо в одном месте внутри прерывания оно запрещается. То есть как передача пакета закончена, всё глохнет.
—
Dikoy
(17.01.2008 16:09:21
87.244.18.26
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 123:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru