rc.h

Committer:
agiembed
Date:
2011-08-16
Revision:
0:d463d5c04541

File content as of revision 0:d463d5c04541:

Timer tick;
InterruptIn rc(p11);
short buf_ppm[6];
char i = 0, idx, cnt = 0;

void get_PPM(){
    switch (idx){
        case 1:
            RC.roll = buf_ppm[2];
            RC.throttle = buf_ppm[3];
            RC.pitch = buf_ppm[4];
            RC.yaw = buf_ppm[5];
            RC.sw = buf_ppm[0];
            break;
            
        case 2:
            RC.roll = buf_ppm[3];
            RC.throttle = buf_ppm[4];
            RC.pitch = buf_ppm[5];
            RC.yaw = buf_ppm[0];
            RC.sw = buf_ppm[1];
            break;
            
        case 3:
            RC.roll = buf_ppm[4];
            RC.throttle = buf_ppm[5];
            RC.pitch = buf_ppm[0];
            RC.yaw = buf_ppm[1];
            RC.sw = buf_ppm[2];
            break;
            
        case 4:           
            RC.roll = buf_ppm[5];
            RC.throttle = buf_ppm[0];
            RC.pitch = buf_ppm[1];
            RC.yaw = buf_ppm[2];
            RC.sw = buf_ppm[3];
            break;
            
        case 5:            
            RC.roll = buf_ppm[0];
            RC.throttle = buf_ppm[1];
            RC.pitch = buf_ppm[2];
            RC.yaw = buf_ppm[3];
            RC.sw = buf_ppm[4];
            break;
            
        case 0:            
            RC.roll = buf_ppm[1];
            RC.throttle = buf_ppm[2];
            RC.pitch = buf_ppm[3];
            RC.yaw = buf_ppm[4];
            RC.sw = buf_ppm[5];
            break;
            
        default: break;  
    }    
    return;
}                                                                 
    
void getrc(){
    RC.rolls = (RC.roll - 1518) * 0.73;
    RC.throttles = (RC.throttle - 1105) * 0.3;
    RC.pitchs = (RC.pitch - 1514) * 0.73;
    RC.yaws = (RC.yaw - 1518) * 0.73;
    RC.sws = RC.sw - 1518;
    return;
}    
    
    
short rc_roll(){
    return (short)(RC.roll);// 1518);
}    

short rc_throttle(){
    return (short)(RC.throttle);// - 1105);
} 

short rc_pitch(){
    return (short)(RC.pitch);// - 1514);
}

short rc_yaw(){
    return (short)(RC.yaw);// - 1518);
}

short rc_sw(){
    return (short)(RC.sw);// - 1518);
}    
     

void PPM_rise() {
    tick.stop();                        // Stop timer
    buf_ppm[i]=tick.read_us();          // Read timer to buffer[i] i=turns
    tick.reset();                       // Reset timer
    tick.start();                       // Start timer
    i++;                                // increment i.
    if(buf_ppm[i]>5000) idx = i;    
    if(i==6) i = 0;       
    get_PPM();
    return;
}


/*
Channel 1 = Roll  
Channel 2 = Throttle
Channel 3 = Pitch
Channel 4 = Yaw   
Channel 5 = Switch 
*/