Changeset - ffed0d762156
[Not reviewed]
Merge default
0 6 0
ethanzonca@CL-ENS241-08.cedarville.edu - 12 years ago 2013-01-29 14:23:46
ethanzonca@CL-ENS241-08.cedarville.edu
Merge
6 files changed with 181 insertions and 19 deletions:
0 comments (0 inline, 0 general)
slave/slave/config.h
Show inline comments
 
@@ -34,8 +34,9 @@
 
 //I2C Addresses
 
 #define EEPROM_ADDR 0xA0		// Read 0xA1 - Write 0xA0
 
 #define BOARDTEMP_ADDR 0x90	// Read 0x91 - Write 0x90
 
 #define PRESSURE_ADDR 0xB1		//THIS VALUE IS WRONG
 
 #define HUMID_ADDR 0xB4		//THIS VALUE IS WRONG
 
 #define PRESSURE_ADDR 0xEF		// Read 0xEF - Write 0xEE
 
 #define HUMID_ADDR 0x27		// Read 0x27 - Write 0x26
 
 #define LIGHT_ADDR 0x95		// Read 0x95 - Write 0x94
 
 #define RTC_ADDR 0xB2			//DEBUG [Used for testing]      // Read 0xA3 - Write 0xA2
 
 
slave/slave/lib/masterComm.c
Show inline comments
 
@@ -14,47 +14,155 @@
 
#include "serparser.h"
 
#include "inputOutput.h"
 
 
uint8_t dataTypes;
 
char buff2[64];
 
 
void masterComm_send()
 
 
char masterComm_checksum(const char* stringPtr)
 
{
 
	char sum = 0;
 
	while(*stringPtr != 0x00)
 
{
 
	serial0_sendString("[@");
 
		sum += *stringPtr;
 
		stringPtr++;
 
	}
 
	return sum;
 
}
 
 
 
void masterComm_types()
 
{
 
	switch(io_getModuleId())
 
	{
 
		case 0:
 
			// Generic
 
			snprintf(buff2,64,"%u",DATATYPES_GENERIC);
 
			dataTypes = DATATYPES_GENERIC;
 
			break;
 
			
 
		case 1:
 
			// Sensors
 
			snprintf(buff2,64,"%u",DATATYPES_SENSOR);
 
			dataTypes = DATATYPES_SENSOR;
 
			break;
 
			
 
		case 2:
 
			// Geiger
 
			snprintf(buff2,64,"%u",DATATYPES_GEIGER);
 
			dataTypes = DATATYPES_GEIGER;
 
			break;
 
			
 
		case 3:
 
			// Camera
 
			snprintf(buff2,64,"%u",DATATYPES_CAMERA);
 
			dataTypes = DATATYPES_CAMERA;
 
			break;
 
			
 
		default:
 
			snprintf(buff2,64,"%u",DATATYPES_GENERIC);
 
			dataTypes = DATATYPES_GENERIC;
 
			break;
 
	}
 
	
 
	serial0_sendString(buff2);
 

	
 

	
 
	
 
	serial0_sendString("got data\r\n");
 
}
 
 
 
void masterComm_check()
 
void masterComm_modules()
 
{
 
	// Send BoardTemperature (Common for all modules)
 
	serial0_sendString("[");
 
	snprintf(buff2,64,"1%u",sensors_getBoardTemp());
 
	serial0_sendString(buff2);
 
	serial0_sendString("]");	
 
	serial0_sendString(masterComm_checksum(buff2));	
 
	
 
	// Send module specific sensor readings
 
	switch(io_getModuleId())
 
	{
 
		case 0:
 
			// Generic
 
			
 
			break;
 
		
 
		case 1:
 
			// Sensors
 
			
 
			// Send SPI Temperature (Air)
 
			serial0_sendString("[");
 
			snprintf(buff2,64,"2%u",sensors_getSpiTemp());
 
			serial0_sendString(buff2);
 
			serial0_sendString("]");
 
			serial0_sendString(masterComm_checksum(buff2));
 
			
 
			// Send Ambient Light (Needs to be formatted)
 
			serial0_sendString("[");
 
			snprintf(buff2,64,"3%u",geiger_getCpm());		//FIX
 
			serial0_sendString(buff2);
 
			serial0_sendString("]");
 
			serial0_sendString(masterComm_checksum(buff2));
 
			
 
/*			
 
			// Send CPM (radiation)
 
			serial0_sendString("[");
 
			snprintf(buff2,64,"7%u",geiger_getCpm());
 
			serial0_sendString(buff2);
 
			serial0_sendString("]");
 
			serial0_sendString(masterComm_checksum(buff2));
 
		
 
			// Send CPM (radiation)
 
			serial0_sendString("[");
 
			snprintf(buff2,64,"7%u",geiger_getCpm());
 
			serial0_sendString(buff2);
 
			serial0_sendString("]");
 
			serial0_sendString(masterComm_checksum(buff2));
 
		
 
			// Send CPM (radiation)
 
			serial0_sendString("[");
 
			snprintf(buff2,64,"7%u",geiger_getCpm());
 
			serial0_sendString(buff2);
 
			serial0_sendString("]");
 
			serial0_sendString(masterComm_checksum(buff2));
 
*/
 
			
 
			break;
 
			
 
		case 2:
 
			// Geiger
 
			
 
			// Send CPM (radiation)
 
			serial0_sendString("[");
 
			snprintf(buff2,64,"7%u",geiger_getCpm());
 
			serial0_sendString(buff2);
 
			serial0_sendString("]");
 
			serial0_sendString(masterComm_checksum(buff2));
 
			
 
			break;
 
		
 
		case 3:
 
			// Camera
 
			
 
			break;
 
		
 
		default:
 
			
 
			break;
 
	}
 
}
 
 
 
void masterComm_send()
 
{
 
	masterComm_types();		// Calculates how many data types to send
 
	
 
	// Return resquest with number of data types to be sent
 
	serial0_sendString("[");						// Send opening bracket
 
	snprintf(buff2,64,"@%u",dataTypes);				// Send package (@ reply and number of data types)
 
	serial0_sendString(buff2);
 
	serial0_sendString("]");						// Send closing bracket
 
	serial0_sendString(masterComm_checksum(buff2));	// Calculate and send checksum
 
	
 
	masterComm_modules();	// Send sensor data
 
	
 
	
 
	serial0_sendString("got request\r\n");		//DEBUG
 
}
 
 
 
void masterComm_checkParser()
 
{
 
	if (serparser_parse() == PARSERESULT_PARSEOK)
 
	{
slave/slave/lib/masterComm.h
Show inline comments
 
@@ -8,9 +8,12 @@
 
#ifndef MASTERCOMM_H_
 
#define MASTERCOMM_H_
 
 
 
char masterComm_checksum(const char* stringPtr);
 
 
void masterComm_check();	// Runs parser and checks for data request
 
void masterComm_types();	// Calculates the number of types the module has
 
void masterComm_modules();	// Sends sensor data depending on module
 
 
void masterComm_checkParser();	// Runs parser and checks for data request
 
void masterComm_send();		// Sends data after being requested
 
 
slave/slave/lib/sensors.c
Show inline comments
 
@@ -17,6 +17,9 @@
 
 
int16_t	spiTemp;	// Thermocouple Temperature (from spi)
 
int8_t	boardTemp;	// Board Temperature (from i2c)
 
uint16_t pressure;	// Pressure (from i2c)
 
//int humid;		// Humidity (from i2c)
 
uint8_t light;		// Lux reading (from i2c)
 
 
 
void sensors_readSpiTemp()
 
@@ -52,6 +55,33 @@ void sensors_readBoardTemp()
 
	boardTemp = boardTemp - 3;						// Linear offset
 
}
 

	
 
void sensors_readPressure()
 
{//needs editing
 
	pressure = i2c_read(PRESSURE_ADDR, 0xF6);
 
	pressure = pressure << 8;
 
	pressure = pressure | i2c_read(PRESSURE_ADDR, 0xF7);
 
}
 

	
 
void sensors_readHumid()
 
{
 
	//humid = i2c_read(HUMID_ADDR, 0xXX);
 
}
 

	
 
void sensors_readLight()
 
{
 
	light = i2c_read(LIGHT_ADDR, 0x03);
 
	// light = light << 4;
 
	// light = light | (0x0F & i2c_read(LIGHT_ADDR, 0x04));  //  This can be used to read in the 4 LSBs from the second register
 
	// FOR FIRST BYTE:
 
	// Lux = 2^(exponent)*mantissa*0.72
 
	// exponent = 8xE3 + 4xE2 + 2xE1 + E0
 
	// mantissa = 8xM7 + 4xM6 + 2xM5 + M4
 
	// FOR BOTH BYTES:
 
	// Lux = 2^(exponent)*mantissa*0.045
 
	// exponent = 8xE3 + 4xE2 + 2xE1 + E0
 
	// mantissa = 128xM7 + 64xM6 + 32xM5 + 16xM4 + 8xM3 + 4xM2 + 2xM1 + M0
 
}
 

	
 
int16_t sensors_getSpiTemp(void)	// Gets spi temperature from variable
 
{
 
	return spiTemp;
 
@@ -62,3 +92,17 @@ int8_t sensors_getBoardTemp(void)	// Get
 
	return boardTemp;
 
}
 
 
uint16_t sensors_getPressure(void)
 
{
 
	return pressure;
 
}
 
 
//int sensors_getHumid(void)
 
//{
 
	//return humid;
 
//}
 
 
uint8_t sensors_getLight(void)
 
{
 
	return light;
 
}
 
\ No newline at end of file
slave/slave/lib/sensors.h
Show inline comments
 
@@ -12,8 +12,14 @@
 
 
void sensors_readSpiTemp(void);		// Reads spi temperature
 
void sensors_readBoardTemp(void);	// Reads board temperature
 
void sensors_readPressure(void);	// Reads pressure
 
void sensors_readHumid(void);		// Reads humidity
 
void sensors_readLight(void);		// Reads lux
 
 
int16_t sensors_getSpiTemp(void);	// Gets spi temperature from variable
 
int8_t sensors_getBoardTemp(void);	// Gets board temperature from variable
 
uint16_t sensors_getPressure(void);	// Gets pressure from variable
 
//int sensors_getHumid(void);	// Gets humidity from variable
 
uint8_t sensors_getLight(void);		// Gets lux from variable
 
 
#endif /* SENSORS_H_ */
 
\ No newline at end of file
slave/slave/slave.cproj
Show inline comments
 
@@ -20,7 +20,7 @@
 
    <OverrideVtor>false</OverrideVtor>
 
    <OverrideVtorValue />
 
    <eraseonlaunchrule>0</eraseonlaunchrule>
 
    <AsfVersion>3.1.3</AsfVersion>
 
    <AsfVersion>2.11.1</AsfVersion>
 
    <avrtoolinterface>ISP</avrtoolinterface>
 
    <avrtool>com.atmel.avrdbg.tool.ispmk2</avrtool>
 
    <com_atmel_avrdbg_tool_simulator>
0 comments (0 inline, 0 general)