Files @ 28bdbd881b55
Branch filter:

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

ethanzonca@CL-SEC241-08.cedarville.edu
Added looptime and other optimizations. LoopTime interrupt is firing, but incrementing may or may not work.
/*
 * Master Firmware
 *
 * Wireless Observational Modular Aerial Network
 * 
 * Ethan Zonca
 * Matthew Kanning
 * Kyle Ripperger
 * Matthew Kroening
 *
 */


#include "config.h"

#include <avr/io.h>
#include <util/delay.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>

#include "lib/serial.h"
#include "lib/aprs.h"
#include "lib/afsk.h"
#include "lib/led.h"
#include "lib/logger.h"
#include "lib/watchdog.h"
#include "lib/sd/sd_raw_config.h"

void micro_setup() {

}

int main(void)
{
    
	// Initialize. If this takes more than 4 seconds, be sure to reset the WDT
	time_setup();
	micro_setup();
	watchdog_setup();
	led_setup();
	serial_setup(); // Config serial ports
	logger_setup(); // this takes a few ms
	afsk_setup(); // can take a few ms
	
	
	//led_on(POWER);
	
	uint16_t ctr1 = 0;
	uint16_t ctr2 = 255;
		
	char logbuf[32];
	
	while(1)
    {
		led_on(STAT);
		sprintf(logbuf, "%d,%d,%d,%d,%d,%d\n", time_millis(),5*ctr1,ctr2, 12*ctr2,43*ctr1,5*ctr2);
		logger_log(logbuf);
		led_off(STAT);
		
		// Wait for transmission to complete before starting another.
		// Hopefully this will never delay because it should issue on a timed schedule. Software timers!
		while(afsk_busy());
		aprs_send(); // non-blocking
		
		ctr1++;
		ctr2-=6;
		wdt_reset();
    }
}