Files @ b23f284b2449
Branch filter:

Location: seniordesign-firmware/slave/slave/slave.c

kripperger@CL-SEC241-09.cedarville.edu
Lots of work on module identification, sensor integration, and debug serial output formatting. Extra setup work was done porting code to new micros.
/*
 * Slave Firmware
 *
 * Wireless Observational Modular Aerial Network
 *
 * Kyle Ripperger
 * Ethan Zonca
 * Matthew Kanning
 * Matthew Kroening
 *
 */


#include "config.h"

#include <inttypes.h>
#include <avr/io.h>
#include <compat/twi.h>
#include <util/delay.h>
#include <avr/cpufunc.h>
#include <avr/interrupt.h>
#include "modules.h"
#include "lib/serial.h"
#include "lib/led.h"
#include "lib/inputOutput.h"
#include "lib/i2c.h"
#include "lib/spi.h"
#include "lib/geiger.h"
#include "lib/sensors.h"
#include "lib/cameras.h"


void micro_setup()
{
	// Generic microcontroller config options
	sei();	// Enable interrupts
	
}


int main(void)
{
	// Initialize		
	micro_setup();			// Generic microcontroller config options
	led_configure();		// Configure ports and registers for LED operation
	io_configure();			// Configure IO ports and registers
	
	i2c_init();				// Setup I2C
	serial0_setup();		// Config serial port
	
	uint8_t moduleID = io_getModuleId();	// Slave Module ID from rotary dip switch
	modules_setup(moduleID);				// Run setup functions for specific module
	
	
	uint8_t test;	//Debug
	uint8_t test2;	//Debug	
	

	
	//PORTA &= ~(1 << PA1);	//DEBUG////////////////OFF///////////////////////////////////////////////////////////////
	//PORTA |= (1 << PA1);	//DEBUG///////////////ON////////////////////////////////////////////////////////////////
	
	
	// This is just a serial output example
	char buff[32];	//DEBUG///////////////////////////////////////////////////////////////////////////////////////
	serial0_sendString("Starting\r\n");
	
	
    while(1)
    {			
		modules_run(moduleID);	// Runs specific module functions (like data reading)
								// Use program timer to run every so often. Time interval defined in config.h (TODO)


		// This is just a serial output example
		//sprintf(buff, "log: %u,%u,%u,%u\r\n", temp,temp2,temp3,temp4);


        //i2c_write(RTC_ADDR, 0x05, 0x3A);	//DEBUG: EXAMPLE//////////////////////////////////////////////////////
		
        _delay_ms(10);	//DEBUG/////////////
		
		
		test = geiger_getCount();	//Debug//////////
		
		led_output(test);//DEBUG//////////
		
		
		/********Examples of data reading and getting******************
		x = geiger_getCpm();			//Data get
		x = sensors_getSpiTemp();		//Data get
		x = sensors_getBoardTemp();		//Data get
		
		sensors_readSpiTemp();			//Data Read
		sensors_readBoardTemp();		//Data Read
		
		
		**************************************************************/
		
		
		test2 = sensors_getBoardTemp();	//DEBUG///////////////////////////////////////////////////////////////////////////


		sprintf(buff, "|ModuleID: %u |BoardTemp: %u |Seconds: %u\r\n",moduleID,test2,test); //DEBUG
		serial0_sendString(buff); //DEBUG

    }
	
	return 0;
}