1
0
Fork 0
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:
bsongis 2012-04-12 22:23:55 +00:00
parent 8b11cbe549
commit 22bed6212b
2 changed files with 8 additions and 19 deletions

View file

@ -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 )

View file

@ -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;