Subversion Repositories Code-Repo

Compare Revisions

Ignore whitespace Rev 125 → Rev 126

/PIC Stuff/PIC_27J13/main.c
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,21 → 248,88
DBG_PRINT_MAIN("Firmware ver. %d.%d\r\n", version.Ver, version.Rev);
NFC_SAMConfig();
 
memset(cardData, 0, 24);
while (1) {
// // 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 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);
DBG_PRINT_MAIN("UID: ");
for (i = 0; i < uidLen; i++) {
DBG_PRINT_MAIN("%02X ", uid[i]);
// 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 < 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("\r\n");
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);
}
}
 
// Delay10KTCYx(255);
// Delay10KTCYx(255);
}
}
#endif
636,7 → 700,7
#ifdef _TEST_ADC
 
void main(void) {
unsigned int x,y,z;
unsigned int x, y, z;
unsigned char buffer[60];
 
/* --------------------- Oscillator Configuration --------------------- */
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();
669,20 → 733,20
while (1) {
// 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);
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);
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);
GFX_fillRect(0, 16, GFX_width(), 8, SSD1331_BLACK);
GFX_setCursor(0, 16);
while (!ADC_Get_Result(&z));
GFX_writeString("Z: %u", z);
}
697,7 → 761,6
!defined(_TEST_ADC)
 
void main(void) {
unsigned int x,y,z;
unsigned char length = 0;
unsigned char buffer[60];
 
712,21 → 775,22
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
 
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