Files
@ 5a775958ef65
Branch filter:
Location: seniordesign-firmware/slave/slave/modules.c
5a775958ef65
2.2 KiB
text/plain
Program timer is operational
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | /*
* 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
}
|