Merge branch 'next' into projectkk2glider/9xe_adc3_driver

Conflicts:
	radio/src/myeeprom.h
This commit is contained in:
Damjan Adamic
2014-12-27 16:20:14 +01:00
parent 6304679582
commit eca81904d2
18 changed files with 43414 additions and 1224 deletions
File diff suppressed because it is too large Load Diff
+7 -2
View File
@@ -299,7 +299,7 @@ CHANNELS_MONITOR_INV_HIDE = NO
# Use newlib-nano
# Values = NO, YES
NANO = NO
NANO = YES
# Use custom bin based allocator for Lua
# Values = NO, YES
@@ -610,12 +610,17 @@ ifeq ($(PCB), MEGA2560)
THR_TRACE = YES
INCDIRS += targets/mega2560 targets/stock FatFs FatFs/option
BOARDSRC = main_avr.cpp targets/mega2560/board_mega2560.cpp
EXTRABOARDSRC = targets/mega2560/lcd_driver_ST7565R.cpp targets/common_avr/telemetry_driver.cpp
EEPROMSRC = eeprom_common.cpp eeprom_rlc.cpp
LCDSRC = lcd_common.cpp lcd_default.cpp
PULSESSRC = pulses/pulses_avr.cpp
CPPSRC += audio_avr.cpp
ifeq ($(PCBREV), ST7565P)
EXTRABOARDSRC = targets/stock/lcd_driver.cpp targets/common_avr/telemetry_driver.cpp
else
EXTRABOARDSRC = targets/mega2560/lcd_driver_ST7565R.cpp targets/common_avr/telemetry_driver.cpp
endif
ifeq ($(SDCARD), YES)
EXTRABOARDSRC += FatFs/ff.c FatFs/fattime.c FatFs/option/ccsbcs.c targets/gruvin9x/diskio.cpp
CPPDEFS += -DRTCLOCK
+2 -2
View File
@@ -263,8 +263,8 @@ LIBS = $(DLIBS) $(ULIBS)
MCFLAGS = -mcpu=$(MCU)
#ASFLAGS = $(MCFLAGS) -g -gdwarf-2 -Wa,-amhls=$(OBJDIR)/$(notdir $(<:.s=.lst)) $(ADEFS)
CPFLAGS = $(MCFLAGS) $(OPT) -fdata-sections -ffunction-sections -gdwarf-2 -mthumb -fomit-frame-pointer -Wall -Wstrict-prototypes -fverbose-asm $(DEFS)
LDFLAGS = $(MCFLAGS) -mthumb -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(FULL_PRJ).map,--cref,--no-warn-mismatch $(LIBDIR)
CPFLAGS = $(MCFLAGS) $(OPT) -gdwarf-2 -mthumb -fomit-frame-pointer -Wall -Wstrict-prototypes -fverbose-asm $(DEFS)
LDFLAGS = $(MCFLAGS) -mthumb -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(FULL_PRJ).map,--cref,--no-warn-mismatch $(LIBDIR) --specs=nano.specs
CPPFLAGS = $(MCFLAGS) $(OPT) -gdwarf-2 -mthumb -fomit-frame-pointer -Wall -fverbose-asm $(DEFS)
CPPFLAGS += $(CPPDEFS)
+3 -1
View File
@@ -495,7 +495,9 @@ void evalInputs(uint8_t mode)
if (tmp==0 || (tmp==1 && (bpanaCenter & mask))) {
anaCenter |= mask;
if ((g_model.beepANACenter & mask) && !(bpanaCenter & mask) && !calibrationState) {
AUDIO_POT_MIDDLE(i);
if (!IS_POT(i) || IS_POT_AVAILABLE(i)) {
AUDIO_POT_MIDDLE(i);
}
}
}
}
+5 -5
View File
@@ -396,11 +396,11 @@ PACK(typedef struct {
#define IS_TRAINER_EXTERNAL_MODULE() (g_model.trainerMode == TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE || g_model.trainerMode == TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE)
#define MODELDATA_BITMAP char bitmap[LEN_BITMAP_NAME];
#define MODELDATA_EXTRA uint8_t externalModule; uint8_t trainerMode; ModuleData moduleData[NUM_MODULES+1]; char curveNames[MAX_CURVES][6]; ScriptData scriptsData[MAX_SCRIPTS]; char inputNames[MAX_INPUTS][LEN_INPUT_NAME]; uint8_t nPotsToWarn; int8_t potPosition[NUM_POTS];
#if defined(REV9E)
#define swarnstate_t uint64_t
#else
#define swarnstate_t uint32_t
#endif
#if defined(REV9E)
#define swarnstate_t uint64_t
#else
#define swarnstate_t uint32_t
#endif
#define swarnenable_t uint16_t
#elif defined(PCBSKY9X)
enum ModuleIndex {
+4 -1
View File
@@ -1811,7 +1811,10 @@ void doMixerCalculations()
timerState->cnt=0;
}
else if (tm == TMRMODE_THR_TRG) {
if (val || newTimerVal > 0) {
if (val) {
timerState->state = TMR_TRIGGED;
}
if (timerState->state == TMR_TRIGGED) {
newTimerVal++;
}
}
+3
View File
@@ -380,6 +380,8 @@ enum PotType {
#define IS_POT_WITHOUT_DETENT(x) (true)
#endif
#define IS_POT(x) ((x)>=POT1 && (x)<=POT_LAST)
#define GET_LOWRES_POT_POSITION(i) (getValue(MIXSRC_FIRST_POT+(i)) >> 4)
#define SAVE_POT_POSITION(i) g_model.potPosition[i] = GET_LOWRES_POT_POSITION(i)
@@ -858,6 +860,7 @@ extern uint8_t trimsDisplayMask;
#define TMR_RUNNING 1
#define TMR_NEGATIVE 2
#define TMR_STOPPED 3
#define TMR_TRIGGED 4
void timerReset(uint8_t idx);
void flightReset();
+13 -11
View File
@@ -589,11 +589,11 @@ int8_t getMovedSwitch()
#if defined(PCBTARANIS)
for (int i=0; i<NUM_SWITCHES; i++) {
if (SWITCH_EXISTS(i)) {
swarnstate_t mask = (0x03 << (i*2));
swarnstate_t mask = ((swarnstate_t)0x03 << (i*2));
uint8_t prev = (switches_states & mask) >> (i*2);
uint8_t next = (1024+getValue(MIXSRC_SA+i)) / 1024;
if (prev != next) {
switches_states = (switches_states & (~mask)) | (next << (i*2));
switches_states = (switches_states & (~mask)) | ((swarnstate_t)next << (i*2));
if (i<5)
result = 1+(3*i)+next;
else if (i==5)
@@ -660,7 +660,7 @@ void checkSwitches()
#if defined(PCBTARANIS)
for (int i=0; i<NUM_SWITCHES; i++) {
if (SWITCH_WARNING_ALLOWED(i) && !(g_model.switchWarningEnable & (1<<i))) {
swarnstate_t mask = (0x03 << (i*2));
swarnstate_t mask = ((swarnstate_t)0x03 << (i*2));
if (!((states & mask) == (switches_states & mask))) {
warn = true;
}
@@ -710,18 +710,20 @@ void checkSwitches()
if ((last_bad_switches != switches_states) || (last_bad_pots != bad_pots)) {
MESSAGE(STR_SWITCHWARN, NULL, STR_PRESSANYKEYTOSKIP, ((last_bad_switches == 0xff) || (last_bad_pots == 0xff)) ? AU_SWITCH_ALERT : AU_NONE);
int x = 60, y = 4*FH+3;
int numWarnings = 0;
for (int i=0; i<NUM_SWITCHES; ++i) {
if (SWITCH_WARNING_ALLOWED(i) && !(g_model.switchWarningEnable & (1<<i))) {
swarnstate_t mask = (0x03 << (i*2));
swarnstate_t mask = ((swarnstate_t)0x03 << (i*2));
uint8_t attr = ((states & mask) == (switches_states & mask)) ? 0 : INVERS;
if (attr) {
char c = "\300-\301"[(states & mask) >> (i*2)];
putsMixerSource(x, y, MIXSRC_FIRST_SWITCH+i, attr);
lcd_putcAtt(lcdNextPos, y, c, attr);
x = lcdNextPos + 3;
if (x >= LCD_W - 4*FW && y == 4*FH+3) {
y = 6*FH-2;
x = 60;
if (++numWarnings < 7) {
char c = "\300-\301"[(states & mask) >> (i*2)];
putsMixerSource(x, y, MIXSRC_FIRST_SWITCH+i, attr);
lcd_putcAtt(lcdNextPos, y, c, attr);
x = lcdNextPos + 3;
}
else if (numWarnings == 7) {
lcd_putsAtt(x, y, "...", 0);
}
}
}
+1 -1
View File
@@ -4,6 +4,6 @@ MEGA2560 board
DIY radio wih :
- Arduino MEGA2560 or compatible
- Gruvin9x features (soft-off, SD-Card, RTC, haptic, voice, rotary encoders)
- Artronic LCD 128x64 ST7565R
- LCD 128x64 Artronic (ST7565R) or Zolen (ST7565P)
- Aurora9 or T9X gimballs
- home made case
@@ -44,11 +44,11 @@ inline void boardInit()
DDRA = 0b11111111; PORTA = 0b00000000; // LCD data
DDRB = 0b01110111; PORTB = 0b00101111; // 7:PPM_IN 6:PPM_OUT, 5:SimCTRL, 4:Buzzer, SDCARD[3:MISO 2:MOSI 1:SCK 0:CS]
DDRC = 0b11111100; PORTC = 0b00000011; // 7-3:LCD, 2:BackLight, 1:ID2_SW, 0:ID1_SW
DDRD = 0b00000000; PORTD = 0b11111111; // 7:AilDR_SW, 6:N/A, 5:N/A, 4:N/A, 3:RENC2_B, 2:RENC2_A, 1:N/A, 0:N/A
DDRD = 0b00000000; PORTD = 0b11111100; // 7:AilDR_SW, 6:N/A, 5:N/A, 4:N/A, 3:RENC2_B, 2:RENC2_A, 1:I2C_SDA, 0:I2C_SCL
DDRE = 0b00000010; PORTE = 0b11111100; // 7:N/A, 6:N/A, 5:RENC1_B, 4:RENC1_A, 3:N/A, 2:N/A, 1:TELEM_TX, 0:TELEM_RX
DDRF = 0b00000000; PORTF = 0b11111111; // 7-0:Trim switch inputs
DDRG = 0b00000000; PORTG = 0b11111111; // 7:N/A, 6:N/A, 5:N/A, 4:N/A, 3:N/A, 2:TCut_SW, 1:Gear_SW, 0: RudDr_SW
DDRH = 0b00011000; PORTH = 0b11110111; // 7:N/A, 6:RFPw, 5:JackPres, 4:HoldPw, 3:Speaker, 2:N/A, 1:N/A, 0:N/A
DDRH = 0b00011000; PORTH = 0b11110110; // 7:N/A, 6:RFPw, 5:JackPres, 4:HoldPw, 3:Speaker, 2:N/A, 1:N/A, 0:Haptic
DDRJ = 0b00000000; PORTJ = 0b11111111; // 7:N/A, 6:N/A, 5:N/A, 4:N/A, 3:N/A, 2:N/A, 1:RENC2_push, 0:RENC1_push
DDRK = 0b00000000; PORTK = 0b00000000; // Analogic input (no pull-ups)
DDRL = 0b00000000; PORTL = 0b11111111; // 7:TRN_SW 6:EleDR_SW, 5:ESC, 4:MENU 3:Keyb_Left, 2:Keyb_Right, 1:Keyb_Up, 0:Keyb_Down
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
+6 -2
View File
@@ -17,12 +17,16 @@
#define GPIO_BUTTON_MENU GPIOD->IDR
#define GPIO_BUTTON_EXIT GPIOD->IDR
#define GPIO_BUTTON_PAGE GPIOD->IDR
#define PIN_BUTTON_PLUS GPIO_Pin_10 // PE.10
#define PIN_BUTTON_MINUS GPIO_Pin_11 // PE.11
#if defined(REV9E)
#if defined(SIMU)
#define PIN_BUTTON_PLUS GPIO_Pin_5 // This is for SIMU: reuse rotary encoder pins to map UP and DOWN keyboard keys
#define PIN_BUTTON_MINUS GPIO_Pin_6 // This is for SIMU: reuse rotary encoder pins to map UP and DOWN keyboard keys
#endif
#define GPIO_BUTTON_ENTER GPIOF->IDR
#define PIN_BUTTON_ENTER GPIO_Pin_0 // PF.00
#else
#define PIN_BUTTON_PLUS GPIO_Pin_10 // PE.10
#define PIN_BUTTON_MINUS GPIO_Pin_11 // PE.11
#define GPIO_BUTTON_ENTER GPIOE->IDR
#define PIN_BUTTON_ENTER GPIO_Pin_12 // PE.12
#endif
+2 -2
View File
@@ -143,7 +143,7 @@ void readKeysAndTrims()
++enuk;
}
#if defined(REV9E)
#if defined(REV9E) && !defined(SIMU)
static rotenc_t rePreviousValue;
rotenc_t reNewValue = (x9de_rotenc / 2);
int8_t scrollRE = reNewValue - rePreviousValue;
@@ -321,7 +321,7 @@ void keysInit()
| PIN_TRIM_LV_DN | PIN_TRIM_LV_UP
| PIN_SW_A_L | PIN_SW_D_L | PIN_SW_F | PIN_SW_C_L | PIN_SW_D_H | PIN_SW_H;
#elif defined(REV9E)
GPIO_InitStructure.GPIO_Pin = PIN_BUTTON_PLUS | PIN_BUTTON_MINUS | PIN_TRIM_LH_R | PIN_TRIM_LH_L
GPIO_InitStructure.GPIO_Pin = PIN_TRIM_LH_R | PIN_TRIM_LH_L
| PIN_SW_F_H | PIN_SW_A_L | PIN_SW_B_H | PIN_SW_B_L | PIN_SW_C_H | PIN_SW_D_H | PIN_SW_D_L | PIN_SW_G_H | PIN_SW_G_L | PIN_SW_L_L | PIN_SW_Q_H | PIN_SW_Q_L;
#elif defined(REVPLUS)
GPIO_InitStructure.GPIO_Pin = PIN_BUTTON_PLUS | PIN_BUTTON_ENTER | PIN_BUTTON_MINUS | PIN_TRIM_LH_R | PIN_TRIM_LH_L
+1 -1
View File
@@ -299,7 +299,7 @@ static void LCD_BL_Config()
TIM4->CCMR2 = TIM_CCMR2_OC4M_1 | TIM_CCMR2_OC4M_2 ; // PWM
TIM4->CCER = TIM_CCER_CC4E | TIM_CCER_CC2E ;
TIM4->CCR2 = 0 ;
TIM4->CCR4 = 0 ;
TIM4->CCR4 = 80 ;
TIM4->EGR = 0 ;
TIM4->CR1 = TIM_CR1_CEN ; // Counter enable
#else
+1 -1
View File
@@ -554,7 +554,7 @@ static void init_pa7_ppm()
TIM8->CCER = TIM_CCER_CC1E ;
#else
TIM8->CCER = TIM_CCER_CC1NE;
if(!g_model.moduleData[EXTERNAL_MODULE].ppmPulsePol)
if(g_model.moduleData[EXTERNAL_MODULE].ppmPulsePol)
TIM8->CCER |= TIM_CCER_CC1NP;
#endif
TIM8->CCMR1 = TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC2PE ; // PWM mode 1
+31 -11
View File
@@ -355,10 +355,8 @@
#if defined(CPUARM)
#define LEN_VUNITSSYSTEM TR("\006", "\010")
#define TR_VUNITSSYSTEM TR("Metr. ""Imper.", "Metryczn""Imperial")
#define LEN_VTELEMUNIT_METR "\003"
#define TR_VTELEMUNIT_METR "v\0 ""A\0 ""m/s""-\0 " SPEED_UNIT_METR LENGTH_UNIT_METR "@\0 ""%\0 ""mA\0""mAh""W\0 "
#define LEN_VTELEMUNIT_IMP "\003"
#define TR_VTELEMUNIT_IMP "v\0 ""A\0 ""m/s""-\0 " SPEED_UNIT_IMP LENGTH_UNIT_IMP "@\0 ""%\0 ""mA\0""mAh""W\0 "
#define LEN_VTELEMUNIT "\003"
#define TR_VTELEMUNIT "-\0 ""v\0 ""A\0 ""mA\0""kts""m/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0"
#else
#if defined(IMPERIAL_UNITS)
#define LENGTH_UNIT LENGTH_UNIT_IMP
@@ -706,7 +704,7 @@
#define TR_PITCH_AT_MAX INDENT "Ton przy Max"
#define TR_REPEAT_AT_ZERO INDENT "Powtórz przy Zerze"
#define TR_SHUTDOWN "Wyłączanie.."
#define TR_SAVEMODEL "Saving model settings"
#define TR_SAVEMODEL "Zapisz ustwienia modelu"
#define TR_BATT_CALIB "Kalib:Baterii"
#define TR_CURRENT_CALIB " +=\006Kalibracja prądu"
#define TR_VOLTAGE TR (INDENT"Napięcie",INDENT"Źródło Napięcia")
@@ -727,7 +725,7 @@
#define TR_THROTTLEWARN "GAZ"
#define TR_ALARMSWARN "ALARM"
#define TR_SWITCHWARN TR("Przełą","Kontrola")
#define TR_KEYSTUCK "Key stuck"
#define TR_KEYSTUCK "Blokada klucza"
#define TR_INVERT_THR TR("Odw.Gaz?","Odwróć gaz?")
#define TR_SPEAKER_VOLUME INDENT "Głośność"
#define TR_LCD "LCD"
@@ -788,7 +786,7 @@
#define TR_EXTERNALRF "Zewn.Moduł RF"
#define TR_FAILSAFE TR(INDENT"Failsafe",INDENT"Tryb Failsafe")
#define TR_FAILSAFESET "USTAWIENIE FAILSAFE"
#define TR_MENUSENSOR "SENSOR"
#define TR_MENUSENSOR "CZUJNIK"
#define TR_COUNTRYCODE "Kod regionu"
#define TR_VOICELANG "Język głosu"
#define TR_UNITSSYSTEM "Jednostki"
@@ -809,7 +807,7 @@
#define TR_ABOUT_US "O nas"
#define TR_AND_SWITCH "Przełącznik AND"
#define TR_SF "FS"
#define TR_GF "GF"
#define TR_GF "FG"
#define TR_SPEAKER INDENT"Głośnik"
#define TR_BUZZER INDENT"Brzęczyk"
#define TR_BYTES "bajty"
@@ -822,8 +820,8 @@
#define TR_MODELIDUSED TR("ID zajęte","ID modelu zajęte")
#define TR_MODULE INDENT "Moduł"
#define TR_TELEMETRY_TYPE "Typ Telemetri"
#define TR_TELEMETRY_SENSORS "Sensors"
#define TR_TELEMETRY_NEWSENSOR INDENT "Add a new sensor..."
#define TR_TELEMETRY_SENSORS "Czujniki"
#define TR_TELEMETRY_NEWSENSOR INDENT "Dodaj nowy czujnik..."
#define TR_CHANNELRANGE TR(INDENT "ZakrKn",INDENT "Zakres kanału")
#define TR_LOWALARM INDENT "Alarm niski"
#define TR_CRITICALALARM INDENT "Alarm krytyczny"
@@ -954,4 +952,26 @@
#define TR_MODS_FORBIDDEN "Modyfikacje zabronione!"
#define TR_UNLOCKED "Odblokowane"
#define TR_ID "ID"
#define TR_PRECISION "Precision"
#define TR_PRECISION "Precyzja "
#define ZSTR_RSSI "RSSI"
#define ZSTR_A1 "A1"
#define ZSTR_A2 "A2"
#define ZSTR_BATT "Bat."
#define ZSTR_ALT "Wysok."
#define ZSTR_TEMP "Temp"
#define ZSTR_RPM "RPM"
#define ZSTR_FUEL "Paliwo"
#define ZSTR_VSPD "VSpd"
#define ZSTR_ACCX "AccX"
#define ZSTR_ACCY "AccY"
#define ZSTR_ACCZ "AccZ"
#define ZSTR_CURR "Natęż"
#define ZSTR_VFAS "VFAS"
#define ZSTR_ASPD "ASpd"
#define ZSTR_GSPD "GSpd"
#define ZSTR_HDG "Kurs"
#define ZSTR_CELLS "Cele"
#define ZSTR_GPSALT "GAlt"
#define ZSTR_GPSDATETIME "Data"
#define ZSTR_GPS "GPS"