Decoding PPM from FM radio with Interrupts

Hi everyone!
I'm trying to decode 6 servo signals from a PPM FM radio.
I saw the code from DIY Drones that decodes the pulses using pulseIn, i've tried it and it works great.

void setup()
{
Serial.begin(57600); //Serial Begin
pinMode(3, INPUT); //Pin 3 as input
}
void loop()
{
while(pulseIn(3, LOW) < 5000){} //Wait for the beginning of the frame
for(int x=0; x<=channumber-1; x++)//Loop to store all the channel position
{
value[x]=pulseIn(3, LOW);
}
for(int x=0; x<=channumber-1; x++)//Loop to print and clear all the channel readings
{
Serial.print(value[x]); //Print the value
Serial.print(" ");
value[x]=0; //Clear the value afeter is printed
}
Serial.println(""); //Start a new line
}

The problem is that I can't do anything else while pulseIn is waiting for a pulse, thats why I tried doing it with interrupts.
This is my code:

#include <math.h>
#define radioPin 1

void setup()
{  
  attachInterrupt(radioPin, radio, RISING);
    Serial.begin(19200);
}

void loop()
{
  radioProcessor();
  sendData();
  delay(50);
}

volatile unsigned long lastPPM;
volatile int radioChannel[6];
float radioProcessed[6];
int ch = 0;


void radio()
{
  if (micros() - lastPPM > 5000)
  {
    ch = 0;
    lastPPM = micros();
  }
  else
  {
      radioChannel[ch] = micros() - lastPPM;
      lastPPM = micros();
      ch++;
      
  } 
}


int stickAvg;
float stick1, stick2;

void sendData()
{
  Serial.print(radioChannel[0]);
  Serial.print("\t");
    Serial.print(radioChannel[1]);
  Serial.print("\t");
    Serial.print(radioChannel[2]);
  Serial.print("\t");
    Serial.print(radioChannel[3]);
  Serial.print("\t");
    Serial.print(radioChannel[4]);
  Serial.print("\t");
  Serial.println(radioChannel[5]);
}

void radioProcessor()
{
  
  radioChannel[5] = 2059 - 0.952 * radioChannel[5];
  stickAvg = (radioChannel[0] + radioChannel[1] + radioChannel[5]) / 3;
  radioProcessed[0]=radioChannel[0]-stickAvg;
  radioProcessed[1]=radioChannel[1]-stickAvg;
  radioProcessed[5]=radioChannel[5]-stickAvg;
  radioProcessed[3]=radioChannel[3]-589;
  radioProcessed[2]=radioChannel[2]-569;
  radioProcessed[4]=radioChannel[4]-810;
  stick1 = 100*asin(radioProcessed[1]/350);
  stick2 = 100*asin((radioProcessed[0]-radioProcessed[5])/525); 
}

So far I am able to decode 5 of the 6 channels correctly, but the 6th channel has a lot of noise in it. Its values vary more than 100%. I can't figure out what I'm doing wrong and why only the 6th channel is suffering for whatever interrupt problems i have.
As you can see there is the function radio() which is triggered by the interrupt and cycles through the channels, assigning the values to an array.
The function radioProcessor() performs some operations to get usable values (My radio is from an rc helicopter and the signals get mixed before being sent, hence the stickAvg and the arcSins).
Now, if I don't call radioProcessor(), everything works fine, but as soon as I start calling it in my loop() it messes up with my values. Actually it only messes up with the value of the last pulse, on channel 6.
This is an issue, as this code will be part of a bigger program executing a kalman filter and two PIDs.
Note that changing the delay(50) for other values changes the period at which wrong values of channel 6 appear. So sometimes I get a couple of seconds of correct data and then one second of rubbish, and if i change the delay (or the amount of operations that radioProcessor() does, the wrong values will come every second, or constantly.
I am completely lost at this point.
Any help is greatly appreciated!!

You may want to read through this thread:http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1228137503

it has the source code for a library that decodes RC signals.