[an error occurred while processing this directive]
Нет, всё дело в том, что это дма и ничего запрещать/разрешать не надо,
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

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

Отправлено sdy 01 августа 2003 г. 02:15
В ответ на: То есть, после каждого чейна будет прерывание, а при этом можно разрешить прерывание от приема и заполнять буфер прочитанными из spi значениями? отправлено lisarden 31 июля 2003 г. 15:50

буферы будут сами заполняться контроллером дма, и по каждому дма_каунт = 0 будет происходить прерывание, токо вам про это знать не надо, контроллер сам разберется. А основная идея в том, что пока контроллер дма заполняет один буфер, ядро работает с другим буфером, т.е. контроллер дма и ядро развязаны пространственно. Нужно т.о. 2 (минимум, можно и больше) дескриптора, т.е. для каждого буфера.
А, понял (не так поняли), нет эти два буфера относятся или к tx или к rx, т.о. для приёма надо 2 буфера и для передачи надо 2 буфера, т.е. всего 4 буфера для передачи/приёма, а заполняться они ясное дело будут синхронно.
Читаете в какой нибудь указатель dm(ХХХХ_СР), а далее с помощью этот_самый_указатель = dm(0,этот_самый_указатель); встаёте прямо на адрес некст дескриптор поинтера (т.к. ХХХХ_СР=next descr pointer), т.е. определятся адрес неактивного дескриптора (не тот, с которым работает контроллер дма), далее определив этот адрес (неактивного дескриптора) надо взять из регистра start adress этого дескриптора начальный адрес буфера, с которым может работать ядро. Делается это всё в прерывании от контроллера дма как по приёму так и по передачи, хотя можно (и именно так я и делаю) обслуживать и приём и передачу только в одном прерывании, например, от передачи, а прерывание от приёма вообще запретить (спай же ведь синхронная штука).
И, если Чайник говорит, что есть какие то ограничения, связанные с фифо (может просто бредит, не знаю, пущай ткнет пальцем, если не так), сделайте буфер размером с фифо, но только в самую последнюю очередь когда убедитесь, что так не работает (на других процах работает и с буфером в одну ячейку, правда не спай, но со спортами и с екстернал бас, у которых фифо ну никак не в одно слово, а в 4..6).

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru