1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #include <core.h>
- #include "spimaster.h"
- //CKE=1 CKP=0 SMP=0
- #define SPImasterXInit(X) do {\
- SSP##X##STATbits.SMP = 0; \
- SSP##X##STATbits.CKE = 1; \
- SSP##X##CON1.CKP = 0; \
- SSP##X##CON1.SSP##X##EN = 1; \
- SSP##X##CON1.SSP##X##M = 0b0001; /* SPI Master mode, clock = FOSC/16 */ \
- } while(0);
-
- void SPImaster1Init()
- {
- #ifdef _PORTC_SDO1
- TRISC &= ~_PORTC_SDO1;
- #endif
- #ifdef _PORTC_SCK1
- TRISC &= ~_PORTC_SCK1;
- #endif
- #ifdef _PORTC_SDI1
- TRISC |= _PORTC_SDI1;
- #endif
- SPImasterXInit(1);
- }
- void SPImaster2Init()
- {
- #ifdef _PORTB_SDO2
- TRISB &= ~_PORTB_SDO2;
- #else
- #ifdef _PORTD_SDO2
- TRISD &= ~_PORTD_SDO2;
- #endif
- #ifdef _PORTB_SCK2
- TRISB &= ~_PORTB_SCK2;
- #else
- #ifdef _PORTD_SCK2
- TRISD &= ~_PORTD_SCK2;
- #endif
- #ifdef _PORTB_SDI2
- TRISB |= _PORTB_SDI2;
- #else
- #ifdef _PORTD_SDI2
- TRISD |= _PORTD_SDI2;
- #endif
- SPImasterXInit(2);
- }
- byte SPImaster1Transfer(byte b)
- {
- SSP1BUF = b;
- while(!SSP1STATbits.BF);
- return SSP1BUF;
- }
- byte SPImaster2Transfer(byte b);
- {
- SSP2BUF = b;
- while(!SSP2STATbits.BF);
- return SSP2BUF;
- }
|