[an error occurred while processing this directive]
|
Доброго времени суток. Не подскажете новичку, что не так делаю?
Неполучатся настроить работу с DMA. Работаю с Apex-ICE. Делаю следующее:
1. Настраиваю прервание
IOPG = IRQCTL_PAGE;
ar = 0xbbbb;
io(IPR3) = ar;
io(IPR0) = ar;
io(IPR2) = ar;
ar = 0x0bbb;
io(IPR1) = ar;
2. UART на 9600
3. DMA
IOPG = UART_Controller_Page; //0x05
// установка режима автобуферизации
ar= 0x0010; io(UARDR_CFG) = ar;
// установка начальных страницы и адреса
ar = Page(Input_Buffer); io(UARDR_SRP) = ar;
ar = Input_Buffer; io(UARDR_SRA)=ar;
// установка количества символов
ar = LENGTH(Input_Buffer); io(UARDR_CNT) = ar;
// разрешить ДМА автобуферизация, прервание по завершению
ar = 0x0015; io(UARDR_CFG) = ar;
ax0=imask;
ay0= 0x0010 ;
ar=ax0 or ay0;
imask=ar;
ENA int; /* Enable Interrupts */
После посылки в порт символа срабатвает прерывание. Но данных я не вижу + после этого прерывание начинает срабатывать постоянно, хотя в потр я ничего не шлю.
E-mail: info@telesys.ru