Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
28
Добавлен:
20.02.2016
Размер:
2.48 Кб
Скачать
//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");
//		}
	}
}

Соседние файлы в папке Микропроцессорная техника Сторожок