[stock / gruvin9x] Issue 164 fixed
[X9D] Calibration menu [all] 5-pass mixer [stock] Flash saving
This commit is contained in:
+10
-8
@@ -957,11 +957,10 @@ void menuGeneralCalib(uint8_t event)
|
||||
|
||||
static uint8_t idxState;
|
||||
|
||||
for (uint8_t i=0; i<7; i++) { //get low and high vals for sticks and trims
|
||||
for (uint8_t i=0; i<NUM_STICKS+NUM_POTS; i++) { //get low and high vals for sticks and trims
|
||||
int16_t vt = anaIn(i);
|
||||
reusableBuffer.calib.loVals[i] = min(vt, reusableBuffer.calib.loVals[i]);
|
||||
reusableBuffer.calib.hiVals[i] = max(vt, reusableBuffer.calib.hiVals[i]);
|
||||
//if(i>=4) midVals[i] = (loVals[i] + hiVals[i])/2;
|
||||
}
|
||||
|
||||
s_noScroll = idxState; // make sure we don't scroll while calibrating
|
||||
@@ -972,7 +971,7 @@ void menuGeneralCalib(uint8_t event)
|
||||
idxState = 0;
|
||||
break;
|
||||
|
||||
case EVT_KEY_BREAK(KEY_MENU):
|
||||
case EVT_KEY_BREAK(KEY_ENTER):
|
||||
idxState++;
|
||||
if (idxState==3) {
|
||||
STORE_GENERALVARS;
|
||||
@@ -985,15 +984,15 @@ void menuGeneralCalib(uint8_t event)
|
||||
switch (idxState) {
|
||||
case 0:
|
||||
// START CALIBRATION
|
||||
lcd_puts(3*FW, 3*FH, STR_MENUTOSTART);
|
||||
lcd_putsLeft(3*FH, STR_MENUTOSTART);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
// SET MIDPOINT
|
||||
lcd_putsAtt(5*FW, 2*FH, STR_SETMIDPOINT, s_noScroll ? INVERS : 0);
|
||||
lcd_puts(3*FW, 3*FH, STR_MENUWHENDONE);
|
||||
lcd_putsLeft(3*FH, STR_MENUWHENDONE);
|
||||
|
||||
for (uint8_t i=0; i<7; i++) {
|
||||
for (uint8_t i=0; i<NUM_STICKS+NUM_POTS; i++) {
|
||||
reusableBuffer.calib.loVals[i] = 15000;
|
||||
reusableBuffer.calib.hiVals[i] = -15000;
|
||||
reusableBuffer.calib.midVals[i] = anaIn(i);
|
||||
@@ -1003,9 +1002,9 @@ void menuGeneralCalib(uint8_t event)
|
||||
case 2:
|
||||
// MOVE STICKS/POTS
|
||||
lcd_putsAtt(3*FW, 2*FH, STR_MOVESTICKSPOTS, s_noScroll ? INVERS : 0);
|
||||
lcd_puts(3*FW, 3*FH, STR_MENUWHENDONE);
|
||||
lcd_putsLeft(3*FH, STR_MENUWHENDONE);
|
||||
|
||||
for (uint8_t i=0; i<7; i++) {
|
||||
for (uint8_t i=0; i<NUM_STICKS+NUM_POTS; i++) {
|
||||
if (abs(reusableBuffer.calib.loVals[i]-reusableBuffer.calib.hiVals[i])>50) {
|
||||
g_eeGeneral.calibMid[i] = reusableBuffer.calib.midVals[i];
|
||||
int16_t v = reusableBuffer.calib.midVals[i] - reusableBuffer.calib.loVals[i];
|
||||
@@ -1020,4 +1019,7 @@ void menuGeneralCalib(uint8_t event)
|
||||
}
|
||||
|
||||
doMainScreenGraphics();
|
||||
#if defined(PCBX9D)
|
||||
drawPotsBars();
|
||||
#endif
|
||||
}
|
||||
|
||||
+11
-8
@@ -85,6 +85,16 @@
|
||||
#define MARKER_WIDTH 5
|
||||
#define BOX_LIMIT (BOX_WIDTH-MARKER_WIDTH)
|
||||
|
||||
void drawPotsBars()
|
||||
{
|
||||
// Optimization by Mike Blandford
|
||||
uint8_t x, y, len ; // declare temporary variables
|
||||
for (x=DISPLAY_W/2-5, y=NUM_STICKS; y<NUM_STICKS+NUM_POTS; x+=5, y++) {
|
||||
len = ((calibratedStick[y]+RESX)*BAR_HEIGHT/(RESX*2))+1l; // calculate once per loop
|
||||
V_BAR(x, DISPLAY_H-8, len)
|
||||
}
|
||||
}
|
||||
|
||||
void doMainScreenGraphics()
|
||||
{
|
||||
lcd_square(LBOX_CENTERX-BOX_WIDTH/2, LBOX_CENTERY-BOX_WIDTH/2, BOX_WIDTH);
|
||||
@@ -103,14 +113,7 @@ void doMainScreenGraphics()
|
||||
lcd_square(RBOX_CENTERX+(calibratedStick[CONVERT_MODE(3+1)-1]*BOX_LIMIT/(2*RESX))-MARKER_WIDTH/2, RBOX_CENTERY-(calibStickVert*BOX_LIMIT/(2*RESX))-MARKER_WIDTH/2, MARKER_WIDTH, ROUND);
|
||||
|
||||
#if !defined(PCBX9D)
|
||||
// Optimization by Mike Blandford
|
||||
{
|
||||
uint8_t x, y, len ; // declare temporary variables
|
||||
for (x = -5, y = 4 ; y < 7 ; x += 5, y += 1) {
|
||||
len = ((calibratedStick[y]+RESX)*BAR_HEIGHT/(RESX*2))+1l; // calculate once per loop
|
||||
V_BAR(DISPLAY_W/2+x, DISPLAY_H-8, len)
|
||||
}
|
||||
}
|
||||
drawPotsBars();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -312,6 +312,7 @@ bool check(check_event_t event, uint8_t curr, const MenuFuncP *menuTab, uint8_t
|
||||
scrollRE = 0;
|
||||
if (s_editMode++ > 0) s_editMode = 0;
|
||||
if (s_editMode > 0 && l_posVert == 0 && menuTab) s_editMode = -1;
|
||||
if (maxrow == 0) s_editMode = -1;
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
||||
@@ -80,6 +80,7 @@ inline MenuFuncP lastPopMenu()
|
||||
return g_menuStack[g_menuStackPtr+1];
|
||||
}
|
||||
|
||||
void drawPotsBars();
|
||||
void doMainScreenGraphics();
|
||||
void menuMainView(uint8_t event);
|
||||
void menuGeneralDiagAna(uint8_t event);
|
||||
|
||||
+1
-1
@@ -2542,7 +2542,7 @@ void perOut(uint8_t mode, uint8_t tick10ms)
|
||||
tick10ms = 0;
|
||||
dirtyChannels &= passDirtyChannels;
|
||||
|
||||
} while (++pass < 3 && dirtyChannels);
|
||||
} while (++pass < 5 && dirtyChannels);
|
||||
|
||||
mixWarning = lv_mixWarning;
|
||||
}
|
||||
|
||||
+3
-3
@@ -1306,9 +1306,9 @@ union ReusableBuffer
|
||||
|
||||
struct
|
||||
{
|
||||
int16_t midVals[7];
|
||||
int16_t loVals[7];
|
||||
int16_t hiVals[7];
|
||||
int16_t midVals[NUM_STICKS+NUM_POTS];
|
||||
int16_t loVals[NUM_STICKS+NUM_POTS];
|
||||
int16_t hiVals[NUM_STICKS+NUM_POTS];
|
||||
} calib; // 42 bytes used by menuGeneralCalib
|
||||
|
||||
#if defined(SDCARD)
|
||||
|
||||
+62
-96
@@ -55,7 +55,7 @@ uint16_t B3_comp_value;
|
||||
inline void DSM2_EnableTXD(void)
|
||||
{
|
||||
UCSR0B |= (1 << TXEN0); // enable TX
|
||||
// UCSR0B |= (1 << UDRIE0); // don't enable UDRE0 interrupt, it will be enabled during next setupPulses
|
||||
// don't enable UDRE0 interrupt now, it will be enabled during next setupPulses
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -97,8 +97,11 @@ uint8_t *pulses2MHzWPtr = pulses2MHz;
|
||||
#define CTRL_REP_1CMD -3
|
||||
#define CTRL_REP_2CMD -6
|
||||
|
||||
|
||||
#ifndef SIMU
|
||||
#if defined(DSM2_SERIAL)
|
||||
#define DSM2_SERIAL_INTERRUPT() (s_current_protocol == PROTO_DSM2)
|
||||
#else
|
||||
#define DSM2_SERIAL_INTERRUPT() (0)
|
||||
#endif
|
||||
|
||||
// TIMER1_COMPA_vect used for PPM and DSM2=SERIAL
|
||||
uint8_t g_ppmPulsePolarity = 0;
|
||||
@@ -106,70 +109,54 @@ ISR(TIMER1_COMPA_vect) //2MHz pulse generation (BLOCKING ISR)
|
||||
{
|
||||
uint8_t dt = TCNT1L; // record Timer1 latency for DEBUG stats display
|
||||
|
||||
#ifdef DSM2_SERIAL
|
||||
if (s_current_protocol == PROTO_DSM2) {
|
||||
setupPulses(); // includes scheduling of next COMPA int. vector (this ISR).
|
||||
// also re-enables interrupts at and for a safe time. (G: Only if in DSM2_SERIAL mode. Why?)
|
||||
cli(); // re-disable interrupts to prevent reentrance here. (This ISR will automatically issue sei upon exit.)
|
||||
UCSR0B |= (1 << UDRIE0); // enable UDRE0 interrupt to start transmitting DSM2 data bytes from buffer
|
||||
// Call setupPulses only after REST pulse had been sent.
|
||||
// Must do this before toggle PORTB to keep timing accurate
|
||||
if (DSM2_SERIAL_INTERRUPT() || *((uint16_t*)pulses2MHzRPtr) == 0) {
|
||||
setupPulses(); // does not sei() for setupPulsesPPM
|
||||
heartbeat |= HEART_TIMER_PULSES;
|
||||
if (IS_PXX_PROTOCOL(s_current_protocol) || IS_DSM2_PROTOCOL(s_current_protocol)) {
|
||||
// !PPM protocols interrupts don't need COMPA
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
|
||||
#if !defined(PCBGRUVIN9X)
|
||||
// Original bitbang for PPM
|
||||
if (s_current_protocol != PROTO_NONE) {
|
||||
if (g_ppmPulsePolarity) {
|
||||
PORTB |= (1<<OUT_B_PPM); // GCC optimisation should result in a single SBI instruction
|
||||
g_ppmPulsePolarity = 0;
|
||||
}
|
||||
else {
|
||||
PORTB &= ~(1<<OUT_B_PPM);
|
||||
g_ppmPulsePolarity = 1;
|
||||
}
|
||||
// Original bitbang for PPM
|
||||
if (s_current_protocol != PROTO_NONE) {
|
||||
if (g_ppmPulsePolarity) {
|
||||
PORTB |= (1<<OUT_B_PPM); // GCC optimisation should result in a single SBI instruction
|
||||
g_ppmPulsePolarity = 0;
|
||||
}
|
||||
#else
|
||||
// PCBGRUVIN9X zero jitter hardware toggled PPM_out
|
||||
OCR1B = *((uint16_t*)pulses2MHzRPtr); // duplicate capture (Timer1 in CTC mode, so restricted to OCR1A for int vector)
|
||||
else {
|
||||
PORTB &= ~(1<<OUT_B_PPM);
|
||||
g_ppmPulsePolarity = 1;
|
||||
}
|
||||
}
|
||||
#else // defined(PCBGRUVIN9X)
|
||||
// PCBGRUVIN9X zero jitter hardware toggled PPM_out
|
||||
OCR1B = *((uint16_t*)pulses2MHzRPtr); // duplicate capture (Timer1 in CTC mode, so restricted to OCR1A for int vector)
|
||||
|
||||
// Toggle bit: Can't read PPM_OUT I/O pin when OC1B is connected (on the ATmega2560 -- can on ATmega64A!)
|
||||
// so need to use pusePol register to keep track of PPM_out polarity.
|
||||
if (s_current_protocol != PROTO_NONE) {
|
||||
if (g_ppmPulsePolarity) {
|
||||
TCCR1A = (3<<COM1B0); // SET the state of PB6(OC1B)/PPM_out on next TCNT1==OCR1B
|
||||
g_ppmPulsePolarity = 0;
|
||||
}
|
||||
else {
|
||||
TCCR1A = (2<<COM1B0); // CLEAR the state of PB6(OC1B)/PPM_out on next TCNT1==OCR1B
|
||||
g_ppmPulsePolarity = 1;
|
||||
}
|
||||
// Toggle bit: Can't read PPM_OUT I/O pin when OC1B is connected (on the ATmega2560 -- can on ATmega64A!)
|
||||
// so need to use pusePol register to keep track of PPM_out polarity.
|
||||
if (s_current_protocol != PROTO_NONE) {
|
||||
if (g_ppmPulsePolarity) {
|
||||
TCCR1A = (3<<COM1B0); // SET the state of PB6(OC1B)/PPM_out on next TCNT1==OCR1B
|
||||
g_ppmPulsePolarity = 0;
|
||||
}
|
||||
else {
|
||||
TCCR1A = (2<<COM1B0); // CLEAR the state of PB6(OC1B)/PPM_out on next TCNT1==OCR1B
|
||||
g_ppmPulsePolarity = 1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
OCR1A = *((uint16_t*)pulses2MHzRPtr); // Schedule next Timer1 interrupt vector (to this function)
|
||||
|
||||
pulses2MHzRPtr += sizeof(uint16_t); // non PPM protocols use uint8_t pulse buffer
|
||||
if (*((uint16_t*)pulses2MHzRPtr) == 0) {
|
||||
PAUSE_PULSES_INTERRUPT();
|
||||
setupPulses(); // does not sei() for setupPulsesPPM
|
||||
|
||||
// if setupPulses changed protocol to one that doesn't use COMPA then don't re-enable.
|
||||
if (!IS_PXX_PROTOCOL(s_current_protocol) && !IS_DSM2_PROTOCOL(s_current_protocol)) {
|
||||
// cli is not needed because for PPM protocols interrupts are not enabled when entering here
|
||||
RESUME_PULSES_INTERRUPT();
|
||||
sei();
|
||||
}
|
||||
}
|
||||
} // [else] if (s_current_protocol == PROTO_DSM2)
|
||||
OCR1A = *((uint16_t*)pulses2MHzRPtr); // Schedule next Timer1 interrupt vector (to this function)
|
||||
pulses2MHzRPtr += sizeof(uint16_t); // non PPM protocols use uint8_t pulse buffer
|
||||
|
||||
if (dt > g_tmr1Latency_max) g_tmr1Latency_max = dt;
|
||||
if (dt < g_tmr1Latency_min) g_tmr1Latency_min = dt;
|
||||
|
||||
heartbeat |= HEART_TIMER_PULSES;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void setupPulsesPPM(uint8_t proto)
|
||||
{
|
||||
// Total frame length is a fixed 22.5msec (more than 9 channels is non-standard and requires this to be extended.)
|
||||
@@ -432,6 +419,8 @@ FORCEINLINE void setupPulsesDsm2()
|
||||
|
||||
pulses2MHzWPtr = (uint8_t *)ptr;
|
||||
pulses2MHzRPtr = pulses2MHz;
|
||||
|
||||
UCSR0B |= (1 << UDRIE0); // enable UDRE0 interrupt to start transmitting DSM2 data bytes from buffer
|
||||
}
|
||||
|
||||
// DSM2=SERIAL mode
|
||||
@@ -754,26 +743,34 @@ void setupPulses()
|
||||
|
||||
s_current_protocol = required_protocol;
|
||||
|
||||
TCCR1B = 0; // Stop counter
|
||||
TCNT1 = 0;
|
||||
|
||||
#if defined(PCBGRUVIN9X)
|
||||
TIMSK1 &= ~0x2F; // All Timer1 interrupts off
|
||||
TIMSK1 &= ~(1<<OCIE1C); // COMPC1 off
|
||||
TIFR1 = 0x2F;
|
||||
#else
|
||||
TIMSK &= ~0x3C ; // All interrupts off
|
||||
ETIMSK &= ~(1<<OCIE1C) ; // COMPC1 off
|
||||
TIFR = 0x3C ; // Clear all pending interrupts
|
||||
ETIFR = 0x3F ; // Clear all pending interrupts
|
||||
#endif
|
||||
|
||||
switch (required_protocol) {
|
||||
|
||||
#if defined(DSM2_PPM) // For DSM2=SERIAL, the default: case is executed, below
|
||||
case PROTO_DSM2:
|
||||
set_timer3_capture();
|
||||
TCCR1B = 0; // Stop counter
|
||||
OCR1C = 200; // 100 uS
|
||||
TCNT1 = 300; // Past the OCR1C value
|
||||
ICR1 = 44000; // Next frame starts in 22 mS
|
||||
#if defined(PCBGRUVIN9X)
|
||||
TIMSK1 &= ~0x2F; // All Timer1 interrupts off
|
||||
TIFR1 = 0x2F;
|
||||
TIMSK1 |= 0x28; // Enable Timer1 COMPC and CAPT interrupts
|
||||
TCCR1A = (0 << WGM10); // Set output waveform mode to normal, for now. Note that
|
||||
// WGM will be changed to toggle OCR1B pin on compare capture,
|
||||
// in next switch(required_protocol) {...}, below
|
||||
#else
|
||||
TIMSK &= ~0x3C; // All Timer1 interrupts off
|
||||
TIFR = 0x3C;
|
||||
ETIFR = 0x3F;
|
||||
TIMSK |= 0x20; // Enable CAPT
|
||||
ETIMSK |= (1<<OCIE1C); // Enable COMPC
|
||||
TCCR1A = (0 << WGM10);
|
||||
@@ -785,20 +782,13 @@ void setupPulses()
|
||||
#if defined(PXX)
|
||||
case PROTO_PXX:
|
||||
set_timer3_capture();
|
||||
TCCR1B = 0; // Stop counter
|
||||
TCNT1 = 0;
|
||||
OCR1B = 6000; // Next frame starts in 3 mS
|
||||
OCR1C = 4000; // Next frame setup in 2 mS
|
||||
#if defined(PCBGRUVIN9X)
|
||||
TIMSK1 &= ~0x2F; // All Timer1 interrupts off
|
||||
TIFR1 = 0x2F;
|
||||
TIMSK1 |= (1<<OCIE1B); // Enable COMPB
|
||||
TIMSK1 |= (1<<OCIE1C); // Enable COMPC
|
||||
TCCR1A = (3 << COM1B0); // Connect OC1B for hardware PPM switching
|
||||
#else
|
||||
TIMSK &= ~0x3C; // All Timer1 interrupts off
|
||||
TIFR = 0x3C;
|
||||
ETIFR = 0x3F;
|
||||
TIMSK |= (1<<OCIE1B); // Enable COMPB
|
||||
ETIMSK |= (1<<OCIE1C); // Enable COMPC
|
||||
TCCR1A = 0;
|
||||
@@ -808,20 +798,11 @@ void setupPulses()
|
||||
#endif
|
||||
|
||||
case PROTO_PPM16:
|
||||
TCCR1B = 0; // Stop counter
|
||||
OCR1A = 40000; // Next frame starts in 20 mS
|
||||
TCNT1 = 0;
|
||||
#if defined(PCBGRUVIN9X)
|
||||
TIMSK1 &= ~0x2F; // All Timer1 interrupts off
|
||||
TIMSK1 &= ~(1<<OCIE1C); // COMPC1 off
|
||||
TIFR1 = 0x2F;
|
||||
TIMSK1 |= (1<<OCIE1A); // Enable COMPA
|
||||
TCCR1A = (3 << COM1B0); // Connect OC1B for hardware PPM switching
|
||||
#else
|
||||
TIMSK &= ~0x3C; // All Timer1 interrupts off
|
||||
ETIMSK &= ~(1<<OCIE1C); // COMPC1 off
|
||||
TIFR = 0x3C; // Clear all pending interrupts
|
||||
ETIFR = 0x3F; // Clear all pending interrupts
|
||||
TIMSK |= 0x10; // Enable COMPA
|
||||
TCCR1A = (0<<WGM10);
|
||||
#endif
|
||||
@@ -833,18 +814,8 @@ void setupPulses()
|
||||
break;
|
||||
|
||||
case PROTO_PPMSIM:
|
||||
TCCR1B = 0; // Stop counter
|
||||
TCNT1 = 0;
|
||||
#if defined(PCBGRUVIN9X)
|
||||
TIMSK1 &= ~0x2F; // All Timer1 interrupts off
|
||||
TIMSK1 &= ~(1<<OCIE1C); // COMPC1 off
|
||||
TIFR1 = 0x2F;
|
||||
TCCR1A = 0; // Disconnect OC1B for bit-bang PPM switching
|
||||
#else
|
||||
TIMSK &= ~0x3C; // All Timer1 interrupts off
|
||||
ETIMSK &= ~(1<<OCIE1C); // COMPC1 off
|
||||
TIFR = 0x3C; // Clear all pending interrupts
|
||||
ETIFR = 0x3F; // Clear all pending interrupts
|
||||
#endif
|
||||
setupPulsesPPM(PROTO_PPMSIM);
|
||||
OCR3A = 50000;
|
||||
@@ -855,8 +826,6 @@ void setupPulses()
|
||||
|
||||
default: // PPM and DSM2=SERIAL modes
|
||||
set_timer3_capture();
|
||||
TCCR1B = 0; // Stop counter 1
|
||||
TCNT1 = 0; // Must reset counter first, to prevent possible immediate COMPA int. (sometimes).
|
||||
OCR1A = 44000; // Next frame starts in 22ms -- DSM mode.
|
||||
// This is arbitrary and for the first frame only. In fact, ...
|
||||
// DSM2 mode will set frame timing again at each ISR(TIMER1_COMPC_vect)
|
||||
@@ -864,15 +833,10 @@ void setupPulses()
|
||||
// PPM mode will dynamically adjust to the frame rate set in model SETUP menu,
|
||||
// from within setupPulsesPPM().
|
||||
#if defined(PCBGRUVIN9X)
|
||||
TIMSK1 &= ~0x2F; // All Timer1 interrupts off
|
||||
TIFR1 = 0x2F;
|
||||
TIMSK1 |= (1<<OCIE1A); // Enable COMPA
|
||||
TCCR1A = (3 << COM1B0); // Connect OC1B for hardware PPM switching. G: Not needed
|
||||
// for DSM2=SERIAL. But OK.
|
||||
#else
|
||||
TIMSK &= ~0x3C; // All Timer1 interrupts off
|
||||
TIFR = 0x3C;
|
||||
ETIFR = 0x3F; // Clear all pending interrupts
|
||||
TIMSK |= 0x10; // Enable COMPA
|
||||
TCCR1A = (0 << WGM10);
|
||||
#endif
|
||||
@@ -883,7 +847,7 @@ void setupPulses()
|
||||
|
||||
switch(required_protocol) {
|
||||
|
||||
#ifdef PXX
|
||||
#if defined(PXX)
|
||||
case PROTO_PXX:
|
||||
// schedule next Mixer calculations
|
||||
SCHEDULE_MIXER_END(20*16);
|
||||
@@ -892,11 +856,13 @@ void setupPulses()
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef DSM2
|
||||
#if defined(DSM2)
|
||||
case PROTO_DSM2:
|
||||
// schedule next Mixer calculations
|
||||
SCHEDULE_MIXER_END(22*16);
|
||||
#if defined(DSM2_PPM)
|
||||
sei();
|
||||
#endif
|
||||
setupPulsesDsm2(); // Different versions for DSM2=SERIAL vs. DSM2=PPM
|
||||
#if defined(PCBGRUVIN9X) && defined(DSM2_PPM)
|
||||
// Ensure each DSM2=PPM serial packet starts out with the correct bit polarity
|
||||
|
||||
@@ -199,6 +199,7 @@ extern void rxPdcUsart( void (*pChProcess)(uint8_t x) );
|
||||
#define COM1B0 dummyport
|
||||
#define COM0A0 dummyport
|
||||
#define TCNT1 dummyport16
|
||||
#define TCNT1L dummyport
|
||||
#define TCNT5 dummyport16
|
||||
#define ICR1 dummyport16
|
||||
#define TIFR dummyport
|
||||
|
||||
@@ -234,7 +234,7 @@
|
||||
|
||||
#define TR_POPUPS "[MENU]\010[EXIT]"
|
||||
#define OFS_EXIT 7
|
||||
#define TR_MENUWHENDONE "\001[MENU] > DAL\207\214"
|
||||
#define TR_MENUWHENDONE CENTER"\007[MENU] > DAL\207\214"
|
||||
#define TR_FREE "voln\202:"
|
||||
#define TR_DELETEMODEL "SMAZAT MODEL"
|
||||
#define TR_COPYINGMODEL "Kop\204ruji model.."
|
||||
@@ -327,9 +327,9 @@
|
||||
#define TR_CAL "Kal."
|
||||
#define TR_VTRIM "Trim- +"
|
||||
#define TR_BG "BG:"
|
||||
#define TR_MENUTOSTART "\001[MENU] = START"
|
||||
#define TR_SETMIDPOINT "NASTAV ST\215EDY"
|
||||
#define TR_MOVESTICKSPOTS "H\216BEJ P\213KY/POTY"
|
||||
#define TR_MENUTOSTART CENTER"\007[MENU] = START"
|
||||
#define TR_SETMIDPOINT CENTER"NASTAV ST\215EDY"
|
||||
#define TR_MOVESTICKSPOTS CENTER"H\216BEJ P\213KY/POTY"
|
||||
#define TR_RXBATT "Rx Bat.:"
|
||||
#define TR_TXnRX "Tx:\0Rx:"
|
||||
#define OFS_RX 4
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
|
||||
#define TR_POPUPS "[MENU]\010[EXIT]"
|
||||
#define OFS_EXIT 7
|
||||
#define TR_MENUWHENDONE "[MENU] > Weiter"
|
||||
#define TR_MENUWHENDONE CENTER"\006[MENU] > Weiter"
|
||||
#define TR_FREE "frei"
|
||||
#define TR_DELETEMODEL "Modell l\203schen?"
|
||||
#define TR_COPYINGMODEL "Kopiere Modell"
|
||||
@@ -328,9 +328,9 @@
|
||||
#define TR_CAL "Kal."
|
||||
#define TR_VTRIM "Trim- +"
|
||||
#define TR_BG "BG:"
|
||||
#define TR_MENUTOSTART "[MENU] > Starten"
|
||||
#define TR_SETMIDPOINT "NEUTRALSTELLUNG"
|
||||
#define TR_MOVESTICKSPOTS "KNPL/POTIS BEWEGEN"
|
||||
#define TR_MENUTOSTART CENTER"\006[MENU] > Starten"
|
||||
#define TR_SETMIDPOINT CENTER"NEUTRALSTELLUNG"
|
||||
#define TR_MOVESTICKSPOTS CENTER"KNPL/POTIS BEWEGEN"
|
||||
#define TR_RXBATT "Rx Batt:"
|
||||
#define TR_TXnRX "Tx:\0Rx:"
|
||||
#define OFS_RX 4
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
|
||||
#define TR_POPUPS "[MENU]\010[EXIT]"
|
||||
#define OFS_EXIT 7
|
||||
#define TR_MENUWHENDONE "[MENU] WHEN DONE"
|
||||
#define TR_MENUWHENDONE CENTER"\006[MENU] WHEN DONE"
|
||||
#define TR_FREE "free"
|
||||
#define TR_DELETEMODEL "DELETE MODEL"
|
||||
#define TR_COPYINGMODEL "Copying model..."
|
||||
@@ -339,9 +339,9 @@
|
||||
#define TR_CAL "Cal"
|
||||
#define TR_VTRIM "Trim- +"
|
||||
#define TR_BG "BG:"
|
||||
#define TR_MENUTOSTART "[MENU] TO START"
|
||||
#define TR_SETMIDPOINT "SET MIDPOINT"
|
||||
#define TR_MOVESTICKSPOTS "MOVE STICKS/POTS"
|
||||
#define TR_MENUTOSTART CENTER"\006[MENU] TO START"
|
||||
#define TR_SETMIDPOINT CENTER"SET MIDPOINT"
|
||||
#define TR_MOVESTICKSPOTS CENTER"MOVE STICKS/POTS"
|
||||
#define TR_RXBATT "Rx Batt:"
|
||||
#define TR_TXnRX "Tx:\0Rx:"
|
||||
#define OFS_RX 4
|
||||
|
||||
@@ -227,7 +227,7 @@
|
||||
|
||||
#define TR_POPUPS "[MENU]\010[SALIR]"
|
||||
#define OFS_EXIT 7
|
||||
#define TR_MENUWHENDONE "[MENU]AL FINAL"
|
||||
#define TR_MENUWHENDONE CENTER"\006[MENU]AL FINAL"
|
||||
#define TR_FREE "Libre"
|
||||
#define TR_DELETEMODEL "BORRA MODELO"
|
||||
#define TR_COPYINGMODEL "Copiando modelo."
|
||||
@@ -322,9 +322,9 @@
|
||||
#define TR_CAL "Cal"
|
||||
#define TR_VTRIM "Ajte- +"
|
||||
#define TR_BG "BG:"
|
||||
#define TR_MENUTOSTART "[MENU] INICIAR"
|
||||
#define TR_SETMIDPOINT "AJUSTAR CENTROS"
|
||||
#define TR_MOVESTICKSPOTS "MOVER STICK/POT"
|
||||
#define TR_MENUTOSTART CENTER"\006[MENU] INICIAR"
|
||||
#define TR_SETMIDPOINT CENTER"AJUSTAR CENTROS"
|
||||
#define TR_MOVESTICKSPOTS CENTER"MOVER STICK/POT"
|
||||
#define TR_RXBATT "Rx Batt:"
|
||||
#define TR_TXnRX "Tx:\0Rx:"
|
||||
#define OFS_RX 4
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
|
||||
#define TR_POPUPS "[MENU]\010[QUIT]"
|
||||
#define OFS_EXIT 7
|
||||
#define TR_MENUWHENDONE "[MENU] QUAND PRET"
|
||||
#define TR_MENUWHENDONE CENTER"\006[MENU] QUAND PRET"
|
||||
#define TR_FREE "libre"
|
||||
#define TR_DELETEMODEL "SUPPRIMER MODELE"
|
||||
#define TR_COPYINGMODEL "Copie..."
|
||||
@@ -328,9 +328,9 @@
|
||||
#define TR_CAL "Cal"
|
||||
#define TR_VTRIM "Trim- +"
|
||||
#define TR_BG "BG:"
|
||||
#define TR_MENUTOSTART "[MENU] POUR DEBUT"
|
||||
#define TR_SETMIDPOINT "REGLER NEUTRES"
|
||||
#define TR_MOVESTICKSPOTS "BOUGER STICKS/POTS"
|
||||
#define TR_MENUTOSTART CENTER"\006[MENU] POUR DEBUT"
|
||||
#define TR_SETMIDPOINT CENTER"REGLER NEUTRES"
|
||||
#define TR_MOVESTICKSPOTS CENTER"BOUGER STICKS/POTS"
|
||||
#define TR_RXBATT "Batt.RX"
|
||||
#define TR_TXnRX "Tx:\0Rx:"
|
||||
#define OFS_RX 4
|
||||
|
||||
@@ -233,7 +233,7 @@
|
||||
|
||||
#define TR_POPUPS "[Men\200]\004[Exit]"
|
||||
#define OFS_EXIT 7
|
||||
#define TR_MENUWHENDONE "[Men\200] Conferma"
|
||||
#define TR_MENUWHENDONE CENTER"\006[Men\200] Conferma"
|
||||
#define TR_FREE " Disp."
|
||||
#define TR_DELETEMODEL "Elimina modello?"
|
||||
#define TR_COPYINGMODEL "Copia in corso.."
|
||||
@@ -326,9 +326,9 @@
|
||||
#define TR_CAL "Cal"
|
||||
#define TR_VTRIM "Trim- +"
|
||||
#define TR_BG "BG:"
|
||||
#define TR_MENUTOSTART "[Men\200] per Cal."
|
||||
#define TR_SETMIDPOINT "SETTA CENTRO"
|
||||
#define TR_MOVESTICKSPOTS "MUOVI STICK/POT"
|
||||
#define TR_MENUTOSTART CENTER"\006[Men\200] per Cal."
|
||||
#define TR_SETMIDPOINT CENTER"SETTA CENTRO"
|
||||
#define TR_MOVESTICKSPOTS CENTER"MUOVI STICK/POT"
|
||||
#define TR_RXBATT "Rx Batt:"
|
||||
#define TR_TXnRX "Tx:\0Rx:"
|
||||
#define OFS_RX 4
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
|
||||
#define TR_POPUPS "[MENU]\010[SAIR] "
|
||||
#define OFS_EXIT 7
|
||||
#define TR_MENUWHENDONE "[MENU]QDO PRONTO"
|
||||
#define TR_MENUWHENDONE CENTER"\006[MENU]QDO PRONTO"
|
||||
#define TR_FREE "Livre"
|
||||
#define TR_DELETEMODEL "EXCLUI MODELO"
|
||||
#define TR_COPYINGMODEL "Copiando modelo"
|
||||
@@ -328,9 +328,9 @@
|
||||
#define TR_CAL "Cal"
|
||||
#define TR_VTRIM "Trim- +"
|
||||
#define TR_BG "BG:"
|
||||
#define TR_MENUTOSTART "[MENU] INICIAR"
|
||||
#define TR_SETMIDPOINT "CENTRAR STICK/POT"
|
||||
#define TR_MOVESTICKSPOTS "MOVER STICKS/POTs"
|
||||
#define TR_MENUTOSTART CENTER"\006[MENU] INICIAR"
|
||||
#define TR_SETMIDPOINT CENTER"CENTRAR STICK/POT"
|
||||
#define TR_MOVESTICKSPOTS CENTER"MOVER STICKS/POTs"
|
||||
#define TR_RXBATT "Rx Batt:"
|
||||
#define TR_TXnRX "Tx:\0Rx:"
|
||||
#define OFS_RX 4
|
||||
|
||||
@@ -238,7 +238,7 @@
|
||||
|
||||
#define TR_POPUPS "[MENU]\010[EXIT]"
|
||||
#define OFS_EXIT 7
|
||||
#define TR_MENUWHENDONE "[MENU] Avslutar"
|
||||
#define TR_MENUWHENDONE CENTER"\006[MENU] Avslutar"
|
||||
#define TR_FREE "Ledigt"
|
||||
#define TR_DELETEMODEL "Radera Modell"
|
||||
#define TR_COPYINGMODEL "Kopierar Modell"
|
||||
@@ -331,9 +331,9 @@
|
||||
#define TR_CAL "Kalib."
|
||||
#define TR_VTRIM "Trim- +"
|
||||
#define TR_BG "BG:"
|
||||
#define TR_MENUTOSTART "[MENU] Startar"
|
||||
#define TR_SETMIDPOINT "Centrera Allt"
|
||||
#define TR_MOVESTICKSPOTS "R\202r Rattar/Spakar"
|
||||
#define TR_MENUTOSTART CENTER"\006[MENU] Startar"
|
||||
#define TR_SETMIDPOINT CENTER"Centrera Allt"
|
||||
#define TR_MOVESTICKSPOTS CENTER"R\202r Rattar/Spakar"
|
||||
#define TR_RXBATT "Rx Batt:"
|
||||
#define TR_TXnRX "Tx:\0Rx:"
|
||||
#define OFS_RX 4
|
||||
|
||||
Reference in New Issue
Block a user