[an error occurred while processing this directive]
Для TMS5509. Кому-нибудь удавалось сбрасывать (переинициализировать) DMA "на лету" (во время работы программы), особенно в обработчике какого-нибудь прерывания?
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

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

Отправлено Ist 26 декабря 2004 г. 13:07

Протокол логического обмена по последовательному стыку использует механизм автобуферизации. Автобуфер(DMA) вызывает прерывание по приему пакета байтов от BSP.
Проблема в том, что при потере байта происходит информационный сдвиг и при возникновении последующих заполнений Автобуфера байт кода команды оказывается не на своем месте. Во избежание такого "зависания" хотел бы сбрасывать DMA в прерывании
от кадрового перепада присоединенного BSP (но пока ничего не получается).

В фоне я пользуюсь командами
and #~80h,port(#DMA_CCR4) ;disable DMA RX
...
or #80h,port(#DMA_CCR4) ;enable DMA RX
А вот в прерывании даже такие простые команды вызывают полное "зависание", что уж говорить про другие, которые сбрасывают (или переинициализируют) DMA.

Буду очень признателен любому совету по данной проблеме.

Попутно еще один вопрос к данной теме.
Не удалось соединить DMA5 с BSP1 (правда давно это уже было).
DMA4 или DMA1 с BSP1 работают без проблем. В документации ничего по этому поводу не нашел.


Всех с наступающим Новым Годом!
Успехов в работе и по жизни!

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

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


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

E-mail: info@telesys.ru