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 |