/* * modules.c * * Created: 11/9/2012 11:44:22 AM * Author: kripperger */ #include #include #include #include "config.h" #include #include "modules.h" #include "lib/spi.h" #include "lib/i2c.h" #include "lib/sensors.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() { DESELECT_TEMP; setup_spi(); sensors_setupPressure(); } void modules_geiger_setup() { // Pin setup DDRA &= ~(1 << DDA0); // 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 sensors_readBoardTemp(); //Data Read sensors_readSpiTemp(); //Data Read sensors_readPressure(); //Data Read //sensors_readHumid(); //Data Read sensors_readLux(); //Data Read } void modules_geiger() { // No data gatering function needed for geiger daughter board // This is taken care of in interrupt (See geiger.c) } void modules_cameras() { // Gathers data and performs functions for cameras daughter board cameras_readAccelXYZ(); }