Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Микропроцессорная техника Сторожок / main
.c//main.c
#include "p33FJ32MC204.h"
#include "main.h"
#include "spi.h"
#include "interrupts.h"
#include "ppsEdit.h"
// Select Internal FRC at POR
_FOSCSEL(FNOSC_PRI);
// Enable Clock Switching and Configure Posc in XT mode
_FOSC(FCKSM_CSECMD & OSCIOFNC_OFF & POSCMD_XT);
unsigned int spiRead[10];
unsigned int spiWrite[10];
unsigned int usInt;
unsigned int usInt2;
void setPeripheralPins(void) {
ADPCFG=0xFFFF;
PPSUnLock();
// _SDI1R = 16; //MOSI to RP16
// _RP19R = 7; //MISO to RP19
// _RP18R = 8; //SCLK to RP18
// _RP17R = 9; //SS to RP17
PPSInput (PPS_SDI1, PPS_RP16);
PPSOutput(PPS_RP17, PPS_SS1 );
PPSOutput(PPS_RP18, PPS_SCK1);
PPSOutput(PPS_RP19, PPS_SDO1);
PPSLock();
return;
}
void setIOs (void) {
TRISCbits.TRISC0=1;
TRISCbits.TRISC1=0;
TRISCbits.TRISC2=0;
TRISCbits.TRISC3=0;
TRISCbits.TRISC4=0;
return;
}
void configOscillator (void) {
// Configure PLL prescaler, PLL postscaler, PLL divisor
PLLFBD=30; // M = 32
CLKDIVbits.PLLPOST = 0;// N2 = 2
CLKDIVbits.PLLPRE = 0; // N1 = 2
// Initiate Clock Switch to Primary Oscillator with PLL (NOSC = 0b011)
__builtin_write_OSCCONH(0x03);
__builtin_write_OSCCONL(0x01);
// Wait for Clock switch to occur
while (OSCCONbits.COSC != 0b011);
// Wait for PLL to lock
while(OSCCONbits.LOCK != 1) {};
}
void configSPI1 (void) {
unsigned int SPICON1Value, SPICON2Value, SPISTATValue;
DisableIntSPI1;
CloseSPI1();
ConfigIntSPI1(SPI_INT_DIS & SPI_INT_PRI_1);
SPICON1Value = ENABLE_SCK_PIN & ENABLE_SDO_PIN & SPI_MODE16_OFF & SPI_SMP_OFF &
SPI_CKE_ON & SLAVE_ENABLE_OFF & CLK_POL_ACTIVE_HIGH & MASTER_ENABLE_ON &
SEC_PRESCAL_8_1 & PRI_PRESCAL_4_1 ;
SPICON2Value = FRAME_ENABLE_OFF ; // & FRAME_SYNC_OUTPUT & FRAME_POL_ACTIVE_LOW & FRAME_SYNC_EDGE_PRECEDE ;
SPISTATValue = SPI_ENABLE & SPI_IDLE_STOP & SPI_RX_OVFLOW_CLR ;
OpenSPI1(SPICON1Value, SPICON2Value, SPISTATValue) ;
OpenSPI1(SPICON1Value, SPICON2Value, SPISTATValue) ;
return;
}
void main(void) {
configOscillator();
setIOs();
setPeripheralPins();
configSPI1();
usInt2=0;
while (1) {
usInt=10000;
// WriteSPI1(0xA1);
// while(SPI1STATbits.SPITBF);
// spiWrite[usInt2]=0xA1C1;
// spiRead[usInt2] = ReadSPI1();
usInt=ReadSPI1();
while(DataRdySPI1())
while(usInt>5) {
usInt--;
}
usInt2++;
if(PORTCbits.RC4==0) PORTCbits.RC4=1;
else PORTCbits.RC4=0;
// if (usInt2==8) {
// asm("NOP");
// }
}
}
Соседние файлы в папке Микропроцессорная техника Сторожок