[stock] Issue 100 fixed (first channel truncated)

This commit is contained in:
bsongis@gmail.com
2013-08-16 08:11:15 +00:00
parent c6ff076bd8
commit cb3a0cb823
+7 -6
View File
@@ -97,6 +97,8 @@ uint8_t *pulses2MHzWPtr = pulses2MHz;
#define CTRL_REP_1CMD -3 #define CTRL_REP_1CMD -3
#define CTRL_REP_2CMD -6 #define CTRL_REP_2CMD -6
#define SETUP_PULSES_DURATION 1000/*500us*/
// TIMER1_COMPA_vect used for PPM and DSM2=SERIAL // TIMER1_COMPA_vect used for PPM and DSM2=SERIAL
uint8_t g_ppmPulsePolarity = 0; uint8_t g_ppmPulsePolarity = 0;
ISR(TIMER1_COMPA_vect) //2MHz pulse generation (BLOCKING ISR) ISR(TIMER1_COMPA_vect) //2MHz pulse generation (BLOCKING ISR)
@@ -106,12 +108,10 @@ ISR(TIMER1_COMPA_vect) //2MHz pulse generation (BLOCKING ISR)
// Call setupPulses only after REST pulse had been sent. // Call setupPulses only after REST pulse had been sent.
// Must do this before toggle PORTB to keep timing accurate // Must do this before toggle PORTB to keep timing accurate
if (IS_DSM2_SERIAL_PROTOCOL(s_current_protocol[0]) || *((uint16_t*)pulses2MHzRPtr) == 0) { if (IS_DSM2_SERIAL_PROTOCOL(s_current_protocol[0]) || *((uint16_t*)pulses2MHzRPtr) == 0) {
OCR1A = SETUP_PULSES_DURATION;
setupPulses(); // does not sei() for setupPulsesPPM setupPulses(); // does not sei() for setupPulsesPPM
heartbeat |= HEART_TIMER_PULSES; heartbeat |= HEART_TIMER_PULSES;
if (IS_PXX_PROTOCOL(s_current_protocol[0]) || IS_DSM2_PROTOCOL(s_current_protocol[0])) { return;
// !PPM protocols interrupts don't need COMPA
return;
}
} }
#if !defined(PCBGRUVIN9X) #if !defined(PCBGRUVIN9X)
@@ -176,13 +176,14 @@ void setupPulsesPPM(uint8_t proto)
*ptr++ = q; *ptr++ = q;
if (rest > 65535) rest = 65535; /* prevents overflows */ if (rest > 65535) rest = 65535; /* prevents overflows */
if (rest < 9000) rest = 9000; if (rest < 9000) rest = 9000;
*ptr++ = rest;
if (proto == PROTO_PPM) { if (proto == PROTO_PPM) {
*ptr++ = rest - SETUP_PULSES_DURATION;
pulses2MHzRPtr = pulses2MHz; pulses2MHzRPtr = pulses2MHz;
} }
else { else {
B3_comp_value = rest - 1000 ; // 500uS before end of sync pulse *ptr++ = rest;
B3_comp_value = rest - SETUP_PULSES_DURATION; // 500uS before end of sync pulse
} }
*ptr = 0; *ptr = 0;