[an error occurred while processing this directive]
Кашу в голове нужно сначала расхлебать.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено BLACKEAGLE 20 февраля 2003 г. 16:12
В ответ на: Ответ: отправлено Deneo 20 февраля 2003 г. 08:42

О каких ожиданиях речь? Какой-такой "критический код"??

Вот пример, пишу прямо с потолка. Не ведаю, с каким МК работаешь, поэтому пишу на х51:


;Подпрограмма подготовки передачи:
prepare_transmit:
mov low_tx_buffer,lowvar
mov high_tx_buffer,highvar ;Отправили VAR в буфер передачи
clr request ;Выставили требование на освобождение шины - второй МК получит прерывание
setb request ;Хватит короткого строба - прерывание во втором МК должно быть по -фронту
setb enable_grant_int ;Разрешили обработку прерывания по освобождению шины
ret ;Подготовка закончена


;Процедура передачи (прерывание):
do_transmit:
mov lowport,low_tx_buffer
mov highport,high_tx_buffer ;Выставили данные на шину
clr data_strobe ;Дали короткий строб на прерывание для чтения шины вторым МК
setb data_strobe
reti


;Процедура освобождения шины (прерывание):
do_grant:
orl lowport,#0ffh ;Освободили шину
orl highport,#0ffh
clr grant_ack_pin ;Дали короткий строб подтверждения освобождения шины
setb grant_ack_pin
reti


;Процедура приема (прерывание):
do_receive:
mov low_rx_buffer,lowport ;Прочитали шину в буфер приема
mov high_rx_buffer,highport
clr recv_ack_pin ;Дали короткий строб подтверждения приема
setb recv_ack_pin
reti

Нюансы типа определения завершения приема перед передачей следующей порции опускаю - они будут похожи как при наличии, так и при отсутствии буферизованного "специализированного контроллера". Как видно, "критический код" может спокойно выполняться, а процедурой обмена займутся прерывания. Ну и еще - о каких скоростях обмена (Кбайт/сек) все-таки шла речь в изначальном сообщении?

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru