Files @ 5a775958ef65
Branch filter:

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

ethanzonca@CL-SEC241-08.cedarville.edu
Program timer is operational
/*
 * modules.c
 *
 * Created: 11/9/2012 11:44:22 AM
 *  Author: kripperger
 */ 

 #include <inttypes.h>
 #include <avr/io.h>
 #include <avr/interrupt.h>
 #include "config.h"
 #include <util/delay.h>
 #include "modules.h"
 
 
 
 void modules_setup(uint8_t id)
 {

	switch(id)
	{
		case 0:
			modules_generic_setup();
			break;
			
		case 1:
			modules_sensors_setup();
			break;
			
		case 2:
			modules_geiger_setup();
			break;
			
		case 3:
			modules_cameras_setup();
			break;
			
		default:
			modules_generic_setup();
			break;
	}
	  
 }
 
 void modules_run(uint8_t id)
 {

	 switch(id)
	 {
		 case 0:
			modules_generic();
			break;
		  
		 case 1:
			modules_sensors();
			break;
		  
		 case 2:
			modules_geiger();
			break;
		  
		 case 3:
			modules_cameras();
			break;
		  
		 default:
			modules_generic();
			break;
	 }
	  
 }
 
 
 void modules_generic_setup()
 {
	  
 }
  
 void modules_sensors_setup()
 {
	  
 }
  
 void modules_geiger_setup()
 {
	// Pin setup
	DDRA &= ~(1 << DDRA0);	// PA0 is an input
	
	
	 
	// Setup for interrupt input on PA0 (PCINT0)
	PCMSK0 |= (1 << PCINT0);	// Enable interrupt for PA0
	PCICR |= (1 << PCIE0);		// Enable ioc section PCIF0
	
	// Setup for interrupt from Timer2
	ASSR &= ~(1 << EXCLK);	// Disable external clock input (enabling crystal use)
	ASSR |= (1 << AS2);		// Enable timer2 async mode with an external crystal	
	_delay_ms(250);			// Let external 32KHz crystal stabilize
	TCCR2B = 0x05;			// Set the prescaler to 128: 32.768kHz / 128 = 1Hz overflow
	TIFR2 = 0x01;			// Reset timer2 overflow interrupt flag
	TIMSK2 = 0x01;			// Enable interrupt on overflow
	
	sei();					// Enable all interrupts




 }
  
 void modules_cameras_setup()
 {
	  	  
 }
  



 void modules_generic()
 {
	// Gathers data and performs functions for generic daughter board
	
 }
  
 void modules_sensors()
 {
	// Gathers data and performs functions for sensor daughter board
	 
 }
  
 void modules_geiger()
 {
	// Gathers data and performs functions for geiger daughter board
	  
 }
  
 void modules_cameras()
 {
	// Gathers data and performs functions for cameras daughter board
  
 }