Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 771 → Rev 772

/C-OSD/trunk/main.c
31,6 → 31,9
#include <avr/pgmspace.h>
#include "main.h"
#include "max7456_software_spi.h"
#ifdef ANTENNATRACKTEST
#include "usart0.h"
#endif
#include "usart1.h"
#include "osd_helpers.h"
#include "config.h"
226,28 → 229,20
 
 
// set up Atmega162 Ports
DDRA |= (1 << PA1); // PA1 output (/CS)
DDRA |= ((1 << PA1) | (1 << PA2) | (1 << PA3) | (1 << PA5)); // PA1 output (/CS) | PA2 output (SDIN) | PA3 output (SCLK) | PA5 output (RESET)
MAX_CS_HIGH
DDRA |= (1 << PA2); // PA2 output (SDIN)
MAX_SDIN_LOW
DDRA |= (1 << PA3); // PA3 output (SCLK)
MAX_SCLK_LOW
DDRA |= (1 << PA5); // PA5 output (RESET)
MAX_RESET_HIGH
 
DDRC |= (1 << PC0); // PC0 output (LED1 gn)
DDRC |= ((1 << PC0) | (1 << PC1) | (1 << PC2) | (1 << PC3)); // PC0 output (LED1 gn) | PC1 output (LED2 rt) | PC2 output (LED3 gn) | PC3 output (LED4 rt)
LED1_OFF
DDRC |= (1 << PC1); // PC1 output (LED2 rt)
LED2_OFF
DDRC |= (1 << PC2); // PC2 output (LED3 gn)
LED3_OFF
DDRC |= (1 << PC3); // PC3 output (LED4 rt)
LED4_OFF
 
DDRC &= ~(1 << PC4); // PC4 input (MODE)
PORTC |= (1 << PC4); // pullup
DDRC &= ~(1 << PC5); // PC5 input (SET)
PORTC |= (1 << PC5); // pullup
DDRC &= ~((1 << PC4) | (1 << PC5)); // PC4 input (MODE) | PC5 input (SET)
PORTC |= ((1 << PC4) | (1 << PC5)); // pullup
 
// reset the MAX7456 to be sure any undefined states do no harm
MAX_RESET_LOW
297,6 → 292,12
// init usart
usart1_init();
 
 
 
#ifdef ANTENNATRACKTEST
usart0_init();
#endif
 
// keep serial port clean
usart1_DisableTXD();
 
393,6 → 394,41
//seconds_since_last_data = 0;
}
#endif
 
// ONLY FOR TESTING
#ifdef ANTENNATRACKTEST
#include <stdlib.h>
//#include <float.h>
//#include <math.h>
 
//usart0_puts("\x1B[2J\x1B[H");
 
 
/*
naviData.HomePositionDeviation.Distance = 23 * 100; // 23m away (cm * 100)
naviData.HomePositionDeviation.Bearing = 35; // 35°
altimeter_offset = 50; // 50m start height
naviData.CurrentPosition.Altitude = (int32_t) ((int32_t)250 * (int32_t)1000); // 250m height (mm * 1000)
*/
 
static char conv_array[7];
// should be float
int tanheight = (naviData.HomePositionDeviation.Distance * 100) / (naviData.CurrentPosition.Altitude - altimeter_offset);
// we need math.h and some faster AVR :)
//tanheight = rad2deg(atan(tanheight));
 
itoa((naviData.HomePositionDeviation.Bearing + 180) % 360, conv_array, 10);
usart0_puts("Bearing: ");
usart0_puts(conv_array);
usart0_puts("\tHeightangle: ");
itoa(tanheight, conv_array, 10);
usart0_puts(conv_array);
usart0_puts("\r\n");
#endif
 
 
rxd_buffer_locked = 0;
}
// handle keypress