Subversion Repositories Projects

Rev

Blame | Last modification | View Log | RSS feed


/****************************************************************/
/*                                                                                                                              */
/*                               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_RX_COUNT            4

#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;

/**************************************************************/
/*                                                                                                                        */
/*                          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 uint16_t  ep_udbm_min            EEPROM;
static uint16_t  ep_udbm_max            EEPROM;
static uint16_t  ep_udbm_korr_1         EEPROM;
static uint16_t  ep_udbm_korr_2         EEPROM;
static uint8_t   ep_sIdxSteps           EEPROM;
static servo_t   ep_servo[SERVO_NUM_CHANNELS][sizeof(servo_t)]  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;

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;
uint16_t udbm_min = UDBM_MIN;
uint16_t udbm_max = UDBM_MAX;
uint16_t udbm_korr_1 = UDBM_KORR_FA;
uint16_t udbm_korr_2 = 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  tracking       = TRACKING_MIN;
uint8_t  track_hyst     = TRACKING_HYSTERESE;
uint8_t  track_tx = 0;
uint8_t  baudrate = BAUDRATE;
uint8_t  gps_display = 0;
uint8_t  gps_disp_clear;

uint8_t RSSI_Calc_UdBm(uint16_t *pudbm);
uint8_t Set_AV_Source(uint8_t src);

uint16_t udbm[12];              // RSSI-Bargraph
uint16_t* pudbm = 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

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);
char* my_itoa(int32_t zahl, uint8_t Vorz, uint8_t len, uint8_t Festkomma, uint8_t Nachkomma);

#endif /* SETTING_H_ */