Subversion Repositories FlightCtrl

Rev

Rev 517 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 517 Rev 518
Line 9... Line 9...
9
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
9
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Line 10... Line 10...
10
 
10
 
11
#include "rc.h"
11
#include "rc.h"
Line 12... Line 12...
12
#include "main.h"
12
#include "main.h"
13
 
13
 
14
volatile int PPM_in[11];
14
volatile int PPM_in[15]; //PPM24-Erweiterung (121007Kr)
Line 15... Line 15...
15
volatile int PPM_diff[11];  // das diffenzierte Stick-Signal
15
volatile int PPM_diff[15];  // das diffenzierte Stick-Signal //PPM24-Erweiterung (121007Kr)
16
volatile unsigned char NewPpmData = 1;
16
volatile unsigned char NewPpmData = 1;
17
 
17
 
Line 48... Line 48...
48
        signal = (unsigned int) ICR1 - AltICR;         
48
        signal = (unsigned int) ICR1 - AltICR;         
49
        AltICR = ICR1; 
49
        AltICR = ICR1; 
Line 50... Line 50...
50
       
50
       
51
    //Syncronisationspause?
51
    //Syncronisationspause?
52
//      if((signal > (int) Parameter_UserParam2 * 10) && (signal < 8000))        
52
//      if((signal > (int) Parameter_UserParam2 * 10) && (signal < 8000))        
53
        if((signal > 1100) && (signal < 8000))   
53
        if ((signal > 1500) && (signal < 8000))  
54
        {
-
 
55
        if(index >= 4)  NewPpmData = 0;  // Null bedeutet: Neue Daten
54
        {
-
 
55
        index = 1;             
56
        index = 1;             
56
        NewPpmData = 0;  // Null bedeutet: Neue Daten
57
        }
57
        }
58
        else
58
        else
59
        {
59
        {
60
        if(index < 10)
60
        if(index < 14) //PPM24-Erweiterung (121007Kr)
61
            {
61
            {
62
            if((signal > 250) && (signal < 687))
62
            if((signal > 250) && (signal < 687))
63
                {
63
                {
64
                signal -= 466;
64
                signal -= 466;
65
                // Stabiles Signal
65
                // Stabiles Signal
66
                if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;}
66
                if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;}
-
 
67
                tmp = (3 * (PPM_in[index]) + signal) / 4;  
-
 
68
               
-
 
69
                                //############################################################
-
 
70
                                // Verhindert einen Restwert der RC-Kanäl bei neutralen Knüppelstellungen, führt
-
 
71
                                // unter Umständen jedoch zu +/-1 Sprüngen der einzelnen Kanäle. Siehe auch:
67
                tmp = (3 * (PPM_in[index]) + signal) / 4;  
72
                                // http://forum.mikrokopter.de/topic-2191.html(121107Kr)
68
//                if(tmp > signal+1) tmp--; else
73
                                //if(tmp > signal+1) tmp--; else 
-
 
74
                //if(tmp < signal-1) tmp++;
-
 
75
                //############################################################
69
//                if(tmp < signal-1) tmp++; 
76
                               
70
                PPM_diff[index] = tmp - PPM_in[index];
77
                                PPM_diff[index] = tmp - PPM_in[index];
71
                PPM_in[index] = tmp;
78
                PPM_in[index] = tmp;
72
                }
79
                }
73
            index++;  
80
            index++;  
74
         if(index == 5) PORTD |= 0x20; else PORTD &= ~0x20;  // Servosignal an J3 anlegen
81
         if(index == 5) PORTD |= 0x20; else PORTD &= ~0x20;  // Servosignal an J3 anlegen