[an error occurred while processing this directive]
|
Это добавка к той программе, которая прислана ранее. Все прекрасно работает в режиме автобуферизации.
Setup_DMA_new:/*новая настройка*/
iopg = UART_Controller_Page;
/*set to autobuffer mode -make DMA registers writeable */
ar = 0x0010; io(UARDR_CFG) = ar;
/*set start page and address */
ar = PAGE(Input_Buffer); io(UARDT_SRP) = ar;
ar = Input_Buffer; io(UARDR_SRA) = ar;
/*set number of characters without terminating zero */
ar = LENGTH(Input_Buffer); io(UARDR_CNT) = ar;
/*enable DMA, Autobuffer Mode, Interrupt on completion */
ar =0x0017; io(UARDR_CFG) = ar;
/*finally enable IRQ 12 -TX is assigned to by default */
irptl =0x0000;
IOPG = IRQCTL_PAGE;
ar = 0xb000;
io(IPR1) = ar;
imask =0x8000;
ena int;
RTS;
IVSR1: /*обслуживание прерывания*/
ay1 = IOPG;
IOPG = UART_IOPAGE;
ar= 0x0003; /* Set Direction*/
io(UART_DMA_IRQSTAT_RX) = ar;
IOPG = ay1;
rti;
E-mail: info@telesys.ru