Subversion Repositories FlightCtrl

Rev

Rev 1868 | Rev 1887 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1868 Rev 1869
Line 55... Line 55...
55
// To access the DebugOut struct.
55
// To access the DebugOut struct.
56
#include "uart0.h"
56
#include "uart0.h"
57
uint8_t flashCnt[2], flashMask[2];
57
uint8_t flashCnt[2], flashMask[2];
58
// initializes the LED control outputs J16, J17
58
// initializes the LED control outputs J16, J17
59
void output_init(void) {
59
void output_init(void) {
60
        // set PC2 & PC3 as output (control of J16 & J17)
60
  // set PC2 & PC3 as output (control of J16 & J17)
61
        DDRC |= (1 << DDC2) | (1 << DDC3);
61
  DDRC |= (1 << DDC2) | (1 << DDC3);
62
        OUTPUT_SET(0,0);
62
  OUTPUT_SET(0,0);
63
        OUTPUT_SET(1,0);
63
  OUTPUT_SET(1,0);
64
        flashCnt[0] = flashCnt[1] = 0;
64
  flashCnt[0] = flashCnt[1] = 0;
65
        flashMask[0] = flashMask[1] = 128;
65
  flashMask[0] = flashMask[1] = 128;
66
}
66
}
Line 67... Line 67...
67
 
67
 
68
void flashingLight(uint8_t port, uint8_t timing, uint8_t bitmask,
68
void flashingLight(uint8_t port, uint8_t timing, uint8_t bitmask,
69
                uint8_t manual) {
69
    uint8_t manual) {
70
        if (timing > 250 && manual > 230) {
70
  if (timing > 250 && manual > 230) {
71
                // "timing" is set to "manual" and the value is very high --> Set to the value in bitmask bit 7.
71
    // "timing" is set to "manual" and the value is very high --> Set to the value in bitmask bit 7.
72
                OUTPUT_SET(port, bitmask & 128);
72
    OUTPUT_SET(port, bitmask & 128);
73
        } else if (timing > 250 && manual < 10) {
73
  } else if (timing > 250 && manual < 10) {
74
                // "timing" is set to "manual" and the value is very low --> Set to the negated value in bitmask bit 7.
74
    // "timing" is set to "manual" and the value is very low --> Set to the negated value in bitmask bit 7.
75
                OUTPUT_SET(port, !(bitmask & 128));
75
    OUTPUT_SET(port, !(bitmask & 128));
76
        } else if (!flashCnt[port]--) {
76
  } else if (!flashCnt[port]--) {
77
                // rotating mask over bitmask...
77
    // rotating mask over bitmask...
78
                flashCnt[port] = timing - 1;
78
    flashCnt[port] = timing - 1;
79
                if (flashMask[port] == 1)
79
    if (flashMask[port] == 1)
80
                        flashMask[port] = 128;
80
      flashMask[port] = 128;
81
                else
81
    else
82
                        flashMask[port] >>= 1;
82
      flashMask[port] >>= 1;
83
                OUTPUT_SET(port, flashMask[port] & bitmask);
83
    OUTPUT_SET(port, flashMask[port] & bitmask);
84
        }
84
  }
Line 85... Line 85...
85
}
85
}
86
 
86
 
87
void flashingLights(void) {
87
void flashingLights(void) {
88
        static int8_t delay = 0;
88
  static int8_t delay = 0;
89
        if (!delay--) { // 10 ms intervals
89
  if (!delay--) { // 10 ms intervals
90
                delay = 4;
90
    delay = 4;
91
                flashingLight(0, staticParams.J16Timing, staticParams.J16Bitmask,
91
    flashingLight(0, staticParams.J16Timing, staticParams.J16Bitmask,
92
                                dynamicParams.J16Timing);
92
        dynamicParams.J16Timing);
93
                flashingLight(1, staticParams.J17Timing, staticParams.J17Bitmask,
93
    flashingLight(1, staticParams.J17Timing, staticParams.J17Bitmask,
94
                                dynamicParams.J17Timing);
94
        dynamicParams.J17Timing);
Line 95... Line 95...
95
        }
95
  }
96
}
96
}
97
 
97
 
-
 
98
void output_update(void) {
-
 
99
  if (!DIGITAL_DEBUG_MASK)
-
 
100
    flashingLights();
-
 
101
  else if (DIGITAL_DEBUG_MASK == DEBUG_LEDTEST_ON) {
-
 
102
    OUTPUT_SET(0, 1);
-
 
103
    OUTPUT_SET(1, 1);
-
 
104
  } else if (DIGITAL_DEBUG_MASK == DEBUG_LEDTEST_OFF) {
-
 
105
    OUTPUT_SET(0, 0);
-
 
106
    OUTPUT_SET(1, 0);
-
 
107
  } else if (DIGITAL_DEBUG_MASK == DEBUG_LEDTEST_0) {
-
 
108
    OUTPUT_SET(0, 1);
-
 
109
    OUTPUT_SET(1, 0);
98
void output_update(void) {
110
  } else if (DIGITAL_DEBUG_MASK == DEBUG_LEDTEST_1) {
99
        if (!DIGITAL_DEBUG_MASK)
111
    OUTPUT_SET(0, 0);
100
                flashingLights();
112
    OUTPUT_SET(1, 1);
101
        else {
113
  } else {
102
                OUTPUT_SET(0, DebugOut.Digital[0] & DIGITAL_DEBUG_MASK);
114
    OUTPUT_SET(0, DebugOut.Digital[0] & DIGITAL_DEBUG_MASK);