/PIC Stuff/PICX_27J13/defines.h |
---|
28,6 → 28,7 |
//#define _TEST_BMP |
//#define _TEST_GYRO |
//#define _TEST_ACCEL |
//#define _TEST_RTC |
//#define _TEST_LED_BACKPACK |
//#define _TEST_SSD1306_OLED |
//#define _TEST_SSD1331_OLED |
35,7 → 36,8 |
//#define _TEST_OLED_CHAR |
//#define _TEST_NFC_TO_SSD1306_OLED |
#define _TEST_LUX_TO_CHAR_OLED |
//#define _TEST_LUX_TO_CHAR_OLED |
#define _TEST_RTC_TO_LED_BACKPACK_CHAR_OLED |
// </editor-fold> |
// <editor-fold defaultstate="collapsed" desc="Debug Redirection"> |
/PIC Stuff/PICX_27J13/funclist |
---|
1,57 → 1,66 |
_I2C_Get_Status: CODE, 76556 0 214 |
_I2C_Interrupt_Master: CODE, 67304 0 1764 |
exp@coeff: MEDIUMCONST, 0 0 64649 |
_NHD_Write_String: CODE, 78440 0 92 |
_LUX_Enable: CODE, 79050 0 40 |
_NHD_Write_4_Bits: CODE, 77258 0 152 |
_I2C_Read_Buffer: CODE, 75864 0 238 |
__stringdata: MEDIUMCONST, 64691 0 843 |
_UART1_WriteS: CODE, 78818 0 64 |
_NHD_Init: CODE, 79090 0 36 |
_I2C_Interrupt_Slave: CODE, 65536 0 1768 |
_strlen: CODE, 78250 0 96 |
_I2C_Configure_Master: CODE, 78532 0 78 |
_LUX_Calculate_Lux: CODE, 69068 0 1422 |
_I2C_Master_Send: CODE, 75600 0 264 |
_font: MEDIUMCONST, 63288 0 1275 |
_dpowers: MEDIUMCONST, 64563 0 40 |
_UART1_Recv_Interrupt_Handler: CODE, 74300 0 428 |
_pn532response_firmwarevers: MEDIUMCONST, 64676 0 8 |
_main: CODE, 73090 0 732 |
_LUX_Init: CODE, 78682 0 68 |
_Interrupt_Enable: CODE, 79176 0 8 |
_numbertable: MEDIUMCONST, 64603 0 10 |
_NHD_Send_Command: CODE, 78930 0 40 |
_NHD_Send_Data: CODE, 78970 0 40 |
_pn532ack: MEDIUMCONST, 64684 0 7 |
_I2C_Process_Send: CODE, 76938 0 164 |
_LUX_Read_2_Bytes: CODE, 77410 0 140 |
___lmul: CODE, 76770 0 168 |
_LUX_Write_2_Bytes: CODE, 78346 0 94 |
_I2C_Interrupt_Handler: CODE, 78610 0 72 |
i2___lldiv: CODE, 77102 0 156 |
_Interrupt_Init: CODE, 79156 0 10 |
__initialization: CODE, 78152 0 92 |
_NHD_Begin: CODE, 75314 0 286 |
_alphatable: MEDIUMCONST, 64613 0 6 |
_I2C_Master_Restart: CODE, 76338 0 218 |
_LUX_Set_Gain: CODE, 77932 0 110 |
___lldiv: CODE, 75026 0 288 |
_I2C_Init: CODE, 74728 0 298 |
_LUX_Disable: CODE, 79010 0 40 |
_sprintf: CODE, 71514 0 830 |
_NHD_Set_Cursor: CODE, 77816 0 116 |
i2___llmod: CODE, 77688 0 128 |
i2_sprintf: CODE, 72344 0 746 |
_LED_Write_Digit_Num: CODE, 80528 0 102 |
_LED_Write_Num: CODE, 74802 0 724 |
___awdiv: CODE, 76442 0 322 |
_I2C_Get_Status: CODE, 78350 0 214 |
_LED_Write_Digit_Raw: CODE, 81100 0 80 |
_I2C_Interrupt_Master: CODE, 69236 0 1764 |
exp@coeff: MEDIUMCONST, 0 0 64527 |
_LED_Init: CODE, 81904 0 22 |
_NHD_Write_String: CODE, 80916 0 92 |
_LED_Set_Brightness: CODE, 79546 0 138 |
_DS3231_Begin: CODE, 79822 0 134 |
_NHD_Write_4_Bits: CODE, 79246 0 152 |
_I2C_Read_Buffer: CODE, 77894 0 238 |
__stringdata: MEDIUMCONST, 64569 0 966 |
_UART1_WriteS: CODE, 81536 0 64 |
_NHD_Init: CODE, 81838 0 36 |
_I2C_Interrupt_Slave: CODE, 67416 0 1820 |
_strlen: CODE, 80728 0 96 |
_I2C_Configure_Master: CODE, 81180 0 78 |
_I2C_Master_Send: CODE, 77630 0 264 |
_font: MEDIUMCONST, 63196 0 1275 |
_dpowers: MEDIUMCONST, 64471 0 10 |
___awmod: CODE, 77348 0 282 |
_UART1_Recv_Interrupt_Handler: CODE, 76006 0 436 |
i2___lwdiv: CODE, 80316 0 108 |
_LED_Write_Display: CODE, 79956 0 128 |
_pn532response_firmwarevers: MEDIUMCONST, 64554 0 8 |
i2_isdigit: CODE, 81710 0 48 |
_main: CODE, 65536 0 1880 |
_Interrupt_Enable: CODE, 81946 0 8 |
_numbertable: MEDIUMCONST, 64481 0 10 |
_NHD_Send_Command: CODE, 81758 0 40 |
_NHD_Send_Data: CODE, 81798 0 40 |
_pn532ack: MEDIUMCONST, 64562 0 7 |
_LED_Start: CODE, 78756 0 166 |
_LED_Draw_Colon: CODE, 81472 0 64 |
_I2C_Process_Send: CODE, 78922 0 164 |
i2___wmul: CODE, 81600 0 62 |
_I2C_Interrupt_Handler: CODE, 81332 0 72 |
i2___lwmod: CODE, 81008 0 92 |
_LED_Blink_Rate: CODE, 79398 0 148 |
_Interrupt_Init: CODE, 81926 0 10 |
__initialization: CODE, 80824 0 86 |
_DS3231_Get_Status: CODE, 80200 0 116 |
___lwdiv: CODE, 78564 0 192 |
_NHD_Begin: CODE, 77062 0 286 |
_alphatable: MEDIUMCONST, 64491 0 6 |
_I2C_Master_Restart: CODE, 78132 0 218 |
_DS3231_Get_Time: CODE, 75526 0 480 |
_I2C_Init: CODE, 76764 0 298 |
_LED_Clear: CODE, 80630 0 98 |
_isdigit: CODE, 81258 0 74 |
_sprintf: CODE, 71000 0 1614 |
_NHD_Set_Cursor: CODE, 80084 0 116 |
i2_sprintf: CODE, 72614 0 1164 |
_InterruptHandlerLow: CODE, 24 0 154 |
_Timer1_Interrupt_Handler: CODE, 79188 0 2 |
_Delay10KTCYx: CODE, 79126 0 30 |
_LUX_Set_Timing: CODE, 78042 0 110 |
_InterruptHandlerHigh: CODE, 8 0 77680 |
___llmod: CODE, 76102 0 236 |
log@coeff: MEDIUMCONST, 0 0 64676 |
_NHD_Wait_For_Ready: CODE, 78882 0 48 |
i2_strlen: CODE, 78750 0 68 |
_LUX_Get_Full_Luminosity: CODE, 73822 0 478 |
_NHD_Pulse_Enable: CODE, 79166 0 10 |
Total: 221830 |
_Timer1_Interrupt_Handler: CODE, 81958 0 2 |
_Delay10KTCYx: CODE, 81874 0 30 |
___lwmod: CODE, 79086 0 160 |
_InterruptHandlerHigh: CODE, 8 0 79814 |
log@coeff: MEDIUMCONST, 0 0 64554 |
_NHD_Wait_For_Ready: CODE, 81662 0 48 |
i2_strlen: CODE, 81404 0 68 |
___wmul: CODE, 80424 0 104 |
_NHD_Pulse_Enable: CODE, 81936 0 10 |
Total: 226583 |
/PIC Stuff/PICX_27J13/main.c |
---|
12,13 → 12,14 |
#include "sensor_nfc_PN532.h" |
#include "sensor_lux_TSL2561.h" |
#include "sensor_temp_BMP085.h" |
#include "sensor_gyro_L3G.h" |
#include "sensor_accel_LSM303.h" |
#include "sensor_rtc_DS3231.h" |
#include "display_led_HT16K33.h" |
#include "display_oled_ssd1306.h" |
#include "display_oled_ssd1331.h" |
#include "display_oled_NHD-0216KZW-AB5.h" |
#include "comm_xbee.h" |
#include "sensor_gyro_L3G.h" |
#include "sensor_accel_LSM303.h" |
// <editor-fold defaultstate="collapsed" desc="Configuration Bits"> |
/* --------------------------- Configuration Bits --------------------------- */ |
677,6 → 678,47 |
} |
} |
// </editor-fold> |
#elif defined(_TEST_RTC) |
// <editor-fold defaultstate="collapsed" desc="_TEST_RTC"> |
void main(void) { |
char output[64]; |
// Set all ports as digial I/O except for AN0-AN2 (pins 2-4) |
ANCON0 = 0xF8; |
ANCON1 = 0x1F; |
UART_DATA uart_data; |
UART1_Init(&uart_data); |
I2C_DATA i2c_data; |
I2C_Init(&i2c_data); |
I2C_Configure_Master(I2C_100KHZ); |
Interrupt_Init(); // Initialize the interrupt priorities |
Interrupt_Enable(); // Enable high-priority interrupts and low-priority interrupts |
sprintf(output, "\r\nBegin Program\r\n"); |
DBG_PRINT_MAIN(output, strlen(output)); |
DS3231_Begin(); |
// Sec, Min, Hour, DOW, Day, Month, Year, Mil Time, AM/PM |
// DS3231_Set_Time(30, 44, 12, 5, 4, 1, 13, 0, 0); |
char sec, min, hour, day, date, month, year, h_mil, h_am_pm; |
while (1) { |
DS3231_Get_Time(&sec, &min, &hour, &day, &date, &month, &year, &h_mil, &h_am_pm); |
sprintf(output, "%02d:%02d:%02d %s %s - %d/%d/%d (%d)\r\n", hour, min, sec, (h_am_pm) ? "PM" : "AM", |
(h_mil) ? "24H" : "12H", month, date, year, day); |
DBG_PRINT_MAIN(output, strlen(output)); |
Delay10KTCYx(255); |
Delay10KTCYx(255); |
Delay10KTCYx(255); |
Delay10KTCYx(255); |
Delay10KTCYx(255); |
Delay10KTCYx(255); |
} |
} |
// </editor-fold> |
#elif defined(_TEST_LED_BACKPACK) |
// <editor-fold defaultstate="collapsed" desc="_TEST_LED_BACKPACK"> |
void main(void) { |
1161,6 → 1203,117 |
} |
} |
// </editor-fold> |
#elif defined(_TEST_RTC_TO_LED_BACKPACK_CHAR_OLED) |
// <editor-fold defaultstate="collapsed" desc="_TEST_RTC_TO_LED_BACKPACK_CHAR_OLED"> |
void main(void) { |
char output[64]; |
// Set all ports as digial I/O |
ANCON0 = 0xFF; |
ANCON1 = 0x1F; |
I2C_DATA i2c_data; |
I2C_Init(&i2c_data); |
LED_DATA led_data; |
LED_Init(&led_data); |
OLED_CHAR_DATA oled_data; |
NHD_Init(&oled_data); |
I2C_Configure_Master(I2C_400KHZ); |
Interrupt_Init(); // Initialize the interrupt priorities |
Interrupt_Enable(); // Enable high-priority interrupts and low-priority interrupts |
LED_Start(); |
LED_Draw_Colon(1); |
NHD_Begin(16, 2); |
DS3231_Begin(); |
char sec, min, hour, day, date, month, year, h_mil, h_am_pm; |
int time; |
while (1) { |
DS3231_Get_Time(&sec, &min, &hour, &day, &date, &month, &year, &h_mil, &h_am_pm); |
time = hour * 100 + min; |
LED_Write_Num(time); |
NHD_Set_Cursor(0, 0); |
sprintf(output, "%02d:%02d:%02d %s", hour, min, sec, h_am_pm ? "PM" : "AM"); |
NHD_Write_String(output, strlen(output)); |
NHD_Set_Cursor(12, 0); |
switch (day) { |
case 1: |
sprintf(output, "*MON"); |
break; |
case 2: |
sprintf(output, "*TUE"); |
break; |
case 3: |
sprintf(output, "*WED"); |
break; |
case 4: |
sprintf(output, "*THU"); |
break; |
case 5: |
sprintf(output, "*FRI"); |
break; |
case 6: |
sprintf(output, "*SAT"); |
break; |
case 7: |
sprintf(output, "*SUN"); |
break; |
} |
NHD_Write_String(output, strlen(output)); |
NHD_Set_Cursor(0, 1); |
switch (month) { |
case 1: |
sprintf(output, "January"); |
break; |
case 2: |
sprintf(output, "February"); |
break; |
case 3: |
sprintf(output, "March"); |
break; |
case 4: |
sprintf(output, "April"); |
break; |
case 5: |
sprintf(output, "May"); |
break; |
case 6: |
sprintf(output, "June"); |
break; |
case 7: |
sprintf(output, "July"); |
break; |
case 8: |
sprintf(output, "August"); |
break; |
case 9: |
sprintf(output, "September"); |
break; |
case 10: |
sprintf(output, "October"); |
break; |
case 11: |
sprintf(output, "November"); |
break; |
case 12: |
sprintf(output, "December"); |
break; |
} |
NHD_Write_String(output, strlen(output)); |
sprintf(output, " %d 20%d", date, year); |
NHD_Write_String(output, strlen(output)); |
Delay10KTCYx(100); |
} |
} |
// </editor-fold> |
#elif defined(_TEST_XBEE) |
// <editor-fold defaultstate="collapsed" desc="_TEST_XBEE"> |
void main(void) { |
/PIC Stuff/PICX_27J13/nbproject/Makefile-default.mk |
---|
45,11 → 45,11 |
DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE} |
# Object Files Quoted if spaced |
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/main.p1 ${OBJECTDIR}/base_UART.p1 ${OBJECTDIR}/base_I2C.p1 ${OBJECTDIR}/base_SPI.p1 ${OBJECTDIR}/display_led_HT16K33.p1 ${OBJECTDIR}/sensor_nfc_PN532.p1 ${OBJECTDIR}/base_TIMERS.p1 ${OBJECTDIR}/comm_xbee.p1 ${OBJECTDIR}/base_ADC.p1 ${OBJECTDIR}/base_INTERRUPTS.p1 ${OBJECTDIR}/display_oled_NHD-0216KZW-AB5.p1 ${OBJECTDIR}/display_oled_ssd1306.p1 ${OBJECTDIR}/display_oled_ssd1331.p1 ${OBJECTDIR}/glcdfont.p1 ${OBJECTDIR}/sensor_lux_TSL2561.p1 ${OBJECTDIR}/sensor_temp_BMP085.p1 ${OBJECTDIR}/sensor_gyro_L3G.p1 ${OBJECTDIR}/sensor_accel_LSM303.p1 |
POSSIBLE_DEPFILES=${OBJECTDIR}/main.p1.d ${OBJECTDIR}/base_UART.p1.d ${OBJECTDIR}/base_I2C.p1.d ${OBJECTDIR}/base_SPI.p1.d ${OBJECTDIR}/display_led_HT16K33.p1.d ${OBJECTDIR}/sensor_nfc_PN532.p1.d ${OBJECTDIR}/base_TIMERS.p1.d ${OBJECTDIR}/comm_xbee.p1.d ${OBJECTDIR}/base_ADC.p1.d ${OBJECTDIR}/base_INTERRUPTS.p1.d ${OBJECTDIR}/display_oled_NHD-0216KZW-AB5.p1.d ${OBJECTDIR}/display_oled_ssd1306.p1.d ${OBJECTDIR}/display_oled_ssd1331.p1.d ${OBJECTDIR}/glcdfont.p1.d ${OBJECTDIR}/sensor_lux_TSL2561.p1.d ${OBJECTDIR}/sensor_temp_BMP085.p1.d ${OBJECTDIR}/sensor_gyro_L3G.p1.d ${OBJECTDIR}/sensor_accel_LSM303.p1.d |
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/main.p1 ${OBJECTDIR}/base_UART.p1 ${OBJECTDIR}/base_I2C.p1 ${OBJECTDIR}/base_SPI.p1 ${OBJECTDIR}/display_led_HT16K33.p1 ${OBJECTDIR}/sensor_nfc_PN532.p1 ${OBJECTDIR}/base_TIMERS.p1 ${OBJECTDIR}/comm_xbee.p1 ${OBJECTDIR}/base_ADC.p1 ${OBJECTDIR}/base_INTERRUPTS.p1 ${OBJECTDIR}/display_oled_NHD-0216KZW-AB5.p1 ${OBJECTDIR}/display_oled_ssd1306.p1 ${OBJECTDIR}/display_oled_ssd1331.p1 ${OBJECTDIR}/glcdfont.p1 ${OBJECTDIR}/sensor_lux_TSL2561.p1 ${OBJECTDIR}/sensor_temp_BMP085.p1 ${OBJECTDIR}/sensor_gyro_L3G.p1 ${OBJECTDIR}/sensor_accel_LSM303.p1 ${OBJECTDIR}/sensor_rtc_DS3231.p1 |
POSSIBLE_DEPFILES=${OBJECTDIR}/main.p1.d ${OBJECTDIR}/base_UART.p1.d ${OBJECTDIR}/base_I2C.p1.d ${OBJECTDIR}/base_SPI.p1.d ${OBJECTDIR}/display_led_HT16K33.p1.d ${OBJECTDIR}/sensor_nfc_PN532.p1.d ${OBJECTDIR}/base_TIMERS.p1.d ${OBJECTDIR}/comm_xbee.p1.d ${OBJECTDIR}/base_ADC.p1.d ${OBJECTDIR}/base_INTERRUPTS.p1.d ${OBJECTDIR}/display_oled_NHD-0216KZW-AB5.p1.d ${OBJECTDIR}/display_oled_ssd1306.p1.d ${OBJECTDIR}/display_oled_ssd1331.p1.d ${OBJECTDIR}/glcdfont.p1.d ${OBJECTDIR}/sensor_lux_TSL2561.p1.d ${OBJECTDIR}/sensor_temp_BMP085.p1.d ${OBJECTDIR}/sensor_gyro_L3G.p1.d ${OBJECTDIR}/sensor_accel_LSM303.p1.d ${OBJECTDIR}/sensor_rtc_DS3231.p1.d |
# Object Files |
OBJECTFILES=${OBJECTDIR}/main.p1 ${OBJECTDIR}/base_UART.p1 ${OBJECTDIR}/base_I2C.p1 ${OBJECTDIR}/base_SPI.p1 ${OBJECTDIR}/display_led_HT16K33.p1 ${OBJECTDIR}/sensor_nfc_PN532.p1 ${OBJECTDIR}/base_TIMERS.p1 ${OBJECTDIR}/comm_xbee.p1 ${OBJECTDIR}/base_ADC.p1 ${OBJECTDIR}/base_INTERRUPTS.p1 ${OBJECTDIR}/display_oled_NHD-0216KZW-AB5.p1 ${OBJECTDIR}/display_oled_ssd1306.p1 ${OBJECTDIR}/display_oled_ssd1331.p1 ${OBJECTDIR}/glcdfont.p1 ${OBJECTDIR}/sensor_lux_TSL2561.p1 ${OBJECTDIR}/sensor_temp_BMP085.p1 ${OBJECTDIR}/sensor_gyro_L3G.p1 ${OBJECTDIR}/sensor_accel_LSM303.p1 |
OBJECTFILES=${OBJECTDIR}/main.p1 ${OBJECTDIR}/base_UART.p1 ${OBJECTDIR}/base_I2C.p1 ${OBJECTDIR}/base_SPI.p1 ${OBJECTDIR}/display_led_HT16K33.p1 ${OBJECTDIR}/sensor_nfc_PN532.p1 ${OBJECTDIR}/base_TIMERS.p1 ${OBJECTDIR}/comm_xbee.p1 ${OBJECTDIR}/base_ADC.p1 ${OBJECTDIR}/base_INTERRUPTS.p1 ${OBJECTDIR}/display_oled_NHD-0216KZW-AB5.p1 ${OBJECTDIR}/display_oled_ssd1306.p1 ${OBJECTDIR}/display_oled_ssd1331.p1 ${OBJECTDIR}/glcdfont.p1 ${OBJECTDIR}/sensor_lux_TSL2561.p1 ${OBJECTDIR}/sensor_temp_BMP085.p1 ${OBJECTDIR}/sensor_gyro_L3G.p1 ${OBJECTDIR}/sensor_accel_LSM303.p1 ${OBJECTDIR}/sensor_rtc_DS3231.p1 |
CFLAGS= |
198,6 → 198,13 |
@-${MV} ${OBJECTDIR}/sensor_accel_LSM303.d ${OBJECTDIR}/sensor_accel_LSM303.p1.d |
@${FIXDEPS} ${OBJECTDIR}/sensor_accel_LSM303.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ |
${OBJECTDIR}/sensor_rtc_DS3231.p1: sensor_rtc_DS3231.c nbproject/Makefile-${CND_CONF}.mk |
@${MKDIR} ${OBJECTDIR} |
@${RM} ${OBJECTDIR}/sensor_rtc_DS3231.p1.d |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G --asmlist -D__DEBUG=1 --debugger=pickit3 --double=24 --float=24 --emi=wordwrite --opt=default,+asm,-asmfile,+speed,-space,-debug,9 --addrqual=ignore --mode=free -P -N255 --warn=0 --summary=default,-psect,-class,+mem,-hex,-file --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: %%s" "--msgformat=%%f:%%l: advisory: %%s" -o${OBJECTDIR}/sensor_rtc_DS3231.p1 sensor_rtc_DS3231.c |
@-${MV} ${OBJECTDIR}/sensor_rtc_DS3231.d ${OBJECTDIR}/sensor_rtc_DS3231.p1.d |
@${FIXDEPS} ${OBJECTDIR}/sensor_rtc_DS3231.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ |
else |
${OBJECTDIR}/main.p1: main.c nbproject/Makefile-${CND_CONF}.mk |
@${MKDIR} ${OBJECTDIR} |
325,6 → 332,13 |
@-${MV} ${OBJECTDIR}/sensor_accel_LSM303.d ${OBJECTDIR}/sensor_accel_LSM303.p1.d |
@${FIXDEPS} ${OBJECTDIR}/sensor_accel_LSM303.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ |
${OBJECTDIR}/sensor_rtc_DS3231.p1: sensor_rtc_DS3231.c nbproject/Makefile-${CND_CONF}.mk |
@${MKDIR} ${OBJECTDIR} |
@${RM} ${OBJECTDIR}/sensor_rtc_DS3231.p1.d |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G --asmlist --double=24 --float=24 --emi=wordwrite --opt=default,+asm,-asmfile,+speed,-space,-debug,9 --addrqual=ignore --mode=free -P -N255 --warn=0 --summary=default,-psect,-class,+mem,-hex,-file --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: %%s" "--msgformat=%%f:%%l: advisory: %%s" -o${OBJECTDIR}/sensor_rtc_DS3231.p1 sensor_rtc_DS3231.c |
@-${MV} ${OBJECTDIR}/sensor_rtc_DS3231.d ${OBJECTDIR}/sensor_rtc_DS3231.p1.d |
@${FIXDEPS} ${OBJECTDIR}/sensor_rtc_DS3231.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ |
endif |
# ------------------------------------------------------------------------------------ |
/PIC Stuff/PICX_27J13/nbproject/Makefile-genesis.properties |
---|
1,5 → 1,5 |
# |
#Wed Jan 02 02:59:02 EST 2013 |
#Thu Jan 03 22:03:22 EST 2013 |
default.languagetoolchain.dir=C\:\\Program Files (x86)\\Microchip\\xc8\\v1.12\\bin |
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=d94e033fce233e60ccb9abf3a212a9b7 |
default.languagetoolchain.version=1.12 |
/PIC Stuff/PICX_27J13/nbproject/configurations.xml |
---|
21,6 → 21,7 |
<itemPath>base_ADC.h</itemPath> |
<itemPath>sensor_gyro_L3G.h</itemPath> |
<itemPath>sensor_accel_LSM303.h</itemPath> |
<itemPath>sensor_rtc_DS3231.h</itemPath> |
</logicalFolder> |
<logicalFolder name="LinkerScript" |
displayName="Linker Files" |
47,6 → 48,7 |
<itemPath>sensor_temp_BMP085.c</itemPath> |
<itemPath>sensor_gyro_L3G.c</itemPath> |
<itemPath>sensor_accel_LSM303.c</itemPath> |
<itemPath>sensor_rtc_DS3231.c</itemPath> |
</logicalFolder> |
<logicalFolder name="ExternalFiles" |
displayName="Important Files" |
/PIC Stuff/PICX_27J13/sensor_rtc_DS3231.c |
---|
0,0 → 1,114 |
#include "defines.h" |
#include "sensor_rtc_DS3231.h" |
#include "base_I2C.h" |
void DS3231_Begin() { |
char reg[3]; |
reg[0] = DS3231_CONTROL; |
/* Control Register (0x0E) |
* Bit 7 - !EOSC |
* Bit 6 - BBSQW |
* Bit 5 - CONV |
* Bit 4 - RS2 |
* Bit 3 - RS1 |
* Bit 2 - INTCN |
* Bit 1 - A2IE |
* Bit 0 - A1IE |
*/ |
reg[1] = 0x04; |
/* Control Register 2 (0x0F) |
* Bit 3 = EN32kHZ |
*/ |
reg[2] = 0x00; |
// Set the configuration registers |
I2C_Master_Send(DS3231_ADDRESS, 3, reg); |
char result; |
do { |
result = I2C_Get_Status(); |
} while (!result); |
} |
char DS3231_Get_Status(void) { |
/* Status Register (0x0F) |
* Bit 7 - OSF |
* Bit 3 - EN32kHz |
* Bit 2 - BSY |
* Bit 1 - A2F |
* Bit 0 - A1F |
*/ |
char value; |
I2C_Master_Restart(DS3231_ADDRESS, 0x0F, 1); |
char result; |
do { |
result = I2C_Get_Status(); |
} while (!result); |
I2C_Read_Buffer(&value); |
return value; |
} |
void DS3231_Set_Time(char sec, char min, char hour, char day, char date, |
char month, char year, char h_mil, char h_am_pm) { |
// Format the data in a way that the chip expects |
char output[8]; |
output[0] = DS3231_SECONDS; |
output[1] = ((sec / 10) << 4) | (sec % 10); |
output[2] = ((min / 10) << 4) | (min % 10); |
output[3] = ((hour / 10) << 4) | (hour % 10); |
if (!h_mil) { |
output[3] |= (h_am_pm) ? 0x60 : 0x40; |
} |
output[4] = day; |
output[5] = ((date / 10) << 4) | (date % 10); |
output[6] = ((month / 10) << 4) | (month % 10); |
output[7] = ((year / 10) << 4) | (year % 10); |
// Check the status to make sure that it isnt currently busy |
char status = DS3231_Get_Status(); |
while (status & 0x04) |
status = DS3231_Get_Status(); |
// Write the data to the chip |
I2C_Master_Send(DS3231_ADDRESS, 8, output); |
char result; |
do { |
result = I2C_Get_Status(); |
} while (!result); |
} |
void DS3231_Get_Time(char *sec, char *min, char *hour, char *day, char *date, |
char *month, char *year, char *h_mil, char *h_am_pm) { |
// Check the status to make sure that it isnt currently busy |
char status = DS3231_Get_Status(); |
while (status & 0x04) |
status = DS3231_Get_Status(); |
// Request time data from the chip |
char input[7]; |
I2C_Master_Restart(DS3231_ADDRESS, 0x00, 7); |
char result; |
do { |
result = I2C_Get_Status(); |
} while (!result); |
I2C_Read_Buffer(input); |
// Parse BCD format into decimal and return |
*sec = ((input[0] >> 4) * 10) + (input[0] & 0x0F); |
*min = ((input[1] >> 4) * 10) + (input[1] & 0x0F); |
if (input[2] & 0x40) { |
*h_mil = 0; |
*h_am_pm = (input[2] & 0x20) ? 1 : 0; |
*hour = (((input[2] >> 4) & 0x01) * 10) + (input[2] & 0x0F); |
} else { |
*h_mil = 1; |
*hour = ((input[2] >> 4) * 10) + (input[2] & 0x0F); |
} |
*day = input[3]; |
*date = ((input[4] >> 4) * 10) + (input[4] & 0x0F); |
*month = ((input[5] >> 4) * 10) + (input[5] & 0x0F); |
*year = ((input[6] >> 4) * 10) + (input[6] & 0x0F); |
} |
/PIC Stuff/PICX_27J13/sensor_rtc_DS3231.h |
---|
0,0 → 1,40 |
#ifndef RTC_DS3231_H |
#define RTC_DS3231_H |
#define DS3231_ADDRESS 0x68 |
#define DS3231_SECONDS 0x00 |
#define DS3231_MINUTES 0x01 |
#define DS3231_HOUR 0x02 |
#define DS3231_DAY 0x03 |
#define DS3231_DATE 0x04 |
#define DS3231_MONTH 0x05 |
#define DS3231_YEAR 0x06 |
#define DS3231_ALARM1_SECONDS 0x07 |
#define DS3231_ALARM1_MINUTES 0x08 |
#define DS3231_ALARM1_HOUR 0x09 |
#define DS3231_ALARM1_DAY_DATE 0x0A |
#define DS3231_ALARM2_MINUTES 0x0B |
#define DS3231_ALARM2_HOUR 0x0C |
#define DS3231_ALARM2_DAY_DATE 0x0D |
#define DS3231_CONTROL 0x0E |
#define DS3231_STATUS 0x0F |
void DS3231_Begin(void); |
char DS3231_Get_Status(void); |
void DS3231_Set_Time(char sec, char min, char hour, char day, char date, |
char month, char year, char h_mil, char h_am_pm); |
void DS3231_Get_Time(char *sec, char *min, char *hour, char *day, char *date, |
char *month, char *year, char *h_mil, char *h_am_pm); |
//void DS3231_Set_Alarm1(char sec, char min, char hour, char date, bit mil, bit am_pm, bit dt_dy); |
//void DS3231_Set_Alarm2(char min, char hour, char date, bit mil, bit am_pm, bit dt_dy); |
#endif |