Subversion Repositories Code-Repo

Compare Revisions

Ignore whitespace Rev 130 → Rev 147

/PIC Stuff/PIC_27J13/maindefs.h
File deleted
/PIC Stuff/PIC_27J13/led_backpack.c
File deleted
\ No newline at end of file
/PIC Stuff/PIC_27J13/led_backpack.h
File deleted
/PIC Stuff/PIC_27J13/adc.c
1,4 → 1,4
#include "maindefs.h"
#include "defines.h"
#include "adc.h"
 
static ADC_DATA adc_data;
/PIC Stuff/PIC_27J13/defines.h
0,0 → 1,104
#ifndef __maindefs_h
#define __maindefs_h
 
#include <p18f27j13.h>
#include "uart.h"
 
// Option to enable/disable internal oscillator
#define USE_EXT_OSC
 
//
#define UART1_RX_TO_BUFFER
//#define UART1_RX_TO_XBEE
 
// Option to disable SPI MISO
#define SPI2_WRITE_ONLY
 
//#define _DEBUG
//#define _TEST_UART
//#define _TEST_I2C_MASTER
//#define _TEST_I2C_SLAVE
//#define _TEST_SPI
//#define _TEST_NFC
//#define _TEST_LED_BACKPACK
//#define _TEST_SSD1306_OLED
//#define _TEST_SSD1331_OLED
//#define _TEST_ADC
//#define _TEST_XBEE
//#define _TEST_NFC_TO_SSD1306_OLED
//#define _TEST_TIMER1_RTC
#define _TEST_LUX
 
// Enable or disable debug prints depending on project preprocessor (_DEBUG)
#ifdef _DEBUG
#define DBG_PRINT_MAIN(x) UART1_WriteS(x)
#define DBG_PRINT_UART(x) UART1_WriteS(x)
#define DBG_PRINT_I2C(x) UART1_WriteS(x)
#define DBG_PRINT_SPI(x) UART1_WriteS(x)
#define DBG_PRINT_XBEE(x) UART1_WriteS(x)
#define DBG_PRINT_PORTB_INT(x)
#define DBG_PRINT_INT(x)
#define DBG_PRINT_BUFFER(x)
#else
#define DBG_PRINT_MAIN(x)
#define DBG_PRINT_UART(x)
#define DBG_PRINT_I2C(x)
#define DBG_PRINT_SPI(x)
#define DBG_PRINT_XBEE(x)
#define DBG_PRINT_PORTB_INT(x)
#define DBG_PRINT_INT(x)
#define DBG_PRINT_BUFFER(x)
#endif
 
// Pin allocations
#define LED_BLUE_TRIS TRISCbits.TRISC5
#define LED_BLUE_LAT LATCbits.LATC5
#define LED_RED_TRIS TRISCbits.TRISC2
#define LED_RED_LAT LATCbits.LATC2
 
#define ADC_AN0_TRIS TRISAbits.TRISA0
#define ADC_AN1_TRIS TRISAbits.TRISA1
#define ADC_AN2_TRIS TRISAbits.TRISA2
 
#define XBEE_CTS_TRIS TRISBbits.TRISB0
#define XBEE_CTS_LAT LATBbits.LATB0
#define XBEE_CTS_PORT PORTBbits.RB0
#define XBEE_RTS_TRIS TRISBbits.TRISB1
#define XBEE_RTS_LAT LATBbits.LATB1
 
#define SPI_MOSI_TRIS TRISBbits.TRISB0
#ifndef SPI2_WRITE_ONLY
#define SPI_MISO_TRIS TRISBbits.TRISB0
#endif
#define SPI_CLK_TRIS TRISAbits.TRISA0
#define SPI_DC_SELECT_TRIS TRISAbits.TRISA1
#define SPI_DC_SELECT_LAT LATAbits.LATA1
#define SPI_RESET_TRIS TRISAbits.TRISA2
#define SPI_RESET_LAT LATAbits.LATA2
#define SPI_SLAVE_SELECT_TRIS TRISAbits.TRISA3
#define SPI_SLAVE_SELECT_LAT LATAbits.LATA3
 
#define NFC_IRQ_TRIS TRISAbits.TRISA5
#define NFC_IRQ_PORT PORTAbits.RA5
//#define NFC_RESET_TRIS TRISCbits.TRISC2
//#define NFC_RESET_LAT LATCbits.LATC2
 
#define I2C_CLK_TRIS TRISCbits.TRISC3
#define I2C_DAT_TRIS TRISCbits.TRISC4
 
#define UART1_RX_TRIS TRISCbits.TRISC7
#define UART1_TX_TRIS TRISCbits.TRISC6
 
// PPS bindings (RP Pins)
#define PPS_SPI2_CLK_IN 0 // A0
#define PPS_SPI2_CLK_OUT RPOR0 // A0
#define PPS_SPI2_MOSI RPOR3 // B0
#ifndef SPI2_WRITE_ONLY
#define PPS_SPI2_MISO 3 // NA
#endif
 
//#define PPS_UART2_RX 5
//#define PPS_UART2_TX RPOR6
 
#endif
 
/PIC Stuff/PIC_27J13/i2c.c
1,4 → 1,4
#include "maindefs.h"
#include "defines.h"
#include "i2c.h"
 
static I2C_DATA i2c_data;
/PIC Stuff/PIC_27J13/i2c.h
70,7 → 70,7
void I2C_Interrupt_Master(void);
void I2C_Configure_Slave(unsigned char);
void I2C_Configure_Master(unsigned char speed);
void I2C_Master_Send(unsigned char address, unsigned char length,unsigned char *msg);
void I2C_Master_Send(unsigned char address, unsigned char length, unsigned char *msg);
void I2C_Master_Recv(unsigned char address, unsigned char length);
void I2C_Master_Restart(unsigned char address, unsigned char msg, unsigned char length);
unsigned char I2C_Get_Status(void);
/PIC Stuff/PIC_27J13/interrupts.c
1,9 → 1,10
#include "maindefs.h"
#include "defines.h"
#include "interrupts.h"
#include "uart.h"
#include "i2c.h"
#include "spi.h"
#include "adc.h"
#include "timers.h"
 
//----------------------------------------------------------------------------
// Note: This code for processing interrupts is configured to allow for high and
27,9 → 28,9
// Low priority interrupts
// INTCON2bits.TMR0IP = 0; // Timer0 interrupt
// IPR1bits.TMR1IP = 0; // Timer1 interrupt
IPR1bits.TMR1IP = 0; // Timer1 interrupt
// IPR2bits.TMR3IP = 0; // Timer 3 interrupt
IPR1bits.ADIP = 0; // ADC interupt
// IPR1bits.ADIP = 0; // ADC interupt
// INTCON2bits.RBIP = 0; // Port B interrupt
// INTCON3bits.INT1IP = 0; // INT1 interrupt
104,17 → 105,17
// We need to check the interrupt flag of each enabled high-priority interrupt to
// see which device generated this interrupt. Then we can call the correct handler.
 
// Check to see if we have an SPI2 interrupt
if (PIR3bits.SSP2IF) {
// Call the handler
SPI2_Recv_Interrupt_Handler();
// // Check to see if we have an SPI2 interrupt
// if (PIR3bits.SSP2IF) {
// // Call the handler
// SPI2_Recv_Interrupt_Handler();
//
// // Clear the interrupt flag
// PIR3bits.SSP2IF = 0;
//
// return;
// }
 
// Clear the interrupt flag
PIR3bits.SSP2IF = 0;
 
return;
}
 
// Check to see if we have an I2C interrupt
if (PIR1bits.SSPIF) {
// Call the handler
195,15 → 196,15
// INTCONbits.TMR0IF = 0;
// }
 
// // Check to see if we have an interrupt on timer 1
// if (PIR1bits.TMR1IF) {
// // Call the interrupt handler
// timer1_interrupt_handler();
//
// // Clear the interrupt flag
// PIR1bits.TMR1IF = 0;
// }
// Check to see if we have an interrupt on timer 1
if (PIR1bits.TMR1IF) {
// Call the interrupt handler
Timer1_Interrupt_Handler();
 
// Clear the interrupt flag
PIR1bits.TMR1IF = 0;
}
 
// // Check to see if we have an interrupt on timer 3
// if (PIR2bits.TMR3IF) {
// DBG_PRINT_INT("INT: Timer 3\r\n");
212,13 → 213,13
// PIR2bits.TMR3IF = 0;
// }
 
// Check to see if we have an interrupt on ADC
if (PIR1bits.ADIF) {
// Call the interrupt handler
ADC_Interrupt_Handler();
 
// Clear the interrupt flag
PIR1bits.ADIF = 0;
}
// // Check to see if we have an interrupt on ADC
// if (PIR1bits.ADIF) {
// // Call the interrupt handler
// ADC_Interrupt_Handler();
//
// // Clear the interrupt flag
// PIR1bits.ADIF = 0;
// }
}
 
/PIC Stuff/PIC_27J13/led_HT16K33.c
0,0 → 1,137
#include "led_HT16K33.h"
#include "i2c.h"
 
static const char numbertable[] = {
0x3F /* 0 */,
0x06 /* 1 */,
0x5B /* 2 */,
0x4F /* 3 */,
0x66 /* 4 */,
0x6D /* 5 */,
0x7D, /* 6 */
0x07, /* 7 */
0x7F, /* 8 */
0x6F, /* 9 */
};
 
static const char alphatable[] = {
0x77, /* a */
0x7C, /* b */
0x39, /* C */
0x5E, /* d */
0x79, /* E */
0x71, /* F */
};
 
static LED_DATA led_data;
static LED_DATA *led_data_p = &led_data;
 
void LED_Init() {
led_data_p->i2c_address = 0x70;
}
 
void LED_Start() {
unsigned char result;
unsigned char c = 0x21; // Cmd to turn on oscillator
I2C_Master_Send(led_data_p->i2c_address, 1, &c);
result = I2C_Get_Status();
while (!result) {
result = I2C_Get_Status();
}
 
LED_blinkRate(HT16K33_BLINK_OFF);
LED_setBrightness(15); // Max brightness
LED_clear();
LED_writeDisplay();
}
 
void LED_setBrightness(unsigned char c) {
unsigned char result;
if (c > 15) c = 15;
c |= 0xE0;
 
I2C_Master_Send(led_data_p->i2c_address, 1, &c);
result = I2C_Get_Status();
while (!result) {
result = I2C_Get_Status();
}
}
 
void LED_blinkRate(unsigned char c) {
unsigned char buffer;
 
if (c > 3) c = 0;
 
buffer = HT16K33_BLINK_CMD | HT16K33_BLINK_DISPLAYON | (c << 1);
 
I2C_Master_Send(led_data_p->i2c_address, 1, &buffer);
buffer = I2C_Get_Status();
while (!buffer) {
buffer = I2C_Get_Status();
}
}
 
void LED_writeDisplay() {
unsigned char result;
led_data_p->display_buffer[0] = 0x00; // Start at address 0x00
I2C_Master_Send(led_data_p->i2c_address, 17, led_data_p->display_buffer);
 
result = I2C_Get_Status();
while (!result) {
result = I2C_Get_Status();
}
}
 
void LED_clear() {
unsigned char c;
for (c = 0; c < 17; c++) {
led_data_p->display_buffer[c] = 0;
}
}
 
void LED_drawColon(unsigned char c) {
if (c) {
led_data_p->display_buffer[5] = 0xFF;
} else {
led_data_p->display_buffer[5] = 0;
}
}
 
void LED_writeDigitRaw(unsigned char loc, unsigned char bitmask) {
if (loc > 4) return;
led_data_p->display_buffer[(loc<<1)+1] = bitmask;
}
 
void LED_writeDigitNum(unsigned char loc, unsigned char num, unsigned char dot) {
if (loc > 4) return;
if (loc > 1) loc++;
LED_writeDigitRaw(loc, numbertable[num] | dot << 7);
}
 
void LED_writeDigitAlpha(unsigned char loc, unsigned char alpha, unsigned char dot) {
if (loc > 4) return;
if (loc > 1) loc++;
LED_writeDigitRaw(loc, alphatable[alpha] | dot << 7);
}
 
void LED_writeNum(unsigned int i) {
LED_writeDigitNum(0, (i%10000)/1000, 0);
LED_writeDigitNum(1, (i%1000)/100, 0);
LED_writeDigitNum(2, (i%100)/10, 0);
LED_writeDigitNum(3, i%10, 0);
 
if (i < 10) {
LED_writeDigitRaw(0, 0);
LED_writeDigitRaw(1, 0);
LED_writeDigitRaw(3, 0);
} else if (i < 100) {
LED_writeDigitRaw(0, 0);
LED_writeDigitRaw(1, 0);
} else if (i < 1000) {
LED_writeDigitRaw(0, 0);
}
LED_writeDisplay();
}
/PIC Stuff/PIC_27J13/led_HT16K33.h
0,0 → 1,32
#ifndef LED_BACKPACK_H
#define LED_BACKPACK_H
 
#define HT16K33_BLINK_CMD 0x80
#define HT16K33_BLINK_DISPLAYON 0x01
#define HT16K33_BLINK_OFF 0
#define HT16K33_BLINK_2HZ 1
#define HT16K33_BLINK_1HZ 2
#define HT16K33_BLINK_HALFHZ 3
 
#define HT16K33_CMD_BRIGHTNESS 0x0E
 
typedef struct {
unsigned char i2c_address;
unsigned char display_buffer[17];
} LED_DATA;
 
void LED_Init(void);
void LED_Start(void);
void LED_setBrightness(unsigned char c);
void LED_blinkRate(unsigned char c);
void LED_writeDisplay(void);
void LED_clear(void);
void LED_drawColon(unsigned char c);
void LED_writeDigitRaw(unsigned char loc, unsigned char bitmask);
void LED_writeDigitNum(unsigned char loc, unsigned char num, unsigned char dot);
void LED_writeDigitAlpha(unsigned char loc, unsigned char alpha, unsigned char dot);
void LED_writeNum(unsigned int i);
 
 
#endif /* LED_BACKPACK_H */
 
/PIC Stuff/PIC_27J13/lux_TSL2561.c
0,0 → 1,15
#include "lux_TSL2561.h"
#include "i2c.h"
 
static TSL2561_DATA tsl2561_data;
static TSL2561_DATA *tsl2561_data_p = &tsl2561_data;
 
void LUX_Init(unsigned char address) {
tsl2561_data_p->address = address;
tsl2561_data_p->integration = TSL2561_INTEGRATIONTIME_13MS;
tsl2561_data_p->gain = TSL2561_GAIN_16X;
}
 
void LUX_Begin(void) {
}
/PIC Stuff/PIC_27J13/lux_TSL2561.h
0,0 → 1,131
#ifndef LUX_TSL2561_H
#define LUX_TSL2561_H
 
#define TSL2561_VISIBLE 2 // channel 0 - channel 1
#define TSL2561_INFRARED 1 // channel 1
#define TSL2561_FULLSPECTRUM 0 // channel 0
 
// 3 i2c address options!
#define TSL2561_ADDR_LOW 0x29
#define TSL2561_ADDR_FLOAT 0x39
#define TSL2561_ADDR_HIGH 0x49
 
// Lux calculations differ slightly for CS package
//#define TSL2561_PACKAGE_CS
#define TSL2561_PACKAGE_T_FN_CL
 
#define TSL2561_READBIT (0x01)
 
#define TSL2561_COMMAND_BIT (0x80) // Must be 1
#define TSL2561_CLEAR_BIT (0x40) // Clears any pending interrupt (write 1 to clear)
#define TSL2561_WORD_BIT (0x20) // 1 = read/write word (rather than byte)
#define TSL2561_BLOCK_BIT (0x10) // 1 = using block read/write
 
#define TSL2561_CONTROL_POWERON (0x03)
#define TSL2561_CONTROL_POWEROFF (0x00)
 
#define TSL2561_LUX_LUXSCALE (14) // Scale by 2^14
#define TSL2561_LUX_RATIOSCALE (9) // Scale ratio by 2^9
#define TSL2561_LUX_CHSCALE (10) // Scale channel values by 2^10
#define TSL2561_LUX_CHSCALE_TINT0 (0x7517) // 322/11 * 2^TSL2561_LUX_CHSCALE
#define TSL2561_LUX_CHSCALE_TINT1 (0x0FE7) // 322/81 * 2^TSL2561_LUX_CHSCALE
 
// T, FN and CL package values
#define TSL2561_LUX_K1T (0x0040) // 0.125 * 2^RATIO_SCALE
#define TSL2561_LUX_B1T (0x01f2) // 0.0304 * 2^LUX_SCALE
#define TSL2561_LUX_M1T (0x01be) // 0.0272 * 2^LUX_SCALE
#define TSL2561_LUX_K2T (0x0080) // 0.250 * 2^RATIO_SCALE
#define TSL2561_LUX_B2T (0x0214) // 0.0325 * 2^LUX_SCALE
#define TSL2561_LUX_M2T (0x02d1) // 0.0440 * 2^LUX_SCALE
#define TSL2561_LUX_K3T (0x00c0) // 0.375 * 2^RATIO_SCALE
#define TSL2561_LUX_B3T (0x023f) // 0.0351 * 2^LUX_SCALE
#define TSL2561_LUX_M3T (0x037b) // 0.0544 * 2^LUX_SCALE
#define TSL2561_LUX_K4T (0x0100) // 0.50 * 2^RATIO_SCALE
#define TSL2561_LUX_B4T (0x0270) // 0.0381 * 2^LUX_SCALE
#define TSL2561_LUX_M4T (0x03fe) // 0.0624 * 2^LUX_SCALE
#define TSL2561_LUX_K5T (0x0138) // 0.61 * 2^RATIO_SCALE
#define TSL2561_LUX_B5T (0x016f) // 0.0224 * 2^LUX_SCALE
#define TSL2561_LUX_M5T (0x01fc) // 0.0310 * 2^LUX_SCALE
#define TSL2561_LUX_K6T (0x019a) // 0.80 * 2^RATIO_SCALE
#define TSL2561_LUX_B6T (0x00d2) // 0.0128 * 2^LUX_SCALE
#define TSL2561_LUX_M6T (0x00fb) // 0.0153 * 2^LUX_SCALE
#define TSL2561_LUX_K7T (0x029a) // 1.3 * 2^RATIO_SCALE
#define TSL2561_LUX_B7T (0x0018) // 0.00146 * 2^LUX_SCALE
#define TSL2561_LUX_M7T (0x0012) // 0.00112 * 2^LUX_SCALE
#define TSL2561_LUX_K8T (0x029a) // 1.3 * 2^RATIO_SCALE
#define TSL2561_LUX_B8T (0x0000) // 0.000 * 2^LUX_SCALE
#define TSL2561_LUX_M8T (0x0000) // 0.000 * 2^LUX_SCALE
 
// CS package values
#define TSL2561_LUX_K1C (0x0043) // 0.130 * 2^RATIO_SCALE
#define TSL2561_LUX_B1C (0x0204) // 0.0315 * 2^LUX_SCALE
#define TSL2561_LUX_M1C (0x01ad) // 0.0262 * 2^LUX_SCALE
#define TSL2561_LUX_K2C (0x0085) // 0.260 * 2^RATIO_SCALE
#define TSL2561_LUX_B2C (0x0228) // 0.0337 * 2^LUX_SCALE
#define TSL2561_LUX_M2C (0x02c1) // 0.0430 * 2^LUX_SCALE
#define TSL2561_LUX_K3C (0x00c8) // 0.390 * 2^RATIO_SCALE
#define TSL2561_LUX_B3C (0x0253) // 0.0363 * 2^LUX_SCALE
#define TSL2561_LUX_M3C (0x0363) // 0.0529 * 2^LUX_SCALE
#define TSL2561_LUX_K4C (0x010a) // 0.520 * 2^RATIO_SCALE
#define TSL2561_LUX_B4C (0x0282) // 0.0392 * 2^LUX_SCALE
#define TSL2561_LUX_M4C (0x03df) // 0.0605 * 2^LUX_SCALE
#define TSL2561_LUX_K5C (0x014d) // 0.65 * 2^RATIO_SCALE
#define TSL2561_LUX_B5C (0x0177) // 0.0229 * 2^LUX_SCALE
#define TSL2561_LUX_M5C (0x01dd) // 0.0291 * 2^LUX_SCALE
#define TSL2561_LUX_K6C (0x019a) // 0.80 * 2^RATIO_SCALE
#define TSL2561_LUX_B6C (0x0101) // 0.0157 * 2^LUX_SCALE
#define TSL2561_LUX_M6C (0x0127) // 0.0180 * 2^LUX_SCALE
#define TSL2561_LUX_K7C (0x029a) // 1.3 * 2^RATIO_SCALE
#define TSL2561_LUX_B7C (0x0037) // 0.00338 * 2^LUX_SCALE
#define TSL2561_LUX_M7C (0x002b) // 0.00260 * 2^LUX_SCALE
#define TSL2561_LUX_K8C (0x029a) // 1.3 * 2^RATIO_SCALE
#define TSL2561_LUX_B8C (0x0000) // 0.000 * 2^LUX_SCALE
#define TSL2561_LUX_M8C (0x0000) // 0.000 * 2^LUX_SCALE
 
enum {
TSL2561_REGISTER_CONTROL = 0x00,
TSL2561_REGISTER_TIMING = 0x01,
TSL2561_REGISTER_THRESHHOLDL_LOW = 0x02,
TSL2561_REGISTER_THRESHHOLDL_HIGH = 0x03,
TSL2561_REGISTER_THRESHHOLDH_LOW = 0x04,
TSL2561_REGISTER_THRESHHOLDH_HIGH = 0x05,
TSL2561_REGISTER_INTERRUPT = 0x06,
TSL2561_REGISTER_CRC = 0x08,
TSL2561_REGISTER_ID = 0x0A,
TSL2561_REGISTER_CHAN0_LOW = 0x0C,
TSL2561_REGISTER_CHAN0_HIGH = 0x0D,
TSL2561_REGISTER_CHAN1_LOW = 0x0E,
TSL2561_REGISTER_CHAN1_HIGH = 0x0F
};
 
typedef enum {
TSL2561_INTEGRATIONTIME_13MS = 0x00, // 13.7ms
TSL2561_INTEGRATIONTIME_101MS = 0x01, // 101ms
TSL2561_INTEGRATIONTIME_402MS = 0x02 // 402ms
}
tsl2561IntegrationTime_t;
 
typedef enum {
TSL2561_GAIN_0X = 0x00, // No gain
TSL2561_GAIN_16X = 0x10 // 16x gain
}
tsl2561Gain_t;
 
typedef struct __TSL25611_DATA {
unsigned char address;
tsl2561IntegrationTime_t integration;
tsl2561Gain_t gain;
} TSL2561_DATA;
 
void LUX_Init(void);
void LUX_Begin(void);
void LUX_Enable(void);
void LUX_Disable(void);
unsigned long LUX_CalculateLux(unsigned int ch0, unsigned int ch1);
void LUX_SetTiming(tsl2561IntegrationTime_t integration);
void LUX_SetGain(tsl2561Gain_t gain);
unsigned int LUX_GetLuminosity(unsigned char channel);
unsigned long LUX_GetFullLuminosity(void);
 
#endif /* LUX_TSL2561_H */
 
/PIC Stuff/PIC_27J13/main.c
1,19 → 1,18
#include "maindefs.h"
#include "defines.h"
#include "interrupts.h"
#include "uart.h"
#include "i2c.h"
#include "spi.h"
#include "nfc.h"
#include "led_backpack.h"
#include "led_HT16K33.h"
#include "oled_ssd1306.h"
#include "oled_ssd1331.h"
#include "adc.h"
#include "xbee.h"
#include "timers.h"
#include <delays.h>
#include <string.h>
 
#pragma config WDTEN = OFF // Turn off watchdog timer
#pragma config XINST = OFF // Turn off extended instruction set
#ifdef USE_EXT_OSC
#pragma config OSC = HSPLL // Use external oscillator (101)
#pragma config PLLDIV = 3 // Set PPL prescaler to 3 (to get 4MHz)
21,9 → 20,12
#pragma config OSC = INTOSCPLL // Use internal oscillator
#pragma config PLLDIV = 2 // Set PPL prescaler to 2 (to get 4MHz)
#endif
 
#pragma config WDTEN = OFF // Turn off watchdog timer
#pragma config XINST = OFF // Turn off extended instruction set
#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 SOSCSEL = LOW // Low Power T1OSC/SOSC circuit selected
//#pragma config ADCSEL = BIT12 // 12-bit ADrC
//#pragma config IOL1WAY = OFF // IOLOCK bit can be set and cleared as needed
 
84,7 → 86,7
UART1_Init(); // Initialize the UART handler code
I2C_Init(); // Initialize the I2C handler code
 
I2C_Configure_Master();
I2C_Configure_Master(I2C_100KHZ);
 
interrupt_enable(); // Enable high-priority interrupts and low-priority interrupts
interrupt_init(); // Initialize the interrupt priorities
93,9 → 95,9
 
while (1) {
 
buffer[0] = 0xBB;
buffer[0] = 0x8;
 
I2C_Master_Send(0x30, 1, buffer);
I2C_Master_Send(0x24, 1, buffer);
result = I2C_Get_Status();
while (!result) {
result = I2C_Get_Status();
102,7 → 104,7
}
DBG_PRINT_MAIN("S:%X ", result);
 
I2C_Master_Recv(0x30, 2);
I2C_Master_Recv(0x24, 2);
result = I2C_Get_Status();
while (!result) {
result = I2C_Get_Status();
114,17 → 116,17
DBG_PRINT_MAIN("%c ", buffer[i]);
}
 
I2C_Master_Restart(0x30, 0xBB, 2);
result = I2C_Get_Status();
while (!result) {
result = I2C_Get_Status();
}
DBG_PRINT_MAIN("S:%X ", result);
length = I2C_Read_Buffer(buffer);
DBG_PRINT_MAIN("L:%d D:", length);
for (i = 0; i < length; i++) {
DBG_PRINT_MAIN("%c ", buffer[i]);
}
// I2C_Master_Restart(0x30, 0xBB, 2);
// result = I2C_Get_Status();
// while (!result) {
// result = I2C_Get_Status();
// }
// DBG_PRINT_MAIN("S:%X ", result);
// length = I2C_Read_Buffer(buffer);
// DBG_PRINT_MAIN("L:%d D:", length);
// for (i = 0; i < length; i++) {
// DBG_PRINT_MAIN("%c ", buffer[i]);
// }
 
DBG_PRINT_MAIN("\r\n");
 
155,7 → 157,7
UART1_Init(); // Initialize the UART handler code
I2C_Init(); // Initialize the I2C handler code
 
I2C_Configure_Slave(0x30);
I2C_Configure_Slave(0x24);
 
interrupt_enable(); // Enable high-priority interrupts and low-priority interrupts
interrupt_init(); // Initialize the interrupt priorities
333,8 → 335,6
 
void main(void) {
unsigned char i = 0;
unsigned char length = 0;
unsigned char buffer[100];
unsigned int counter = 0;
 
/* --------------------- Oscillator Configuration --------------------- */
451,7 → 451,7
ANCON1 = 0x1F;
 
UART1_Init(); // Initialize the UART handler code
SPI2_Init(SPI2_FOSC_8); // Initialize the SPI module
SPI2_Init(SPI2_FOSC_4); // Initialize the SPI module
SSD1306_Init(); // Initialize the OLED code
 
interrupt_enable(); // Enable high-priority interrupts and low-priority interrupts
569,7 → 569,7
ANCON1 = 0x1F;
 
UART1_Init(); // Initialize the UART handler code
SPI2_Init(SPI2_FOSC_8); // Initialize the SPI module
SPI2_Init(SPI2_FOSC_64); // Initialize the SPI module
SSD1331_Init(); // Initialize the OLED code
 
interrupt_enable(); // Enable high-priority interrupts and low-priority interrupts
578,7 → 578,7
DBG_PRINT_MAIN("\r\nBegin Program\r\n");
 
SSD1331_Begin();
 
while (1) {
 
Delay10KTCYx(255);
591,89 → 591,89
SSD1331_Clear_Display();
SSD1331_Set_Rotation(0);
SSD1331_Set_Cursor(0, 0);
SSD1331_Write_String("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur adipiscing ante sed nibh tincidunt feugiat. Maecenas enim massa");
SSD1331_Write_String("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabit adipiscing ante sed nibh tincidunt feugiat.");
 
Delay10KTCYx(255);
Delay10KTCYx(255);
SSD1331_Clear_Display();
SSD1331_Set_Rotation(3);
SSD1331_Set_Cursor(0, 0);
SSD1331_Write_String("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur adipiscing ante sed nibh tincidunt feugiat. Maecenas enim massa");
// Delay10KTCYx(255);
// Delay10KTCYx(255);
// SSD1331_Clear_Display();
// SSD1331_Set_Rotation(3);
// SSD1331_Set_Cursor(0, 0);
// SSD1331_Write_String("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur adipiscing ante sed nibh tincidunt feugiat. Maecenas enim massa");
//
// Delay10KTCYx(255);
// Delay10KTCYx(255);
// SSD1331_Set_Rotation(0);
// SSD1331_Test_DrawLines(SSD1331_YELLOW);
//
// Delay10KTCYx(255);
// Delay10KTCYx(255);
// SSD1331_Set_Rotation(3);
// SSD1331_Test_DrawLines(SSD1331_BLUE);
 
Delay10KTCYx(255);
Delay10KTCYx(255);
SSD1331_Set_Rotation(0);
SSD1331_Test_DrawLines(SSD1331_YELLOW);
// Delay10KTCYx(255);
// Delay10KTCYx(255);
// SSD1331_Set_Rotation(0);
// SSD1331_Test_DrawRect(SSD1331_GREEN);
//
// Delay10KTCYx(255);
// Delay10KTCYx(255);
// SSD1331_Set_Rotation(1);
// SSD1331_Test_DrawRect(SSD1331_RED);
//
// Delay10KTCYx(255);
// Delay10KTCYx(255);
// SSD1331_Set_Rotation(2);
// SSD1331_Test_DrawRect(SSD1331_BLUE);
//
// Delay10KTCYx(255);
// Delay10KTCYx(255);
// SSD1331_Set_Rotation(3);
// SSD1331_Test_DrawRect(SSD1331_YELLOW);
//
// Delay10KTCYx(255);
// Delay10KTCYx(255);
// SSD1331_Set_Rotation(0);
// SSD1331_Test_FillRect(SSD1331_YELLOW, SSD1331_MAGENTA);
//
// Delay10KTCYx(255);
// Delay10KTCYx(255);
// SSD1331_Set_Rotation(3);
// SSD1331_Test_FillRect(SSD1331_BLUE, SSD1331_GREEN);
 
Delay10KTCYx(255);
Delay10KTCYx(255);
SSD1331_Set_Rotation(3);
SSD1331_Test_DrawLines(SSD1331_BLUE);
// Delay10KTCYx(255);
// Delay10KTCYx(255);
// SSD1331_Set_Rotation(0);
// SSD1331_Clear_Display();
// SSD1331_Test_FillCircle(10, SSD1331_BLUE);
// SSD1331_Test_DrawCircle(10, SSD1331_WHITE);
//
// Delay10KTCYx(255);
// Delay10KTCYx(255);
// SSD1331_Set_Rotation(3);
// SSD1331_Clear_Display();
// SSD1331_Test_FillCircle(10, SSD1331_MAGENTA);
// SSD1331_Test_DrawCircle(10, SSD1331_YELLOW);
//
// Delay10KTCYx(255);
// Delay10KTCYx(255);
// SSD1331_Set_Rotation(0);
// SSD1331_Test_DrawTria();
//
// Delay10KTCYx(255);
// Delay10KTCYx(255);
// SSD1331_Set_Rotation(3);
// SSD1331_Test_DrawTria();
 
Delay10KTCYx(255);
Delay10KTCYx(255);
SSD1331_Set_Rotation(0);
SSD1331_Test_DrawRect(SSD1331_GREEN);
// Delay10KTCYx(255);
// Delay10KTCYx(255);
// SSD1331_Set_Rotation(0);
// SSD1331_Test_DrawRoundRect();
//
// Delay10KTCYx(255);
// Delay10KTCYx(255);
// SSD1331_Set_Rotation(3);
// SSD1331_Test_DrawRoundRect();
 
Delay10KTCYx(255);
Delay10KTCYx(255);
SSD1331_Set_Rotation(1);
SSD1331_Test_DrawRect(SSD1331_RED);
 
Delay10KTCYx(255);
Delay10KTCYx(255);
SSD1331_Set_Rotation(2);
SSD1331_Test_DrawRect(SSD1331_BLUE);
 
Delay10KTCYx(255);
Delay10KTCYx(255);
SSD1331_Set_Rotation(3);
SSD1331_Test_DrawRect(SSD1331_YELLOW);
 
Delay10KTCYx(255);
Delay10KTCYx(255);
SSD1331_Set_Rotation(0);
SSD1331_Test_FillRect(SSD1331_YELLOW, SSD1331_MAGENTA);
 
Delay10KTCYx(255);
Delay10KTCYx(255);
SSD1331_Set_Rotation(3);
SSD1331_Test_FillRect(SSD1331_BLUE, SSD1331_GREEN);
 
Delay10KTCYx(255);
Delay10KTCYx(255);
SSD1331_Set_Rotation(0);
SSD1331_Clear_Display();
SSD1331_Test_FillCircle(10, SSD1331_BLUE);
SSD1331_Test_DrawCircle(10, SSD1331_WHITE);
 
Delay10KTCYx(255);
Delay10KTCYx(255);
SSD1331_Set_Rotation(3);
SSD1331_Clear_Display();
SSD1331_Test_FillCircle(10, SSD1331_MAGENTA);
SSD1331_Test_DrawCircle(10, SSD1331_YELLOW);
 
Delay10KTCYx(255);
Delay10KTCYx(255);
SSD1331_Set_Rotation(0);
SSD1331_Test_DrawTria();
 
Delay10KTCYx(255);
Delay10KTCYx(255);
SSD1331_Set_Rotation(3);
SSD1331_Test_DrawTria();
 
Delay10KTCYx(255);
Delay10KTCYx(255);
SSD1331_Set_Rotation(0);
SSD1331_Test_DrawRoundRect();
 
Delay10KTCYx(255);
Delay10KTCYx(255);
SSD1331_Set_Rotation(3);
SSD1331_Test_DrawRoundRect();
 
// SSD1331_Clear_Display();
// SSD1331_Set_Rotation(3);
// SSD1331_Set_Cursor(0,0);
904,11 → 904,7
}
#endif
 
#if !defined(_TEST_UART) && !defined(_TEST_I2C_MASTER) && \
!defined(_TEST_I2C_SLAVE) && !defined(_TEST_SPI) && \
!defined(_TEST_NFC) && !defined(_TEST_LED_BACKPACK) && \
!defined(_TEST_SSD1306_OLED) && !defined(_TEST_SSD1331_OLED) && \
!defined(_TEST_ADC) && !defined(_TEST_XBEE)
#ifdef _TEST_NFC_TO_SSD1306_OLED
 
void main(void) {
unsigned char length = 0;
931,7 → 927,7
UART1_Init();
I2C_Init();
NFC_Init();
SPI2_Init(SPI2_FOSC_8);
SPI2_Init(SPI2_FOSC_4);
SSD1306_Init();
 
I2C_Configure_Master(I2C_400KHZ);
1007,3 → 1003,100
}
}
#endif
 
#ifdef _TEST_TIMER1_RTC
 
void main(void) {
 
/* --------------------- Oscillator Configuration --------------------- */
// OSCTUNEbits.PLLEN = 1; // Enable 4x PLL
OSCCONbits.IRCF = 0b111; // Set INTOSC postscaler to 8MHz
OSCCONbits.SCS = 0b00; // Use 96MHz PLL as primary clock source
/* -------------------------------------------------------------------- */
 
// Set all ports as digial I/O except for AN0-AN2 (pins 2-4)
ANCON0 = 0xF8;
ANCON1 = 0x1F;
Timer1_Init();
 
interrupt_enable(); // Enable high-priority interrupts and low-priority interrupts
interrupt_init(); // Initialize the interrupt priorities
 
LED_BLUE_TRIS = 0;
LED_RED_TRIS = 0;
Timer1_Enable();
 
while (1) {
 
}
}
#endif
 
#ifdef _TEST_LUX
 
void main(void) {
 
/* --------------------- Oscillator Configuration --------------------- */
// OSCTUNEbits.PLLEN = 1; // Enable 4x PLL
OSCCONbits.IRCF = 0b111; // Set INTOSC postscaler to 8MHz
OSCCONbits.SCS = 0b00; // Use 96MHz PLL as primary clock source
/* -------------------------------------------------------------------- */
 
// Set all ports as digial I/O except for AN0-AN2 (pins 2-4)
ANCON0 = 0xF8;
ANCON1 = 0x1F;
 
UART1_Init();
I2C_Init();
I2C_Configure_Master(I2C_100KHZ);
 
interrupt_enable(); // Enable high-priority interrupts and low-priority interrupts
interrupt_init(); // Initialize the interrupt priorities
 
while (1) {
 
}
}
#endif
 
#if !defined(_TEST_UART) && !defined(_TEST_I2C_MASTER) && \
!defined(_TEST_I2C_SLAVE) && !defined(_TEST_SPI) && \
!defined(_TEST_NFC) && !defined(_TEST_LED_BACKPACK) && \
!defined(_TEST_SSD1306_OLED) && !defined(_TEST_SSD1331_OLED) && \
!defined(_TEST_ADC) && !defined(_TEST_XBEE) && \
!defined(_TEST_NFC_TO_SSD1306_OLED) && !defined(_TEST_TIMER1_RTC) && \
!defined(_TEST_LUX)
 
void main(void) {
 
/* --------------------- Oscillator Configuration --------------------- */
// OSCTUNEbits.PLLEN = 1; // Enable 4x PLL
OSCCONbits.IRCF = 0b111; // Set INTOSC postscaler to 8MHz
OSCCONbits.SCS = 0b00; // Use 96MHz PLL as primary clock source
/* -------------------------------------------------------------------- */
 
// Set all ports as digial I/O except for AN0-AN2 (pins 2-4)
ANCON0 = 0xF8;
ANCON1 = 0x1F;
 
UART1_Init();
Timer1_Init();
 
interrupt_enable(); // Enable high-priority interrupts and low-priority interrupts
interrupt_init(); // Initialize the interrupt priorities
 
LED_BLUE_TRIS = 0;
LED_RED_TRIS = 0;
Timer1_Enable();
DBG_PRINT_MAIN("\r\nBegin Program\r\n");
 
while (1) {
 
}
}
#endif
/PIC Stuff/PIC_27J13/nbproject/Makefile-default.mk
8,11 → 8,15
 
 
# Include project Makefile
ifeq "${IGNORE_LOCAL}" "TRUE"
# do not include local makefile. User is passing all local related variables already
else
include Makefile
# Include makefile containing local settings
ifeq "$(wildcard nbproject/Makefile-local-default.mk)" "nbproject/Makefile-local-default.mk"
include nbproject/Makefile-local-default.mk
endif
endif
 
# Environment
MKDIR=gnumkdir -p
41,11 → 45,11
DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
 
# Object Files Quoted if spaced
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/main.o ${OBJECTDIR}/i2c.o ${OBJECTDIR}/interrupts.o ${OBJECTDIR}/led_backpack.o ${OBJECTDIR}/nfc.o ${OBJECTDIR}/spi.o ${OBJECTDIR}/uart.o ${OBJECTDIR}/oled_ssd1306.o ${OBJECTDIR}/glcdfont.o ${OBJECTDIR}/adc.o ${OBJECTDIR}/xbee.o ${OBJECTDIR}/oled_ssd1331.o
POSSIBLE_DEPFILES=${OBJECTDIR}/main.o.d ${OBJECTDIR}/i2c.o.d ${OBJECTDIR}/interrupts.o.d ${OBJECTDIR}/led_backpack.o.d ${OBJECTDIR}/nfc.o.d ${OBJECTDIR}/spi.o.d ${OBJECTDIR}/uart.o.d ${OBJECTDIR}/oled_ssd1306.o.d ${OBJECTDIR}/glcdfont.o.d ${OBJECTDIR}/adc.o.d ${OBJECTDIR}/xbee.o.d ${OBJECTDIR}/oled_ssd1331.o.d
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/main.o ${OBJECTDIR}/i2c.o ${OBJECTDIR}/interrupts.o ${OBJECTDIR}/nfc.o ${OBJECTDIR}/spi.o ${OBJECTDIR}/uart.o ${OBJECTDIR}/oled_ssd1306.o ${OBJECTDIR}/glcdfont.o ${OBJECTDIR}/adc.o ${OBJECTDIR}/xbee.o ${OBJECTDIR}/oled_ssd1331.o ${OBJECTDIR}/timers.o ${OBJECTDIR}/led_HT16K33.o ${OBJECTDIR}/lux_TSL2561.o
POSSIBLE_DEPFILES=${OBJECTDIR}/main.o.d ${OBJECTDIR}/i2c.o.d ${OBJECTDIR}/interrupts.o.d ${OBJECTDIR}/nfc.o.d ${OBJECTDIR}/spi.o.d ${OBJECTDIR}/uart.o.d ${OBJECTDIR}/oled_ssd1306.o.d ${OBJECTDIR}/glcdfont.o.d ${OBJECTDIR}/adc.o.d ${OBJECTDIR}/xbee.o.d ${OBJECTDIR}/oled_ssd1331.o.d ${OBJECTDIR}/timers.o.d ${OBJECTDIR}/led_HT16K33.o.d ${OBJECTDIR}/lux_TSL2561.o.d
 
# Object Files
OBJECTFILES=${OBJECTDIR}/main.o ${OBJECTDIR}/i2c.o ${OBJECTDIR}/interrupts.o ${OBJECTDIR}/led_backpack.o ${OBJECTDIR}/nfc.o ${OBJECTDIR}/spi.o ${OBJECTDIR}/uart.o ${OBJECTDIR}/oled_ssd1306.o ${OBJECTDIR}/glcdfont.o ${OBJECTDIR}/adc.o ${OBJECTDIR}/xbee.o ${OBJECTDIR}/oled_ssd1331.o
OBJECTFILES=${OBJECTDIR}/main.o ${OBJECTDIR}/i2c.o ${OBJECTDIR}/interrupts.o ${OBJECTDIR}/nfc.o ${OBJECTDIR}/spi.o ${OBJECTDIR}/uart.o ${OBJECTDIR}/oled_ssd1306.o ${OBJECTDIR}/glcdfont.o ${OBJECTDIR}/adc.o ${OBJECTDIR}/xbee.o ${OBJECTDIR}/oled_ssd1331.o ${OBJECTDIR}/timers.o ${OBJECTDIR}/led_HT16K33.o ${OBJECTDIR}/lux_TSL2561.o
 
 
CFLAGS=
62,7 → 66,7
FIXDEPS=fixDeps
 
.build-conf: ${BUILD_SUBPROJECTS}
${MAKE} -f nbproject/Makefile-default.mk dist/${CND_CONF}/${IMAGE_TYPE}/PIC_27J13.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
${MAKE} ${MAKE_OPTIONS} -f nbproject/Makefile-default.mk dist/${CND_CONF}/${IMAGE_TYPE}/PIC_27J13.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
 
MP_PROCESSOR_OPTION=18F27J13
MP_PROCESSOR_OPTION_LD=18f27j13
79,158 → 83,210
${OBJECTDIR}/main.o: main.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/main.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/main.o main.c
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/main.o main.c
@${DEP_GEN} -d ${OBJECTDIR}/main.o
@${FIXDEPS} "${OBJECTDIR}/main.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/i2c.o: i2c.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/i2c.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/i2c.o i2c.c
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/i2c.o i2c.c
@${DEP_GEN} -d ${OBJECTDIR}/i2c.o
@${FIXDEPS} "${OBJECTDIR}/i2c.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/interrupts.o: interrupts.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/interrupts.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/interrupts.o interrupts.c
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/interrupts.o interrupts.c
@${DEP_GEN} -d ${OBJECTDIR}/interrupts.o
@${FIXDEPS} "${OBJECTDIR}/interrupts.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/led_backpack.o: led_backpack.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/led_backpack.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/led_backpack.o led_backpack.c
@${DEP_GEN} -d ${OBJECTDIR}/led_backpack.o
${OBJECTDIR}/nfc.o: nfc.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/nfc.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/nfc.o nfc.c
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/nfc.o nfc.c
@${DEP_GEN} -d ${OBJECTDIR}/nfc.o
@${FIXDEPS} "${OBJECTDIR}/nfc.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/spi.o: spi.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/spi.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/spi.o spi.c
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/spi.o spi.c
@${DEP_GEN} -d ${OBJECTDIR}/spi.o
@${FIXDEPS} "${OBJECTDIR}/spi.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/uart.o: uart.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/uart.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/uart.o uart.c
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/uart.o uart.c
@${DEP_GEN} -d ${OBJECTDIR}/uart.o
@${FIXDEPS} "${OBJECTDIR}/uart.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/oled_ssd1306.o: oled_ssd1306.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/oled_ssd1306.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/oled_ssd1306.o oled_ssd1306.c
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/oled_ssd1306.o oled_ssd1306.c
@${DEP_GEN} -d ${OBJECTDIR}/oled_ssd1306.o
@${FIXDEPS} "${OBJECTDIR}/oled_ssd1306.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/glcdfont.o: glcdfont.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/glcdfont.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/glcdfont.o glcdfont.c
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/glcdfont.o glcdfont.c
@${DEP_GEN} -d ${OBJECTDIR}/glcdfont.o
@${FIXDEPS} "${OBJECTDIR}/glcdfont.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/adc.o: adc.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/adc.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/adc.o adc.c
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/adc.o adc.c
@${DEP_GEN} -d ${OBJECTDIR}/adc.o
@${FIXDEPS} "${OBJECTDIR}/adc.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/xbee.o: xbee.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/xbee.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/xbee.o xbee.c
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/xbee.o xbee.c
@${DEP_GEN} -d ${OBJECTDIR}/xbee.o
@${FIXDEPS} "${OBJECTDIR}/xbee.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/oled_ssd1331.o: oled_ssd1331.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/oled_ssd1331.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/oled_ssd1331.o oled_ssd1331.c
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/oled_ssd1331.o oled_ssd1331.c
@${DEP_GEN} -d ${OBJECTDIR}/oled_ssd1331.o
@${FIXDEPS} "${OBJECTDIR}/oled_ssd1331.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/timers.o: timers.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/timers.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/timers.o timers.c
@${DEP_GEN} -d ${OBJECTDIR}/timers.o
@${FIXDEPS} "${OBJECTDIR}/timers.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/led_HT16K33.o: led_HT16K33.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/led_HT16K33.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/led_HT16K33.o led_HT16K33.c
@${DEP_GEN} -d ${OBJECTDIR}/led_HT16K33.o
@${FIXDEPS} "${OBJECTDIR}/led_HT16K33.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/lux_TSL2561.o: lux_TSL2561.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/lux_TSL2561.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/lux_TSL2561.o lux_TSL2561.c
@${DEP_GEN} -d ${OBJECTDIR}/lux_TSL2561.o
@${FIXDEPS} "${OBJECTDIR}/lux_TSL2561.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
else
${OBJECTDIR}/main.o: main.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/main.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/main.o main.c
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/main.o main.c
@${DEP_GEN} -d ${OBJECTDIR}/main.o
@${FIXDEPS} "${OBJECTDIR}/main.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/i2c.o: i2c.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/i2c.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/i2c.o i2c.c
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/i2c.o i2c.c
@${DEP_GEN} -d ${OBJECTDIR}/i2c.o
@${FIXDEPS} "${OBJECTDIR}/i2c.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/interrupts.o: interrupts.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/interrupts.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/interrupts.o interrupts.c
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/interrupts.o interrupts.c
@${DEP_GEN} -d ${OBJECTDIR}/interrupts.o
@${FIXDEPS} "${OBJECTDIR}/interrupts.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/led_backpack.o: led_backpack.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/led_backpack.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/led_backpack.o led_backpack.c
@${DEP_GEN} -d ${OBJECTDIR}/led_backpack.o
${OBJECTDIR}/nfc.o: nfc.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/nfc.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/nfc.o nfc.c
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/nfc.o nfc.c
@${DEP_GEN} -d ${OBJECTDIR}/nfc.o
@${FIXDEPS} "${OBJECTDIR}/nfc.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/spi.o: spi.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/spi.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/spi.o spi.c
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/spi.o spi.c
@${DEP_GEN} -d ${OBJECTDIR}/spi.o
@${FIXDEPS} "${OBJECTDIR}/spi.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/uart.o: uart.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/uart.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/uart.o uart.c
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/uart.o uart.c
@${DEP_GEN} -d ${OBJECTDIR}/uart.o
@${FIXDEPS} "${OBJECTDIR}/uart.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/oled_ssd1306.o: oled_ssd1306.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/oled_ssd1306.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/oled_ssd1306.o oled_ssd1306.c
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/oled_ssd1306.o oled_ssd1306.c
@${DEP_GEN} -d ${OBJECTDIR}/oled_ssd1306.o
@${FIXDEPS} "${OBJECTDIR}/oled_ssd1306.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/glcdfont.o: glcdfont.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/glcdfont.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/glcdfont.o glcdfont.c
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/glcdfont.o glcdfont.c
@${DEP_GEN} -d ${OBJECTDIR}/glcdfont.o
@${FIXDEPS} "${OBJECTDIR}/glcdfont.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/adc.o: adc.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/adc.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/adc.o adc.c
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/adc.o adc.c
@${DEP_GEN} -d ${OBJECTDIR}/adc.o
@${FIXDEPS} "${OBJECTDIR}/adc.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/xbee.o: xbee.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/xbee.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/xbee.o xbee.c
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/xbee.o xbee.c
@${DEP_GEN} -d ${OBJECTDIR}/xbee.o
@${FIXDEPS} "${OBJECTDIR}/xbee.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/oled_ssd1331.o: oled_ssd1331.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/oled_ssd1331.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -mL -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/oled_ssd1331.o oled_ssd1331.c
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/oled_ssd1331.o oled_ssd1331.c
@${DEP_GEN} -d ${OBJECTDIR}/oled_ssd1331.o
@${FIXDEPS} "${OBJECTDIR}/oled_ssd1331.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/timers.o: timers.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/timers.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/timers.o timers.c
@${DEP_GEN} -d ${OBJECTDIR}/timers.o
@${FIXDEPS} "${OBJECTDIR}/timers.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/led_HT16K33.o: led_HT16K33.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/led_HT16K33.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/led_HT16K33.o led_HT16K33.c
@${DEP_GEN} -d ${OBJECTDIR}/led_HT16K33.o
@${FIXDEPS} "${OBJECTDIR}/led_HT16K33.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
${OBJECTDIR}/lux_TSL2561.o: lux_TSL2561.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/lux_TSL2561.o.d
${MP_CC} $(MP_EXTRA_CC_PRE) -p$(MP_PROCESSOR_OPTION) -oi -ml -oa- -I ${MP_CC_DIR}\\..\\h -fo ${OBJECTDIR}/lux_TSL2561.o lux_TSL2561.c
@${DEP_GEN} -d ${OBJECTDIR}/lux_TSL2561.o
@${FIXDEPS} "${OBJECTDIR}/lux_TSL2561.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c18
endif
 
# ------------------------------------------------------------------------------------
# Rules for buildStep: link
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
dist/${CND_CONF}/${IMAGE_TYPE}/PIC_27J13.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk
dist/${CND_CONF}/${IMAGE_TYPE}/PIC_27J13.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk 18f27j13.lkr
@${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE}
${MP_LD} $(MP_EXTRA_LD_PRE) "18f27j13.lkr" -p$(MP_PROCESSOR_OPTION_LD) -w -x -u_DEBUG -z__MPLAB_BUILD=1 -u_CRUNTIME -z__MPLAB_DEBUG=1 -z__MPLAB_DEBUGGER_PK3=1 $(MP_LINKER_DEBUG_OPTION) -l ${MP_CC_DIR}\\..\\lib -o dist/${CND_CONF}/${IMAGE_TYPE}/PIC_27J13.${IMAGE_TYPE}.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED}
else
dist/${CND_CONF}/${IMAGE_TYPE}/PIC_27J13.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk
dist/${CND_CONF}/${IMAGE_TYPE}/PIC_27J13.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk 18f27j13.lkr
@${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE}
${MP_LD} $(MP_EXTRA_LD_PRE) "18f27j13.lkr" -p$(MP_PROCESSOR_OPTION_LD) -w -z__MPLAB_BUILD=1 -u_CRUNTIME -l ${MP_CC_DIR}\\..\\lib -o dist/${CND_CONF}/${IMAGE_TYPE}/PIC_27J13.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED}
endif
/PIC Stuff/PIC_27J13/nbproject/Makefile-genesis.properties
1,8 → 1,8
#
#Sun Aug 05 15:34:42 EDT 2012
default.com-microchip-mplab-nbide-toolchainC18-C18LanguageToolchain.md5=fd3c294f650afc344cfb0579847b1618
#Thu Dec 20 15:51:53 EST 2012
default.com-microchip-mplab-nbide-toolchainC18-C18LanguageToolchain.md5=e4cd2f1e5bba11c8ba952dafee98d887
default.languagetoolchain.dir=C\:\\Program Files (x86)\\Microchip\\mplabc18\\v3.42\\bin
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=39edbdd4b2849b7912992109f4b86781
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=d94e033fce233e60ccb9abf3a212a9b7
default.languagetoolchain.version=3.42
host.platform=windows
conf.ids=default
/PIC Stuff/PIC_27J13/nbproject/Makefile-local-default.mk
22,6 → 22,7
MP_JAVA_PATH="C:\Program Files (x86)\Microchip\MPLABX\sys\java\jre1.6.0_32-windows-x64\java-windows/bin/"
OS_CURRENT="$(shell uname -s)"
MP_CC="C:\Program Files (x86)\Microchip\mplabc18\v3.42\bin\mcc18.exe"
# MP_CPPC is not defined
# MP_BC is not defined
MP_AS="C:\Program Files (x86)\Microchip\mplabc18\v3.42\bin\..\mpasm\MPASMWIN.exe"
MP_LD="C:\Program Files (x86)\Microchip\mplabc18\v3.42\bin\mplink.exe"
28,6 → 29,7
MP_AR="C:\Program Files (x86)\Microchip\mplabc18\v3.42\bin\mplib.exe"
DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files (x86)/Microchip/MPLABX/mplab_ide/mplab_ide/modules/../../bin/extractobjectdependencies.jar"
MP_CC_DIR="C:\Program Files (x86)\Microchip\mplabc18\v3.42\bin"
# MP_CPPC_DIR is not defined
# MP_BC_DIR is not defined
MP_AS_DIR="C:\Program Files (x86)\Microchip\mplabc18\v3.42\bin\..\mpasm"
MP_LD_DIR="C:\Program Files (x86)\Microchip\mplabc18\v3.42\bin"
/PIC Stuff/PIC_27J13/nbproject/configurations.xml
6,8 → 6,6
projectFiles="true">
<itemPath>i2c.h</itemPath>
<itemPath>interrupts.h</itemPath>
<itemPath>led_backpack.h</itemPath>
<itemPath>maindefs.h</itemPath>
<itemPath>nfc.h</itemPath>
<itemPath>spi.h</itemPath>
<itemPath>uart.h</itemPath>
15,6 → 13,10
<itemPath>adc.h</itemPath>
<itemPath>xbee.h</itemPath>
<itemPath>oled_ssd1331.h</itemPath>
<itemPath>defines.h</itemPath>
<itemPath>timers.h</itemPath>
<itemPath>led_HT16K33.h</itemPath>
<itemPath>lux_TSL2561.h</itemPath>
</logicalFolder>
<logicalFolder name="LibraryFiles"
displayName="Library Files"
35,7 → 37,6
<itemPath>main.c</itemPath>
<itemPath>i2c.c</itemPath>
<itemPath>interrupts.c</itemPath>
<itemPath>led_backpack.c</itemPath>
<itemPath>nfc.c</itemPath>
<itemPath>spi.c</itemPath>
<itemPath>uart.c</itemPath>
44,6 → 45,9
<itemPath>adc.c</itemPath>
<itemPath>xbee.c</itemPath>
<itemPath>oled_ssd1331.c</itemPath>
<itemPath>timers.c</itemPath>
<itemPath>led_HT16K33.c</itemPath>
<itemPath>lux_TSL2561.c</itemPath>
</logicalFolder>
<logicalFolder name="ExternalFiles"
displayName="Important Files"
58,9 → 62,10
<developmentServer>localhost</developmentServer>
<targetDevice>PIC18F27J13</targetDevice>
<targetHeader></targetHeader>
<targetPluginBoard></targetPluginBoard>
<platformTool>PICkit3PlatformTool</platformTool>
<languageToolchain>C18</languageToolchain>
<languageToolchainVersion>3.40</languageToolchainVersion>
<languageToolchainVersion>3.42</languageToolchainVersion>
<platform>3</platform>
</toolsSet>
<compileType>
83,8 → 88,8
<makeCustomizationNormalizeHexFile>false</makeCustomizationNormalizeHexFile>
</makeCustomizationType>
<C18>
<property key="code-model" value="mL"/>
<property key="data-model" value="Oa-"/>
<property key="code-model" value="ml"/>
<property key="data-model" value="oa-"/>
<property key="default-char-unsigned" value="false"/>
<property key="enable-all-optimizations" value="true"/>
<property key="enable-int-promotion" value="true"/>
140,6 → 145,8
<property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>
<property key="hwtoolclock.frcindebug" value="false"/>
<property key="memories.aux" value="false"/>
<property key="memories.bootflash" value="false"/>
<property key="memories.configurationmemory" value="false"/>
<property key="memories.eeprom" value="false"/>
<property key="memories.flashdata" value="true"/>
<property key="memories.id" value="false"/>
149,6 → 156,7
<property key="poweroptions.powerenable" value="false"/>
<property key="programmertogo.imagename" value=""/>
<property key="programoptions.eraseb4program" value="true"/>
<property key="programoptions.pgmspeed" value="2"/>
<property key="programoptions.preserveeeprom" value="false"/>
<property key="programoptions.preserveprogramrange" value="false"/>
<property key="programoptions.preserveprogramrange.end" value="0x3f"/>
/PIC Stuff/PIC_27J13/nbproject/private/configurations.xml
5,7 → 5,7
<confs>
<conf name="default" type="2">
<platformToolSN>:=MPLABCommUSB:=04D8:=900A:=0002:=Microchip Technology Inc.:=PICkit 3:=BUR114189291:=x:=en</platformToolSN>
<languageToolchainDir>C:\Program Files (x86)\Microchip\mplabc18\v3.40\bin</languageToolchainDir>
<languageToolchainDir>C:\Program Files (x86)\Microchip\mplabc18\v3.42\bin</languageToolchainDir>
<mdbdebugger version="1">
<placeholder1>place holder 1</placeholder1>
<placeholder2>place holder 2</placeholder2>
/PIC Stuff/PIC_27J13/nfc.c
1,4 → 1,4
#include "maindefs.h"
#include "defines.h"
#include "nfc.h"
#include "i2c.h"
#include <string.h>
13,13 → 13,15
 
void NFC_Init() {
NFC_IRQ_TRIS = 1; // IRQ Pin is RC5
NFC_RESET_TRIS = 0; // Reset Pin is RC2
 
// Reset the PN532
NFC_RESET_LAT = 1;
NFC_RESET_LAT = 0;
Delay10TCYx(1);
NFC_RESET_LAT = 1;
/* NFC reset is disabled due to lack of pins */
// NFC_RESET_TRIS = 0; // Reset Pin is RC2
//
// // Reset the PN532
// NFC_RESET_LAT = 1;
// NFC_RESET_LAT = 0;
// Delay10TCYx(1);
// NFC_RESET_LAT = 1;
}
 
// Configures the SAM (Secure Access Module)
/PIC Stuff/PIC_27J13/oled_ssd1306.c
1,4 → 1,4
#include "maindefs.h"
#include "defines.h"
#include "oled_ssd1306.h"
#include "spi.h"
#include "string.h"
/PIC Stuff/PIC_27J13/oled_ssd1331.c
1,4 → 1,4
#include "maindefs.h"
#include "defines.h"
#include "oled_ssd1331.h"
#include "spi.h"
#include "string.h"
/PIC Stuff/PIC_27J13/oled_ssd1331.h
3,7 → 3,7
 
#define SSD1331_LCDWIDTH 96
#define SSD1331_LCDHEIGHT 64
#define SSD1331_STRING_BUFFER_SIZE 32
#define SSD1331_STRING_BUFFER_SIZE 64
 
// Select one of these defines to set the pixel color order
#define SSD1331_COLORORDER_RGB
/PIC Stuff/PIC_27J13/spi.c
1,4 → 1,4
#include "maindefs.h"
#include "defines.h"
#include "spi.h"
 
static SPI_DATA spi_data;
6,26 → 6,25
 
void SPI2_Init(unsigned char speed) {
// Set up SPI2 with specified pins
RPINR22 = PPS_SPI2_CLK_IN; // SPI2 CLK Input (Pin RB4)
PPS_SPI2_CLK_OUT = 11; // SPI2 CLK Output (Pin RB4)
#ifndef SPI2_WRITE_ONLY
RPINR21 = PPS_SPI2_MISO; // SPI2 Data Input (Pin RB3)
#endif
PPS_SPI2_MOSI = 10; // SPI2 Data Output (MOSI) (Pin RB2)
RPINR22 = PPS_SPI2_CLK_IN; // SPI2 CLK Input
PPS_SPI2_CLK_OUT = 11; // SPI2 CLK Output
 
SPI_CLK_TRIS = 0; // SPI2 clock pin (Pin RB4)
#ifndef SPI2_WRITE_ONLY
SPI_MISO_TRIS = 1; // SPI2 data in pin (Pin RB3)(MISO)
RPINR21 = PPS_SPI2_MISO; // SPI2 Data Input
SPI_MISO_TRIS = 1; // SPI2 data in pin (MISO)
#endif
SPI_MOSI_TRIS = 0; // SPI2 data out pin (Pin RB2)(MOSI)
SPI_CLK_TRIS = 0; // SPI2 clock pin
PPS_SPI2_MOSI = 10; // SPI2 Data Output (MOSI)
SPI_MOSI_TRIS = 0; // SPI2 data out pin (MOSI)
 
SPI_SLAVE_SELECT_TRIS = 0; // SPI2 slave select (Pin RB7)
SPI_SLAVE_SELECT_TRIS = 0; // SPI2 slave select
SPI_SLAVE_SELECT_LAT = 1; // SPI2 SS high (Idle)
 
SPI_RESET_TRIS = 0; // SPI2 reset (Pin RB6)
SPI_RESET_TRIS = 0; // SPI2 reset
SPI_RESET_LAT = 1; // SPI2 reset active low
 
SPI_DC_SELECT_TRIS = 0; // SPI2 D/C select (Pin RB5)
SPI_DC_SELECT_TRIS = 0; // SPI2 D/C select
SPI_DC_SELECT_LAT = 0;
 
SSP2STATbits.SMP = 0; // Input is sampled in the middle of data output time
42,43 → 41,15
PIE3bits.SSP2IE = 0;
#endif
 
#ifndef SPI2_WRITE_ONLY
spi_data_p->buffer_in_len = 0;
spi_data_p->buffer_in_read_ind = 0;
spi_data_p->buffer_in_write_ind = 0;
#endif
spi_data_p->buffer_out_ind = 0;
spi_data_p->buffer_out_len = 0;
}
 
void SPI2_Recv_Interrupt_Handler() {
unsigned char c;
 
if (SSP2STATbits.BF) { // Check if data receive flag is set
if (spi_data_p->buffer_in_len == MAXSPIBUF - 1) {
DBG_PRINT_SPI("SPI2: (ERROR) buffer overflow\r\n");
c = SSP2BUF; // Read SSP2BUF to clear it
} else {
// Save received data into buffer
spi_data_p->buffer_in[spi_data_p->buffer_in_write_ind] = SSP2BUF;
if (spi_data_p->buffer_in_write_ind == MAXSPIBUF - 1) {
spi_data_p->buffer_in_write_ind = 0;
} else {
spi_data_p->buffer_in_write_ind++;
}
spi_data_p->buffer_in_len++;
 
// Put next byte in SSP2BUF for transmit
if (spi_data_p->buffer_out_ind != spi_data_p->buffer_out_len) {
SSP2BUF = spi_data_p->buffer_out[spi_data_p->buffer_out_ind];
spi_data_p->buffer_out_ind++;
} else {
SPI_SLAVE_SELECT_LAT = 1; // Bring SS line high
spi_data_p->buffer_out_ind = 0;
spi_data_p->buffer_out_len = 0;
}
}
}
}
 
void SPI2_Write(unsigned char *msg, unsigned int length) {
#ifdef SPI2_USE_INTERRUPT
unsigned char i;
117,7 → 88,7
 
void SPI2_Write_Repeat(unsigned char c, unsigned int length) {
#ifdef SPI2_USE_INTERRUPT
// TODO
// TODO Implement interrupts for SPI2
#else
unsigned int i = 0;
unsigned char tmp = 0;
144,6 → 115,37
#endif
}
 
#ifndef SPI2_WRITE_ONLY
void SPI2_Recv_Interrupt_Handler() {
unsigned char c;
 
if (SSP2STATbits.BF) { // Check if data receive flag is set
if (spi_data_p->buffer_in_len == MAXSPIBUF - 1) {
DBG_PRINT_SPI("SPI2: (ERROR) buffer overflow\r\n");
c = SSP2BUF; // Read SSP2BUF to clear it
} else {
// Save received data into buffer
spi_data_p->buffer_in[spi_data_p->buffer_in_write_ind] = SSP2BUF;
if (spi_data_p->buffer_in_write_ind == MAXSPIBUF - 1) {
spi_data_p->buffer_in_write_ind = 0;
} else {
spi_data_p->buffer_in_write_ind++;
}
spi_data_p->buffer_in_len++;
 
// Put next byte in SSP2BUF for transmit
if (spi_data_p->buffer_out_ind != spi_data_p->buffer_out_len) {
SSP2BUF = spi_data_p->buffer_out[spi_data_p->buffer_out_ind];
spi_data_p->buffer_out_ind++;
} else {
SPI_SLAVE_SELECT_LAT = 1; // Bring SS line high
spi_data_p->buffer_out_ind = 0;
spi_data_p->buffer_out_len = 0;
}
}
}
}
 
void SPI2_Read(unsigned char length) {
#ifdef SPI2_USE_INTERRUPT
unsigned char i;
191,4 → 193,5
spi_data_p->buffer_in_len--;
}
return i;
}
}
#endif
/PIC Stuff/PIC_27J13/spi.h
1,6 → 1,8
#ifndef SPI_H
#define SPI_H
 
#include "defines.h"
 
#define MAXSPIBUF 64
 
// Option to use interrupt. If interrupt are used, SPI write does not block but
7,9 → 9,6
// there is a longer delay between reading/writing data
//#define SPI2_USE_INTERRUPT
 
// Option to write only
#define SPI2_WRITE_ONLY
 
// SPI speed selection
#define SPI2_FOSC_64 0b0010
#define SPI2_FOSC_16 0b0001
17,10 → 16,12
#define SPI2_FOSC_4 0b0000
 
typedef struct __SPI_DATA {
#ifndef SPI2_WRITE_ONLY
unsigned char buffer_in[MAXSPIBUF];
unsigned char buffer_in_read_ind;
unsigned char buffer_in_write_ind;
unsigned char buffer_in_len;
#endif
 
unsigned char buffer_out[MAXSPIBUF];
unsigned char buffer_out_ind;
28,12 → 29,14
} SPI_DATA;
 
void SPI2_Init(unsigned char speed);
void SPI2_Recv_Interrupt_Handler(void);
void SPI2_Write(unsigned char *msg, unsigned int length);
void SPI2_Write_Repeat(unsigned char c, unsigned int length);
#ifndef SPI2_WRITE_ONLY
void SPI2_Recv_Interrupt_Handler(void);
void SPI2_Read(unsigned char length);
unsigned char SPI2_Buffer_Len(void);
unsigned char SPI2_Read_Buffer(unsigned char *buffer);
#endif
 
#endif /* SPI_H */
 
/PIC Stuff/PIC_27J13/timers.c
1,57 → 1,35
/* The processor calls these handlers when an interrupt is triggered */
#include "maindefs.h"
#include <timers.h>
#include "defines.h"
#include "timers.h"
 
void timers_init() {
/*--------------------Timer Delay Formulas-------------------- */
/* InitTMR0 = 256 - ( Delay * Frequency ) / ( 4* Prescaler) */
/* Delay = (256 - InitTMR0 * Prescaler) / (Frequency / 4) */
/* ----------------------------------------------------------- */
void Timer1_Init(void) {
T1CONbits.TMR1CS = 0x2; // Clock source using T1OSC and T1CLK pins
T1CONbits.RD16 = 0x1; // Configure for 16-bit read/writes
T1CONbits.T1OSCEN = 0x1; // Enable crystal driver
PIE1bits.TMR1IE = 0x1; // Enable interrupt
 
OpenTimer0(TIMER_INT_ON & T0_16BIT & T0_SOURCE_INT & T0_PS_1_16);
T0CONbits.TMR0ON = 0; // Timer 0 initially off
 
// // Set timer 1 to overflow every two seconds
// OpenTimer1(TIMER_INT_ON & T1_16BIT_RW &
// T1_SOURCE_PINOSC & T1_PS_1_1 &
// T1_OSC1EN_ON & T1_SYNC_EXT_OFF,
// TIMER_GATE_OFF & TIMER_GATE_INT_OFF);
// Open timer 2 for ECCP1 (PWM)
OpenTimer2(TIMER_INT_OFF & T2_PS_1_4 & T2_POST_1_1);
 
// Open timer 3 for PWM IR signaling
OpenTimer3(TIMER_INT_ON & T3_16BIT_RW & T3_SOURCE_FOSC_4 &
T3_OSC1EN_OFF & T3_PS_1_1 & T3_SYNC_EXT_OFF, TIMER_GATE_OFF);
T3CONbits.TMR3ON = 0; // Timer 3 initially off
// Non-applicable settings
T1CONbits.T1CKPS = 0x0; // 1:1 prescale value
T1CONbits.NOT_T1SYNC = 0x1; // No external sync
T1GCONbits.TMR1GE = 0x0; // Disable gate control
}
 
// Interrupt handler for timer 0
void timer0_interrupt_handler() {
void Timer1_Enable(void) {
T1CONbits.TMR1ON = 1;
}
 
void timer0_enable() {
T0CONbits.TMR0ON = 1;
void Timer1_Disable(void) {
T1CONbits.TMR1ON = 0;
}
void timer0_disable() {
T0CONbits.TMR0ON = 0;
}
 
// Interrupt handler for timer 1
void timer1_interrupt_handler() {
}
 
void timer3_interrupt_handler() {
 
}
 
void timer3_enable() {
T3CONbits.TMR3ON = 1;
}
void timer3_disable() {
T3CONbits.TMR3ON = 0;
}
void Timer1_Interrupt_Handler(void) {
#ifdef _TEST_TIMER1_RTC
TMR1H = 0x7F;
TMR1L = 0xFF;
LED_BLUE_LAT = 1;
LED_RED_LAT = 1;
Delay10KTCYx(255);
LED_BLUE_LAT = 0;
LED_RED_LAT = 0;
#endif
}
/PIC Stuff/PIC_27J13/timers.h
1,14 → 1,9
#ifndef __timer_interrupt_handler_h
#define __timer_interrupt_handler_h
 
void timers_init(void);
void timer0_interrupt_handler(void);
void timer0_enable(void);
void timer0_disable(void);
void timer1_interrupt_handler(void);
void timer2_interrupt_handler(void);
void timer3_interrupt_handler(void);
void timer3_enable(void);
void timer3_disable(void);
void Timer1_Init(void);
void Timer1_Enable(void);
void Timer1_Disable(void);
void Timer1_Interrupt_Handler(void);
 
#endif
/PIC Stuff/PIC_27J13/uart.c
1,4 → 1,4
#include "maindefs.h"
#include "defines.h"
#include "uart.h"
#include "xbee.h"
#include <string.h>
/PIC Stuff/PIC_27J13/xbee.c
1,4 → 1,4
#include "maindefs.h"
#include "defines.h"
#include "xbee.h"
#include <string.h>