0,0 → 1,123 |
|
/****************************************************************/ |
/* */ |
/* 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 _MENUE_H_ |
#define _MENUE_H_ |
|
#define SCROLL_MAIN_MAX 9 // index array Scroll_Menu scr_main_menu[] = {....} Anzahl-1, da Beginn bei 0 |
#define SCROLL_SERVO_MAX 4 // index array Scroll_Menu scr_servo_menu[] = {....} Anzahl-1, da Beginn bei 0 |
|
/* bei Change_Value(....) */ |
#define ZLE_VAL 1 // DOGM Zeile des zu ändernten Wertes, einfache generelle bessere Gestaltung |
|
#define C_REPEAT 0 // konstante repeat Geschwindigkeit |
#define V_REPEAT 1 // sich ändernte repeat Geschwindigkeit |
#define CHRLS 0 // Flag überladener Zeichensatz lcdSpecialChrLs |
#define CHRRS 1 // Flag überladener Zeichensatz lcdSpecialChrRs |
|
typedef struct |
{ |
const char *menu_nr; // Stringzeiger auf Befehlsnamen |
void (*fp)(void); // Zeiger auf auszuführende Funktion |
} command_table_t; |
|
void Menu_Main (void); |
void Menu_AV_Source (void); |
void Menu_RX_Channel (void); |
void Menu_RSSI_Calibr (void); |
void Menu_RSSI_min (void); |
void Menu_RSSI_min_all (void); |
void Menu_RSSI_max (void); |
void Menu_Language (void); |
void Menu_Servo_Calibr (void); |
void Menu_Servo_Steps (void); |
void Menu_Servo1 (void); |
void Menu_Servo2 (void); |
void Menu_Servo1_rev (void); |
void Menu_Servo1_left (void); |
void Menu_Servo1_right (void); |
void Menu_Servo1_middle (void); |
void Menu_Servo2_rev (void); |
void Menu_Servo2_left (void); |
void Menu_Servo2_right (void); |
void Menu_Servo2_middle (void); |
void Menu_Servo_Test (void); |
void Menu_Test_Frame (void); |
void Menu_Test_ServoNr (void); |
void Menu_Test_PulseWidth (void); |
void Menu_Test_Continuous (void); |
void Menu_Test_SingleStep (void); |
void Menu_Test_Repeat (void); |
void Menu_Test_Pause (void); |
void Menu_Test_Pause_Step (void); |
void Menu_Test_Start (void); |
void Menu_lcd (void); |
void Menu_lcd_Contrast (void); |
void Menu_lcd_Backgr_Light (void); |
void Menu_Battery (void); |
void Menu_Low_U_Setup (void); |
void Menu_U_Offset (void); |
void Menu_MK_Battery (void); |
void Menu_MK_BatteryNr (void); |
void Menu_MK_BatteryCapacity(void); |
void Menu_MK_I_Offset (void); |
void Menu_MK_I_Faktor (void); |
void Menu_MK_W_Faktor (void); |
void Menu_Tracking_Ant (void); |
void Menu_Tracking_Option (void); |
void Menu_GPS_Display (void); |
void Menu_GPS_Display_FLAG (void); |
void Menu_GPS_Displ_RX_Time (void); |
|
char pmenu[6] = {"0"}; // Zuordnung Menü Programmgliederung zu hinterlegten Funktionen |
char tmp_pmenu[6]; |
|
uint8_t ch_stored; // Flag zur Speicherung, wenn Wert im Hauptdisplay geändert |
uint8_t coldstart; // Flag erstmaliger MK-Start(Motore) nur nach GPS-Fix |
|
void Displ_Main_Disp(void); |
void Displ_AV_Mark(uint8_t p, char marker); |
void Displ_Str_mid(char *str, uint8_t zle); |
void Displ_RX_Time(void); |
void Menu_MK_BatteryChangeNr(void); |
|
#define RIGHT 0 // Servopostionen, welche vom Einbau abhängig sind |
#define LEFT 1 |
#define MIDDLE 2 |
|
typedef struct |
{ |
uint16_t min; // entspricht Servopostionen, welche vom Einbau abhängig sind |
uint16_t max; |
} servo_limit_t; |
|
servo_limit_t servo_limit[2][3] = {{{SERVO_I0_RIGHT_MIN, SERVO_I0_RIGHT_MAX},\ |
{SERVO_I0_LEFT_MIN, SERVO_I0_LEFT_MAX},\ |
{SERVO_I0_MIDDLE_MIN, SERVO_I0_MIDDLE_MAX}},\ |
{{SERVO_I1_RIGHT_MIN, SERVO_I1_RIGHT_MAX},\ |
{SERVO_I1_LEFT_MIN, SERVO_I1_LEFT_MAX},\ |
{SERVO_I1_MIDDLE_MIN, SERVO_I1_MIDDLE_MAX}}}; |
typedef struct |
{ |
uint16_t min; // entspricht Servopostionen, welche vom Einbau abhängig sind |
uint16_t max; |
uint16_t mid; |
} steps_pw_t; |
|
// Servopositionen für 950µs, 2,05ms und 1,5ms ==> Ergebnis Schritte. Da Zeit in µs ist F_CPU*e-1 |
const steps_pw_t steps_pw[2] = {{(uint64_t)950*F_CPU*1e-6/SERVO_PRESCALER + 0.5, (uint64_t)2050*F_CPU*1e-6/SERVO_PRESCALER + 0.5, (uint64_t)1500*F_CPU*1e-6/SERVO_PRESCALER + 0.5},\ |
{(uint64_t)950*4*F_CPU*1e-6/SERVO_PRESCALER + 0.5, (uint64_t)2050*4*F_CPU*1e-6/SERVO_PRESCALER + 0.5, (uint64_t)1500*4*F_CPU*1e-6/SERVO_PRESCALER + 0.5}}; |
|
# define POSIDX_MAX 4 |
const uint8_t PosIdx[POSIDX_MAX] = {1, 0, 1, 2 }; // anzufahrende Servopositionen 0=MIN, 1=MID, 2=MAX |
|
#endif /* _MENUE_H */ |