20,7 → 20,7 |
#pragma config CFGPLLEN = ON // Enable PLL on startup |
#pragma config PLLSEL = PLL96 // Use 96MHz PLL 4MHz -> 96MHz / 2 = 48MHz |
//#pragma config SOSCSEL = HIGH // High Power T1OSC/SOSC circuit selected |
#pragma config ADCSEL = BIT12 // 12-bit ADrC |
//#pragma config ADCSEL = BIT12 // 12-bit ADrC |
//#pragma config IOL1WAY = OFF // IOLOCK bit can be set and cleared as needed |
|
/* ----------- IO Pins ----------- |
210,15 → 210,12 |
#ifdef _TEST_NFC |
|
void main(void) { |
unsigned char i = 0; |
unsigned char length = 0; |
unsigned char result = 0; |
NFC_FIRMWARE_VERSION version; |
unsigned char buffer[50]; |
unsigned char i, length = 0; |
|
// NFC stuff |
unsigned char uid[7]; |
unsigned char uidLen; |
NFC_FIRMWARE_VERSION version; |
NFC_TargetDataMiFare cardData[2]; |
NFC_TargetDataMiFare cardData_prev[2]; |
|
/* --------------------- Oscillator Configuration --------------------- */ |
// OSCTUNEbits.PLLEN = 1; // Enable 4x PLL |
251,23 → 248,90 |
DBG_PRINT_MAIN("Firmware ver. %d.%d\r\n", version.Ver, version.Rev); |
NFC_SAMConfig(); |
|
memset(cardData, 0, 24); |
|
while (1) { |
|
// This call will hang until the NFC chip replies (card detected) |
if (NFC_readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLen)) { |
DBG_PRINT_MAIN("Card Found!\r\n"); |
DBG_PRINT_MAIN("UID Length: %d bytes\r\n", uidLen); |
// // This query will hang until the NFC chip replies (card detected) |
// length = NFC_readPassiveTargetID(cardData); |
// if (length) { |
// DBG_PRINT_MAIN("Cards Found: %u\r\n", length); |
// DBG_PRINT_MAIN("UID Length: %d bytes\r\n", cardData[0].NFCID_LEN); |
// DBG_PRINT_MAIN("UID: "); |
// for (i = 0; i < cardData[0].NFCID_LEN; i++) { |
// DBG_PRINT_MAIN("%02X ", cardData[0].NFCID[i]); |
// } |
// DBG_PRINT_MAIN("\r\n"); |
// if (length == 2) { |
// DBG_PRINT_MAIN("UID Length: %d bytes\r\n", cardData[1].NFCID_LEN); |
// DBG_PRINT_MAIN("UID: "); |
// for (i = 0; i < cardData[1].NFCID_LEN; i++) { |
// DBG_PRINT_MAIN("%02X ", cardData[1].NFCID[i]); |
// } |
// DBG_PRINT_MAIN("\r\n"); |
// } |
// } |
|
// This query will not wait for a detection before responding |
length = NFC_pollTargets(1, 1, cardData); |
if (!length) { |
memset(cardData_prev, 0, 24); |
} else if (length == 1) { |
if (memcmp(&cardData[0].NFCID, &cardData_prev[0].NFCID, cardData[0].NFCID_LEN) == 0) { |
// Do nothing |
} else if (memcmp(&cardData[0].NFCID, &cardData_prev[1].NFCID, cardData[0].NFCID_LEN) == 0) { |
memcpy((char *)&cardData_prev[0], (const char *)&cardData[0], 12); |
} else { |
DBG_PRINT_MAIN("UID: "); |
for (i = 0; i < uidLen; i++) { |
DBG_PRINT_MAIN("%02X ", uid[i]); |
for (i = 0; i < cardData[0].NFCID_LEN; i++) { |
DBG_PRINT_MAIN("%02X ", cardData[0].NFCID[i]); |
} |
DBG_PRINT_MAIN("\r\n"); |
memcpy((char *)&cardData_prev[0], (const char *)&cardData[0], 12); |
} |
|
// Delay10KTCYx(255); |
// Delay10KTCYx(255); |
memset(&cardData_prev[1], 0, 12); |
} else if (length == 2) { |
if (memcmp(&cardData[0].NFCID, &cardData_prev[0].NFCID, cardData[0].NFCID_LEN) == 0 && |
memcmp(&cardData[1].NFCID, &cardData_prev[1].NFCID, cardData[1].NFCID_LEN) == 0) { |
// Do nothing |
} else if (memcmp(&cardData[0].NFCID, &cardData_prev[1].NFCID, cardData[0].NFCID_LEN) == 0 && |
memcmp(&cardData[1].NFCID, &cardData_prev[0].NFCID, cardData[1].NFCID_LEN) == 0) { |
memcpy((char *)&cardData_prev[0], (const char *)&cardData[0], 12); |
memcpy((char *)&cardData_prev[1], (const char *)&cardData[1], 12); |
} else if (memcmp(&cardData[0].NFCID, &cardData_prev[0].NFCID, cardData[0].NFCID_LEN) == 0) { |
// First card matched |
DBG_PRINT_MAIN("UID2: "); |
for (i = 0; i < cardData[1].NFCID_LEN; i++) { |
DBG_PRINT_MAIN("%02X ", cardData[1].NFCID[i]); |
} |
DBG_PRINT_MAIN("\r\n"); |
memcpy(&cardData_prev[1], (const char *)&cardData[1], 12); |
} else if (memcmp(&cardData[1].NFCID, &cardData_prev[1].NFCID, cardData[1].NFCID_LEN) == 0) { |
// Second card matched |
DBG_PRINT_MAIN("UID1: "); |
for (i = 0; i < cardData[0].NFCID_LEN; i++) { |
DBG_PRINT_MAIN("%02X ", cardData[0].NFCID[i]); |
} |
DBG_PRINT_MAIN("\r\n"); |
memcpy((char *)&cardData_prev[0], (const char *)&cardData[0], 12); |
} else { |
// No match |
DBG_PRINT_MAIN("UID1: "); |
for (i = 0; i < cardData[0].NFCID_LEN; i++) { |
DBG_PRINT_MAIN("%02X ", cardData[0].NFCID[i]); |
} |
DBG_PRINT_MAIN("\r\n"); |
memcpy((char *)&cardData_prev[0], (const char *)&cardData[0], 12); |
DBG_PRINT_MAIN("UID2: "); |
for (i = 0; i < cardData[1].NFCID_LEN; i++) { |
DBG_PRINT_MAIN("%02X ", cardData[1].NFCID[i]); |
} |
DBG_PRINT_MAIN("\r\n"); |
memcpy((char *)&cardData_prev[1], &cardData[1], 12); |
} |
} |
} |
} |
#endif |
|
#ifdef _TEST_LED_BACKPACK |
652,7 → 716,7 |
UART1_Init(); // Initialize the UART handler code |
SPI2_Init(SPI2_FOSC_8); // Initialize the SPI module |
SSD1331_Init(); // Initialize the SSD1331 OLED display (uses SPI2) |
ADC_Init(ADC_TAD_0, ADC_FOSC_64); |
ADC_Init(ADC_TAD_20, ADC_FOSC_64); |
|
// I2C_Configure_Master(I2C_400KHZ); |
SSD1331_Begin(); |
697,7 → 761,6 |
!defined(_TEST_ADC) |
|
void main(void) { |
unsigned int x,y,z; |
unsigned char length = 0; |
unsigned char buffer[60]; |
|
712,15 → 775,13 |
ANCON1 = 0x1F; |
|
UART1_Init(); // Initialize the UART handler code |
// I2C_Init(); // Initialize the I2C handler code |
I2C_Init(); // Initialize the I2C handler code |
SPI2_Init(SPI2_FOSC_8); // Initialize the SPI module |
SSD1331_Init(); // Initialize the SSD1331 OLED display (uses SPI2) |
// NFC_Init(); // Initialize the NFC chip (uses I2C) |
// LED_Init(); // Initialize the LED backpack (uses I2C) |
ADC_Init(ADC_TAD_0, ADC_FOSC_64); |
LED_Init(); // Initialize the LED backpack (uses I2C) |
|
// I2C_Configure_Master(I2C_400KHZ); |
SSD1331_Begin(); |
I2C_Configure_Master(I2C_400KHZ); |
|
interrupt_enable(); // Enable high-priority interrupts and low-priority interrupts |
interrupt_init(); // Initialize the interrupt priorities |
727,6 → 788,9 |
|
DBG_PRINT_MAIN("\r\nBegin Program\r\n"); |
|
SSD1331_Begin(); |
LED_Start(); |
|
memset(buffer, 0, 60); |
GFX_clearScreen(); |
GFX_setRotation(3); |
734,30 → 798,12 |
while (1) { |
|
// Reads input from UART and prints to display |
// length = UART1_Read_Buffer(buffer); |
// if (length != 0) { |
// buffer[length] = 0; |
// GFX_appendString("%s", buffer); |
// } |
|
// ADC read from AN0-AN2 and prints to display |
ADC_Start(ADC_CHANNEL_AN0); |
GFX_fillRect(0,0,GFX_width(),8,SSD1331_BLACK); |
GFX_setCursor(0,0); |
while (!ADC_Get_Result(&x)); |
GFX_writeString("X: %u", x); |
|
ADC_Start(ADC_CHANNEL_AN1); |
GFX_fillRect(0,8,GFX_width(),8,SSD1331_BLACK); |
GFX_setCursor(0,8); |
while (!ADC_Get_Result(&y)); |
GFX_writeString("Y: %u", y); |
|
ADC_Start(ADC_CHANNEL_AN2); |
GFX_fillRect(0,16,GFX_width(),8,SSD1331_BLACK); |
GFX_setCursor(0,16); |
while (!ADC_Get_Result(&z)); |
GFX_writeString("Z: %u", z); |
length = UART1_Read_Buffer(buffer); |
if (length != 0) { |
buffer[length] = 0; |
GFX_appendString("%s", buffer); |
LED_writeNum(length-1); |
} |
} |
} |
#endif |