mirror of
https://github.com/opentx/opentx.git
synced 2025-07-23 00:05:17 +03:00
PPM Pulses small flash saving by Mike
This commit is contained in:
parent
8b11cbe549
commit
22bed6212b
2 changed files with 8 additions and 19 deletions
|
@ -154,22 +154,13 @@ void setupPulsesPPM() // Don't enable interrupts through here
|
||||||
|
|
||||||
uint16_t rest = 22500u * 2; //Minimum Framelen=22.5 ms
|
uint16_t rest = 22500u * 2; //Minimum Framelen=22.5 ms
|
||||||
rest += (int16_t(g_model.ppmFrameLength)) * 1000;
|
rest += (int16_t(g_model.ppmFrameLength)) * 1000;
|
||||||
// if(p>9) rest=p*(1720u*2 + q) + 4000u*2; //for more than 9 channels, frame must be longer
|
|
||||||
for (uint32_t i = 0; i < p; i++) { //NUM_CHNOUT
|
for (uint32_t i = 0; i < p; i++) { //NUM_CHNOUT
|
||||||
int16_t v = max((int) min(g_chans512[i], PPM_range),
|
int16_t v = limit((int16_t)-PPM_range, g_chans512[i], (int16_t)PPM_range) + PPM_CENTER;
|
||||||
-PPM_range) + PPM_CENTER;
|
|
||||||
rest -= (v);
|
rest -= (v);
|
||||||
// *ptr++ = q; //moved down two lines
|
|
||||||
// pulses2MHz[j++] = q;
|
|
||||||
*ptr++ = v; /* as Pat MacKenzie suggests */
|
*ptr++ = v; /* as Pat MacKenzie suggests */
|
||||||
// pulses2MHz[j++] = v - q + 600; /* as Pat MacKenzie suggests */
|
|
||||||
// *ptr++ = q; //to here
|
|
||||||
}
|
}
|
||||||
// *ptr=q; //reverse these two assignments
|
|
||||||
// *(ptr+1)=rest;
|
|
||||||
*ptr = rest;
|
*ptr = rest;
|
||||||
*(ptr + 1) = 0;
|
*(ptr + 1) = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void put_serial_bit( uint8_t bit )
|
void put_serial_bit( uint8_t bit )
|
||||||
|
|
|
@ -195,7 +195,7 @@ ISR(TIMER1_COMPA_vect) //2MHz pulse generation
|
||||||
|
|
||||||
FORCEINLINE void setupPulsesPPM()
|
FORCEINLINE void setupPulsesPPM()
|
||||||
{
|
{
|
||||||
#define PPM_CENTER 1200*2
|
#define PPM_CENTER 1500*2
|
||||||
int16_t PPM_range = g_model.extendedLimits ? 640*2 : 512*2; //range of 0.7..1.7msec
|
int16_t PPM_range = g_model.extendedLimits ? 640*2 : 512*2; //range of 0.7..1.7msec
|
||||||
|
|
||||||
//Total frame length = 22.5msec
|
//Total frame length = 22.5msec
|
||||||
|
@ -212,10 +212,8 @@ FORCEINLINE void setupPulsesPPM()
|
||||||
rest += (int16_t(g_model.ppmFrameLength))*1000;
|
rest += (int16_t(g_model.ppmFrameLength))*1000;
|
||||||
for (uint8_t i=0; i<p; i++) {
|
for (uint8_t i=0; i<p; i++) {
|
||||||
int16_t v = limit((int16_t)-PPM_range, g_chans512[i], (int16_t)PPM_range) + PPM_CENTER;
|
int16_t v = limit((int16_t)-PPM_range, g_chans512[i], (int16_t)PPM_range) + PPM_CENTER;
|
||||||
*ptr = v - q + 600; /* as Pat MacKenzie suggests */
|
rest -= v;
|
||||||
/* reviewed and modified by Cam */
|
*ptr++ = v - q; /* as Pat MacKenzie suggests, reviewed and modified by Cam */
|
||||||
rest -= (*ptr + q);
|
|
||||||
ptr++;
|
|
||||||
*ptr++ = q;
|
*ptr++ = q;
|
||||||
}
|
}
|
||||||
*ptr = rest;
|
*ptr = rest;
|
||||||
|
@ -820,10 +818,10 @@ void setupPulsesPPM16()
|
||||||
uint16_t rest=22500u*2-q; //Minimum Framelen=22.5 ms
|
uint16_t rest=22500u*2-q; //Minimum Framelen=22.5 ms
|
||||||
rest += (int16_t(g_model.ppmFrameLength))*1000;
|
rest += (int16_t(g_model.ppmFrameLength))*1000;
|
||||||
for (uint8_t i=p-8; i<p; i++) { //NUM_CHNOUT
|
for (uint8_t i=p-8; i<p; i++) { //NUM_CHNOUT
|
||||||
int16_t v = limit((int16_t)-PPM_range, g_chans512[i], (int16_t)PPM_range) + PPM_CENTER;
|
int16_t v = limit((int16_t)-PPM_range, g_chans512[i], (int16_t)PPM_range) + PPM_CENTER;
|
||||||
rest -= (v+q);
|
rest -= v;
|
||||||
*ptr++ = q;
|
*ptr++ = q;
|
||||||
*ptr++ = v - q + 600; /* as Pat MacKenzie suggests */
|
*ptr++ = v - q; /* as Pat MacKenzie suggests, reviewed and modified by Cam */
|
||||||
}
|
}
|
||||||
*ptr = q; //reverse these two assignments
|
*ptr = q; //reverse these two assignments
|
||||||
*(ptr+1) = rest;
|
*(ptr+1) = rest;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue