Intel 386 User Manual page 394

Embedded microprocessor
Table of Contents

Advertisement

.
SetDMATargMemAddr(DMA_Channel1, lpsz); //Set target memory address
SetDMAXferCount(DMA_Channel1, strlen(lpsz) );
EnableDMAHWRequests(DMA_Channel1);
Real/Protected Mode:
No changes required
*****************************************************************************/
void InitDMA1ForSerialXmitter(void)
{
BYTE regDMACfg;
BYTE regDMAIE;
BYTE regDMAOvfE;
DisableDMAHWRequests(DMA_Channel1); /*Disable channel 1 Hardware requests*/
regDMACfg = (_GetEXRegByte(DMACFG) & 0x0F) | 0xA0;
_SetEXRegByte(DMACFG, regDMACfg); /*DMACFG[7]=1: mask DMA Acknowledge for*/
_SetEXRegByte(DMAMOD1, 0x9); /*DMAMOD1[7:6]=0: set to demand data-xfer*/
_SetEXRegByte(DMAMOD2, 0xD1); /*DMAMOD2[7]=1: Select 2-cycle data xfer*/
//Set transfer count
//Begin transfer at SIO request
/*
channel 1*/
/*DMACFG[6:4]=3: set channel request to*/
/*
SIO's channel 0's transmit buffer*/
/*
empty signal*/
/*DMAMSK[3:0]=unmodified: channel 0*/
/*
settings*/
/* mode*/
/*DMAMOD1[5]=0: increment target*/
/*DMAMOD1[4]=0: disable autoinitialize*/
/*
buffer-xfer mode*/
/*DMAMOD1[3:2]=2: data is xfer'd from targ.*/
/*
to req.*/
/*DMAMOD1[1]=0: reserved*/
/*DMAMOD1[0]=1: selections for bits 7-2*/
/*
affect channel 1*/
/*DMAMOD2[6]=1: Requester is in I/O space*/
/*DMAMOD2[5]=0: Target is in memory space*/
/*DMAMOD2[4]=1: Requester is held constant*/
/*
thru xfer*/
/*DMAMOD2[3]=x: Req. Inc/Dec...see*/
/*
DMAMOD2[4]*/
/*DMAMOD2[2]=0: Target address is*/
/*
modified...see DMAMOD1[5]*/
/*DMAMOD2[1]=0: reserved*/
/*DMAMOD2[0]=1: selections for bits 7-2*/
/*
affect channel 1*/
DMA CONTROLLER
12-59

Hide quick links:

Advertisement

Table of Contents
loading

This manual is also suitable for:

Intel386 exIntel386 extbIntel386 extc

Table of Contents