Subversion Repositories Code-Repo

Compare Revisions

Ignore whitespace Rev 223 → Rev 224

/PIC Stuff/PICX_16F1829_BLE_IMU/Demo.py
18,9 → 18,9
print("Connected to serial port.")
# Loop reading in data from the sensor
while(1):
s = ser.read(19)
s = ser.read(21)
# Ensure that the data properly ends in a newline
if s[18] == ord('\n'):
if s[20] == ord('\n'):
# Read in accelerometer data and convert from two's compliment
A_X = ((s[1] << 8) | s[0])
A_Y = ((s[3] << 8) | s[2])
45,9 → 45,13
M_Y_N = twos_comp(M_Y, 16)
M_Z_N = twos_comp(M_Z, 16)
 
# Read in battery status
B_H = s[18]
B_L = s[19]
 
# Print out the processed data
print("A: %-6i %-6i %-6i G: %-6i %-6i %-6i M: %-6i %-6i %-6i" % \
(A_X_N, A_Y_N, A_Z_N, G_X_N, G_Y_N, G_Z_N, M_X_N, M_Y_N, M_Z_N))
print("A: %-6i %-6i %-6i G: %-6i %-6i %-6i M: %-6i %-6i %-6i B: %u.%u" % \
(A_X_N, A_Y_N, A_Z_N, G_X_N, G_Y_N, G_Z_N, M_X_N, M_Y_N, M_Z_N, B_H, B_L))
else:
break
except:
/PIC Stuff/PICX_16F1829_BLE_IMU/MAX17040.c
0,0 → 1,29
#include <xc.h>
#include "main.h"
#include "MAX17040.h"
#include "I2C.h"
 
void MAX17040_Init(void) {
char c[] = {MAX17040_MODE_H, 0x40, 0x00};
I2C_Master_Send(ADDRESS_LIPO, &c, 3);
while (!I2C_Get_Status());
 
}
 
void MAX17040_Read_Batt(char *h, char *l) {
char result, length, buffer[10] = {0};
 
char c = MAX17040_SOC_H;
 
I2C_Master_Restart(ADDRESS_LIPO, c, 2);
do {
result = I2C_Get_Status();
} while (!result);
 
// Read received data
length = I2C_Read_Buffer(buffer);
 
// Data is received in low-high byte order
*h = buffer[0];
*l = buffer[1];
}
/PIC Stuff/PICX_16F1829_BLE_IMU/MAX17040.h
0,0 → 1,20
#ifndef MAX17040_H
#define MAX17040_H
 
#define MAX17040_VCELL_H 0x02
#define MAX17040_VCELL_L 0x03
#define MAX17040_SOC_H 0x04
#define MAX17040_SOC_L 0x05
#define MAX17040_MODE_H 0x06
#define MAX17040_MODE_L 0x07
#define MAX17040_VERSION_H 0x08
#define MAX17040_VERSION_L 0x09
#define MAX17040_RCOMP_H 0x0C
#define MAX17040_RCOMP_L 0x0D
#define MAX17040_COMMAND 0xFE
 
void MAX17040_Init(void);
void MAX17040_Read_Batt(char *h, char *l);
 
#endif /* MAX17040_H */
 
/PIC Stuff/PICX_16F1829_BLE_IMU/RN-42.c
0,0 → 1,80
#include <xc.h>
#include "main.h"
#include "RN-42.h"
#include "UART.h"
#include <string.h>
 
extern char LED_G_ON;
extern char LED_R_ON;
 
void RN42_Init(void) {
if (RN42_Enter_CMD_Mode()) {
// Set authentication to open mode
char sa[] = "SA,0\r";
RN42_Send_CMD(sa, 5);
// Optimize for low latency rather than throughput
char sq[] = "SQ,16\r";
RN42_Send_CMD(sq, 6);
// // Allow continuous configuration
// char st[] = "ST,255\r";
// RN42_Send_CMD(st, 7);
// // Set page scan window to maximum
// char sj[] = "SJ,800\r";
// RN42_Send_CMD(sj, 7);
// // Enable connection status strings
// char so[] = "SO,!\r";
// RN42_Send_CMD(so, 5);
// Reboot with the new settings
char r[] = "R,1\r";
RN42_Send_CMD(r, 4);
}
}
 
char RN42_Enter_CMD_Mode(void) {
char ret, buffer[10];
char cmd_mode[] = "$$$";
UART_Write(cmd_mode, 3);
__delay_ms(30);
ret = UART_Read(buffer);
if (ret == 5 && !strncmp(buffer, "CMD\r\n", 5))
return 1;
else
return 0;
}
 
void RN42_Exit_CMD_Mode(void) {
char ret, buffer[10];
char cmd_ret[] = "---\r";
UART_Write(cmd_ret, 4);
__delay_ms(30);
ret = UART_Read(buffer); // Exiting should return "END"
}
 
char RN42_Send_CMD(char *cmd, char length) {
char ret, buffer[10];
UART_Write(cmd, length);
__delay_ms(30);
ret = UART_Read(buffer);
if (ret == 5 && !strncmp(buffer, "AOK\r\n", 5))
return 1;
else
return 0;
}
 
char RN42_Connected_Status(void) {
if (RN42_Enter_CMD_Mode()) {
char ret, buffer[10], cmd[] = "GK\r";
UART_Write(cmd, 3);
__delay_ms(30);
ret = UART_Read(buffer);
if (ret == 7 && !strncmp(buffer, "1,0,0\r\n", 7)) {
RN42_Exit_CMD_Mode();
return 1;
} else {
RN42_Exit_CMD_Mode();
return 0;
}
} else {
return 0;
}
}
/PIC Stuff/PICX_16F1829_BLE_IMU/RN-42.h
0,0 → 1,12
#ifndef RN_42_H
#define RN_42_H
 
void RN42_Init(void);
char RN42_Enter_CMD_Mode(void);
void RN42_Exit_CMD_Mode(void);
char RN42_Send_CMD(char *cmd, char length);
char RN42_Connected_Status(void);
 
 
#endif /* RN_42_H */
 
/PIC Stuff/PICX_16F1829_BLE_IMU/UART.h
1,7 → 1,7
#ifndef UART_H
#define UART_H
 
#define UART_BUFFER_SIZE 20
#define UART_BUFFER_SIZE 30
 
typedef struct {
char buffer_in[UART_BUFFER_SIZE];
/PIC Stuff/PICX_16F1829_BLE_IMU/funclist
1,35 → 1,44
_TIMER_2_Init: CODE, 3210 0 14
_I2C_Get_Status: CODE, 3578 0 62
_TIMER_2_Init: CODE, 2661 0 16
_I2C_Get_Status: CODE, 3217 0 62
_I2C_Interrupt_Master: CODE, 264 0 706
_TIMER_2_Start: CODE, 3171 0 3
_I2C_Read_Buffer: CODE, 3706 0 72
_TIMER_2_Start: CODE, 2623 0 3
__stringtab: STRING, 235 0 1
_I2C_Read_Buffer: CODE, 3546 0 72
__i1fptable: CODE, 257 0 7
_INTERRUPT_Init: CODE, 3168 0 3
__stringdata: STRING, 236 0 20
_INTERRUPT_Init: CODE, 2620 0 3
_UART_Read: CODE, 4013 0 83
_MAX17040_Init: CODE, 2728 0 31
_I2C_Interrupt_Slave: CODE, 970 0 424
_INTERRUPT_Handler: CODE, 4 0 46
_I2C_Configure_Master: CODE, 3273 0 34
_I2C_Master_Send: CODE, 145 0 83
_UART_Init: CODE, 3407 0 52
_main: CODE, 1611 0 205
_Error: CODE, 3459 0 57
_TIMER_1_Init: CODE, 3224 0 23
_Timer_2_Callback: CODE, 3640 0 66
_I2C_Process_Send: CODE, 3516 0 62
_I2C_Interrupt_Handler: CODE, 3247 0 26
_UART_TX_Interrupt_Handler: CODE, 3356 0 51
__initialization: CODE, 2012 0 31
_TIMER_2_Interrupt_Handler: CODE, 3174 0 5
_I2C_Master_Restart: CODE, 3778 0 79
_LSM303_Init: CODE, 1816 0 101
_I2C_Configure_Master: CODE, 2759 0 34
_I2C_Master_Send: CODE, 3930 0 83
_UART_Init: CODE, 3040 0 57
_RN42_Init: CODE, 3618 0 75
_main: CODE, 1611 0 210
_Error: CODE, 2983 0 57
_TIMER_1_Init: CODE, 2677 0 25
_Timer_2_Callback: CODE, 3343 0 66
_I2C_Process_Send: CODE, 3155 0 62
_I2C_Interrupt_Handler: CODE, 2702 0 26
_RN42_Enter_CMD_Mode: CODE, 3476 0 70
_UART_TX_Interrupt_Handler: CODE, 3097 0 58
__initialization: CODE, 2928 0 52
_TIMER_2_Interrupt_Handler: CODE, 2626 0 5
_I2C_Master_Restart: CODE, 3693 0 79
_LSM303_Init: CODE, 1821 0 104
_LSM303_Read_Accl: CODE, 52 0 93
_I2C_Init: CODE, 1917 0 95
_LSM303_Read_Magn: CODE, 3936 0 79
_Timer_1_Callback: CODE, 254 0 1
_UART_RX_Interrupt_Handler: CODE, 4015 0 81
_I2C_Init: CODE, 1925 0 95
_RN42_Send_CMD: CODE, 2829 0 47
_LSM303_Read_Magn: CODE, 3851 0 79
_Timer_1_Callback: CODE, 3 0 1
_MAX17040_Read_Batt: CODE, 3279 0 64
_strncmp: CODE, 3409 0 67
_UART_RX_Interrupt_Handler: CODE, 145 0 90
_Startup_Check: CODE, 1394 0 217
_L3G_Init: CODE, 228 0 26
_UART_Write: CODE, 3307 0 49
_TIMER_1_Interrupt_Handler: CODE, 3191 0 9
_L3G_Read_Gyro: CODE, 3857 0 79
_L3G_Init: CODE, 2020 0 26
_UART_Write: CODE, 2876 0 52
_TIMER_1_Interrupt_Handler: CODE, 2651 0 10
_L3G_Read_Gyro: CODE, 3772 0 79
_INTERRUPT_Enable: CODE, 2046 0 2
Total: 2943
Total: 3459
/PIC Stuff/PICX_16F1829_BLE_IMU/main.c
7,6 → 7,8
#include "I2C.h"
#include "L3G.h"
#include "LSM303.h"
#include "RN-42.h"
#include "MAX17040.h"
 
// <editor-fold defaultstate="collapsed" desc="Configuration Bits">
// CONFIG1
36,6 → 38,7
char LED_G_ON = 0;
char LED_B_ON = 0;
char timer_2_pwm = 0;
char connected = 0;
 
void Error(char ID) {
while(1) {
190,7 → 193,7
TIMER_2_Start();
 
// A small delay is needed for the sensors to start up
__delay_ms(10);
__delay_ms(1000);
 
// Run a check to ensure that all sensors are properly connected
Startup_Check();
198,23 → 201,40
// Initialze the sensors
L3G_Init();
LSM303_Init();
RN42_Init();
MAX17040_Init();
 
char output[19] = {0};
output[18] = '\n';
char output[21] = {0};
output[20] = '\n';
// char len, buffer[30];
 
LED_B_ON = 1;
while(1) {
__delay_ms(10);
 
__delay_ms(3000);
// len = UART_Read(buffer);
// if (len != 0) {
// if (!strncmp(buffer, "!CONNECT", 8)) {
// connected = 1;
// LED_G_ON = 1;
// }
// if (!strncmp(buffer, "!DISCONNECT", 11)) {
// connected = 0;
// LED_G_ON = 0;
// }
// }
 
while(1) {
LSM303_Read_Accl(&output[0], &output[1], &output[2], &output[3], &output[4], &output[5]);
L3G_Read_Gyro(&output[6], &output[7], &output[8], &output[9], &output[10], &output[11]);
LSM303_Read_Magn(&output[12], &output[13], &output[14], &output[15], &output[16], &output[17]);
// if (connected) {
LSM303_Read_Accl(&output[0], &output[1], &output[2], &output[3], &output[4], &output[5]);
L3G_Read_Gyro(&output[6], &output[7], &output[8], &output[9], &output[10], &output[11]);
LSM303_Read_Magn(&output[12], &output[13], &output[14], &output[15], &output[16], &output[17]);
MAX17040_Read_Batt(&output[18], &output[19]);
 
UART_Write((char *)&output[0], 19);
UART_Write((char *)&output[0], 21);
// }
 
__delay_ms(10);
 
// LED_B_ON = 0;
// LED_R_ON = 1;
// __delay_ms(250);
/PIC Stuff/PICX_16F1829_BLE_IMU/nbproject/Makefile-default.mk
45,17 → 45,17
DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
 
# Source Files Quoted if spaced
SOURCEFILES_QUOTED_IF_SPACED=main.c TIMER.c INTERRUPT.c UART.c I2C.c L3G.c LSM303.c
SOURCEFILES_QUOTED_IF_SPACED=main.c TIMER.c INTERRUPT.c UART.c I2C.c L3G.c LSM303.c RN-42.c MAX17040.c
 
# Object Files Quoted if spaced
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/main.p1 ${OBJECTDIR}/TIMER.p1 ${OBJECTDIR}/INTERRUPT.p1 ${OBJECTDIR}/UART.p1 ${OBJECTDIR}/I2C.p1 ${OBJECTDIR}/L3G.p1 ${OBJECTDIR}/LSM303.p1
POSSIBLE_DEPFILES=${OBJECTDIR}/main.p1.d ${OBJECTDIR}/TIMER.p1.d ${OBJECTDIR}/INTERRUPT.p1.d ${OBJECTDIR}/UART.p1.d ${OBJECTDIR}/I2C.p1.d ${OBJECTDIR}/L3G.p1.d ${OBJECTDIR}/LSM303.p1.d
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/main.p1 ${OBJECTDIR}/TIMER.p1 ${OBJECTDIR}/INTERRUPT.p1 ${OBJECTDIR}/UART.p1 ${OBJECTDIR}/I2C.p1 ${OBJECTDIR}/L3G.p1 ${OBJECTDIR}/LSM303.p1 ${OBJECTDIR}/RN-42.p1 ${OBJECTDIR}/MAX17040.p1
POSSIBLE_DEPFILES=${OBJECTDIR}/main.p1.d ${OBJECTDIR}/TIMER.p1.d ${OBJECTDIR}/INTERRUPT.p1.d ${OBJECTDIR}/UART.p1.d ${OBJECTDIR}/I2C.p1.d ${OBJECTDIR}/L3G.p1.d ${OBJECTDIR}/LSM303.p1.d ${OBJECTDIR}/RN-42.p1.d ${OBJECTDIR}/MAX17040.p1.d
 
# Object Files
OBJECTFILES=${OBJECTDIR}/main.p1 ${OBJECTDIR}/TIMER.p1 ${OBJECTDIR}/INTERRUPT.p1 ${OBJECTDIR}/UART.p1 ${OBJECTDIR}/I2C.p1 ${OBJECTDIR}/L3G.p1 ${OBJECTDIR}/LSM303.p1
OBJECTFILES=${OBJECTDIR}/main.p1 ${OBJECTDIR}/TIMER.p1 ${OBJECTDIR}/INTERRUPT.p1 ${OBJECTDIR}/UART.p1 ${OBJECTDIR}/I2C.p1 ${OBJECTDIR}/L3G.p1 ${OBJECTDIR}/LSM303.p1 ${OBJECTDIR}/RN-42.p1 ${OBJECTDIR}/MAX17040.p1
 
# Source Files
SOURCEFILES=main.c TIMER.c INTERRUPT.c UART.c I2C.c L3G.c LSM303.c
SOURCEFILES=main.c TIMER.c INTERRUPT.c UART.c I2C.c L3G.c LSM303.c RN-42.c MAX17040.c
 
 
CFLAGS=
134,6 → 134,22
@-${MV} ${OBJECTDIR}/LSM303.d ${OBJECTDIR}/LSM303.p1.d
@${FIXDEPS} ${OBJECTDIR}/LSM303.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/RN-42.p1: RN-42.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/RN-42.p1.d
@${RM} ${OBJECTDIR}/RN-42.p1
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G -D__DEBUG=1 --debugger=pickit3 --double=24 --float=24 --opt=default,+asm,-asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: %%s" "--msgformat=%%f:%%l: advisory: %%s" -o${OBJECTDIR}/RN-42.p1 RN-42.c
@-${MV} ${OBJECTDIR}/RN-42.d ${OBJECTDIR}/RN-42.p1.d
@${FIXDEPS} ${OBJECTDIR}/RN-42.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/MAX17040.p1: MAX17040.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/MAX17040.p1.d
@${RM} ${OBJECTDIR}/MAX17040.p1
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G -D__DEBUG=1 --debugger=pickit3 --double=24 --float=24 --opt=default,+asm,-asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: %%s" "--msgformat=%%f:%%l: advisory: %%s" -o${OBJECTDIR}/MAX17040.p1 MAX17040.c
@-${MV} ${OBJECTDIR}/MAX17040.d ${OBJECTDIR}/MAX17040.p1.d
@${FIXDEPS} ${OBJECTDIR}/MAX17040.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
else
${OBJECTDIR}/main.p1: main.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
191,6 → 207,22
@-${MV} ${OBJECTDIR}/LSM303.d ${OBJECTDIR}/LSM303.p1.d
@${FIXDEPS} ${OBJECTDIR}/LSM303.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/RN-42.p1: RN-42.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/RN-42.p1.d
@${RM} ${OBJECTDIR}/RN-42.p1
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G --double=24 --float=24 --opt=default,+asm,-asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: %%s" "--msgformat=%%f:%%l: advisory: %%s" -o${OBJECTDIR}/RN-42.p1 RN-42.c
@-${MV} ${OBJECTDIR}/RN-42.d ${OBJECTDIR}/RN-42.p1.d
@${FIXDEPS} ${OBJECTDIR}/RN-42.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/MAX17040.p1: MAX17040.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/MAX17040.p1.d
@${RM} ${OBJECTDIR}/MAX17040.p1
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G --double=24 --float=24 --opt=default,+asm,-asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: %%s" "--msgformat=%%f:%%l: advisory: %%s" -o${OBJECTDIR}/MAX17040.p1 MAX17040.c
@-${MV} ${OBJECTDIR}/MAX17040.d ${OBJECTDIR}/MAX17040.p1.d
@${FIXDEPS} ${OBJECTDIR}/MAX17040.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
endif
 
# ------------------------------------------------------------------------------------
/PIC Stuff/PICX_16F1829_BLE_IMU/nbproject/Makefile-genesis.properties
1,5 → 1,5
#
#Sat Sep 28 01:14:49 EDT 2013
#Sat Sep 28 16:30:53 EDT 2013
default.languagetoolchain.dir=C\:\\Program Files (x86)\\Microchip\\xc8\\v1.20\\bin
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=0d2b1469ad71adb787c711a416386331
default.languagetoolchain.version=1.20
/PIC Stuff/PICX_16F1829_BLE_IMU/nbproject/configurations.xml
11,6 → 11,8
<itemPath>I2C.h</itemPath>
<itemPath>L3G.h</itemPath>
<itemPath>LSM303.h</itemPath>
<itemPath>RN-42.h</itemPath>
<itemPath>MAX17040.h</itemPath>
</logicalFolder>
<logicalFolder name="LinkerScript"
displayName="Linker Files"
26,6 → 28,8
<itemPath>I2C.c</itemPath>
<itemPath>L3G.c</itemPath>
<itemPath>LSM303.c</itemPath>
<itemPath>RN-42.c</itemPath>
<itemPath>MAX17040.c</itemPath>
</logicalFolder>
<logicalFolder name="ExternalFiles"
displayName="Important Files"