Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 1197 → Rev 1198

/NGVideo5_8/tags/v1.21/ngvideo.h
0,0 → 1,198
 
/****************************************************************/
/* */
/* NG-Video 5,8GHz */
/* */
/* Copyright (C) 2011 - gebad */
/* */
/* This code is distributed under the GNU Public License */
/* which can be found at http://www.gnu.org/licenses/gpl.txt */
/* */
/****************************************************************/
 
#ifndef SETTING_H_
#define SETTING_H_
 
/* Indexwerte für av_source bzw. zur Auswertung von av_source */
#define AV1 0
#define AV2 1
#define DIVERSITY 2
 
#define MARKER_SELECT 0xfc // 0xfc enspricht '>>' Menue-Marker
#define MARKER_AV 0xfb // 0xfb enspricht '<<' Diversity AV-Marker
#define MARKER_RSSI 'd' // Diversity, wenn RX umschaltet mittels RSSI-Wert
#define MARKER_SYNC 's' // Diversity, wenn RX umschaltet auf Grund der Bildsynchronisation
 
#define SET_MUX_0 PORTA &= ~(1<<MUX_IN); // MUX SxA enabled
#define SET_MUX_1 PORTA |= (1<<MUX_IN); // MUX SxB enabled
#define CLEAR_INT10 EIMSK &= ~((1<<INT1) | (1<<INT0)); // Interrupt für Sync ausschalten
#define SET_INT10 EIMSK |= (1<<INT1) | (1<<INT0); // External Interrupt Mask Register ein
 
/* Beep Verzögerungszeitein */
#define DBEEPVERS 2 // Beep on nach Versionsanzeige
#define DBEEPVERSP 30 // Beep Pause nach Versionsanzeige
#define BEEPENTER 1 // Beep on Enter kurz Scroll_Menu() und Select_Menu()
#define DBEEPWR 4 // Beep on geänderte Werte ROM schreiben
#define DBEEPWRP 30 // Beep Pause geänderte Werte ROM schreiben
#define BEEPBAT 20 // Beep on bei Akku low
#define BEEP_LOW_TIME 240 // TIMER0_1 aller 500ms aufgerufen, BeepIntervall Akku leer mit 2 Min Abstand beginnen
 
#define ENABLE_BTIMER 1 // damit Intervall Beeper für Akku leer mit TIMER0_1 gesteuert wird
#define DISABLE_BTIMER 0
 
#define GPS_DISP_NONE 0 // Anzeigen bei Antennennachführung per WI232 und GPS
#define GPS_DISP_CALC 1
#define GPS_DISP_CURRENT 2
#define GPS_DISP_HOME 3
#define GPS_MISC 4
#define GPS_RX_COUNT 5
 
#define BAUDRATE 5 // für Antennennachführung mittels MKCockpit
#define BAUDRATE_MIN 0
#define BAUDRATE_MAX 6
 
#define POLOLU_CMD 2
 
#define OFF 0
#define ON 1
 
#define EEPROM __attribute__ ((section(".eeprom")))
 
uint32_t baud[8] = {4800, 7200, 9600, 14400, 19200, 38400, 57600};
 
typedef struct {
uint8_t rev;
uint16_t min;
uint16_t max;
uint16_t mid;
} servo_t;
 
typedef struct
{ uint16_t min;
uint16_t max;
uint16_t korr_1;
uint16_t korr_2;
} udbm_t;
 
typedef struct
{
uint16_t u0;
uint16_t u1;
} adc_avg_t;
 
typedef struct
{
uint16_t min;
uint16_t max;
} clipo_t;
 
typedef struct
{
uint8_t Umk;
uint16_t Capacity;
uint16_t UsedCapacity;
uint32_t time_on;
} lipo_t;
 
typedef struct
{
uint32_t Sum;
uint16_t Count;
} current_t;
 
/**************************************************************/
/* */
/* EEPROM */
/* */
/**************************************************************/
static uint8_t ep_eep_init EEPROM;
static char ep_version[sizeof(VERSION)] EEPROM;
static uint8_t ep_dogm_vers EEPROM;
static uint8_t ep_contrast EEPROM;
static uint8_t ep_light_time EEPROM;
static uint8_t ep_u_offset EEPROM;
static uint32_t ep_u_min EEPROM;
static uint8_t ep_channel EEPROM;
static uint8_t ep_av_source EEPROM;
static uint8_t ep_language EEPROM;
static udbm_t ep_udbm[CHANNEL_MAX] EEPROM;
static uint8_t ep_sIdxSteps EEPROM;
static servo_t ep_servo[SERVO_NUM_CHANNELS][sizeof(servo_t)] EEPROM;
static uint8_t ep_servo_frame EEPROM;
static uint8_t ep_servo_nr EEPROM;
static uint8_t ep_single_step EEPROM;
static uint8_t ep_repeat EEPROM;
static uint8_t ep_pause EEPROM;
static uint8_t ep_pause_step EEPROM;
static uint8_t ep_tracking EEPROM;
static uint8_t ep_track_hyst EEPROM;
static uint8_t ep_track_tx EEPROM;
static uint8_t ep_baudrate EEPROM;
static current_t ep_current EEPROM;
static uint8_t ep_akku_nr EEPROM;
static lipo_t ep_lipo[AKKU_NR_MAX+1] EEPROM;
static uint8_t ep_mk_i_offset EEPROM;
static uint8_t ep_mk_i_faktor EEPROM;
static uint8_t ep_mk_w_faktor EEPROM;
 
uint8_t dogm_vers;
uint8_t contrast;
uint8_t light_time = BACKGR_LIGHT_MAX;
uint8_t backgr_light = OFF;
uint8_t u_offset = U_OFFSET;
uint32_t u_min = U_MIN;
uint8_t channel = CHANNEL;
uint8_t av_source = AV_SOURCE;
uint8_t language = NO_LANGUAGE;
udbm_t udbm = {UDBM_MIN, UDBM_MAX, UDBM_KORR_FA, UDBM_KORR_FA};
uint32_t hyst_u_min;
servo_t servo[SERVO_NUM_CHANNELS] = {{SERVO_REV, SERVO_I0_RIGHT, SERVO_I0_LEFT, SERVO_I0_MIDDLE},\
{SERVO_REV, SERVO_I0_RIGHT, SERVO_I0_LEFT, SERVO_I0_MIDDLE}};
uint8_t servo_frame = SERVO_PERIODE;
uint8_t single_step = SINGLE_STEP;
uint8_t repeat = REPEAT;
uint8_t pause = PAUSE;
uint8_t pause_step = PAUSE_STEP;
uint8_t tracking = TRACKING_MIN;
uint8_t track_hyst = TRACKING_HYSTERESE;
uint8_t track_tx = 0;
uint8_t baudrate = BAUDRATE;
current_t current = {0, 0};
uint8_t akku_nr = AKKU_NR_MIN;
lipo_t lipo = {0xff, AKKU_CAPACITY, 0, 0}; // Umk 255 ==> erste Inbetriebnahme keine Nachfrage Akku-Nr.
uint8_t mk_i_offset = MK_I_OFFSET;
uint8_t mk_i_faktor = MK_I_FAKTOR;
uint8_t mk_w_faktor = MK_W_FAKTOR;
 
uint8_t gps_display = 0;
uint8_t gps_disp_clear;
 
uint8_t RSSI_Calc_UdBm(uint16_t *pbar_udbm);
uint8_t Set_AV_Source(uint8_t src);
 
uint16_t bar_udbm[12]; // RSSI-Bargraph
uint16_t* pbar_udbm = bar_udbm;
uint8_t wudbm; // Differenz/Abstand benachbarter udbm[i] für differenzierteren Bargraphen
uint8_t bat_low = 1;
uint8_t sw_avx; // steuert über Set_AV_Source() oder rssi_diversity(av_source) Marker-Position und RX-Umschaltung
uint8_t mux_X; // berücksichtigt Schaltung auf Grund Synchronisation und RSSI (sw_avx meist RSSI) RX-Zählung
uint8_t MK_Motor_run = 0; // Flag für RX Time-Counter Start/Stop
uint8_t mk_timer = 0; // Zeitzähler lipo.time_on auf aus
uint8_t exit_while = 0; // unabhängige Task (z.B: Menu_MK_BatteryChangeNr() - Aufruf) kann Eingabe while-Schleife beenden, wenn 1
 
volatile uint8_t vsync0;
volatile uint8_t vsync1;
volatile uint8_t vscount0;
volatile uint8_t vscount1;
volatile uint32_t rxcount0 = 0;
volatile uint32_t rxcount1 = 0;
 
uint16_t ADC_Read( uint8_t channel );
void servoSetDefaultPos(void);
void USART_Init_Baudrate(void);
void Double_Beep(uint8_t time, uint8_t pause);
char* my_itoa(int32_t zahl, uint8_t Vorz, uint8_t len, uint8_t Festkomma, uint8_t Nachkomma);
void Displ_TimeMS(int32_t time);
 
 
#endif /* SETTING_H_ */