Subversion Repositories Code-Repo

Compare Revisions

Ignore whitespace Rev 159 → Rev 160

/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