Subversion Repositories Code-Repo

Compare Revisions

Ignore whitespace Rev 191 → Rev 192

/PIC Stuff/PICX_27J13/base_SPI.c
117,6 → 117,38
#endif
}
 
void SPI2_DMA_Init(void) {
DMACON1bits.SSCON0 = 0;
DMACON1bits.SSCON1 = 0; // DYLINTEN is software programmable
 
DMACON1bits.TXINC = 1; // TXADDR is automatically incremented
DMACON1bits.RXINC = 0; // RXADDR is not automatically incremented
 
DMACON1bits.DUPLEX0 = 1;
DMACON1bits.DUPLEX1 = 0; // Half-duplex mode, transmission only
 
DMACON1bits.DLYINTEN = 0; // Interrupt is disabled
 
DMACON2bits.DLYCYC = 0b0000; // Delay time of 1 cycle between bytes
DMACON2bits.INTLVL = 0b0000; // Interrupt on transfer complete
}
 
void SPI2_DMA_Start(unsigned int length, void* TXADDR, void* RXADDR) {
// Set length of message to transmit
DMABCH = (char)(length-1 >> 8);
DMABCL = (char)(length-1);
 
// Set sourcing address
TXADDRH = (char)((int)TXADDR >> 8);
TXADDRL = (char)((int)TXADDR);
 
// Set receiving address
RXADDRH = (char)((int)RXADDR >> 8);
RXADDRL = (char)((int)RXADDR);
 
DMACON1bits.DMAEN = 1; // Start transmission
}
 
#ifndef SPI2_WRITE_ONLY
void SPI2_Recv_Interrupt_Handler() {
char c;