Rev 1842 | Rev 1864 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1842 | Rev 1854 | ||
---|---|---|---|
1 | #ifndef _OUTPUT_H |
1 | #ifndef _OUTPUT_H |
2 | #define _OUTPUT_H |
2 | #define _OUTPUT_H |
3 | 3 | ||
4 | #include <avr/io.h> |
4 | #include <avr/io.h> |
5 | - | ||
6 | // This is for LEDs connected directly between +5V and the AVR port, without transistors. |
- | |
7 | // PORTbit = 0 --> LED on. |
- | |
8 | // To use the normal transistor set-up where 1 --> transistor conductive, reverse the |
- | |
9 | // ON and OFF statements. |
- | |
10 | 5 | ||
11 | // invert means: An "1" bit in digital debug data make a LOW on the output. |
6 | // invert means: An "1" bit in digital debug data make a LOW on the output. |
- | 7 | #define DIGITAL_DEBUG_INVERT 1 |
|
12 | #define DIGITAL_DEBUG_INVERT 1 |
8 | |
13 | #define OUTPUT_HIGH(num) {PORTC |= (4 << (num));} |
9 | #define OUTPUT_HIGH(num) {PORTC |= (4 << (num));} |
14 | #define OUTPUT_LOW(num) {PORTC &= ~(4 << (num));} |
10 | #define OUTPUT_LOW(num) {PORTC &= ~(4 << (num));} |
15 | #define OUTPUT_SET(num, state) {if (DIGITAL_DEBUG_INVERT){if(state) OUTPUT_LOW(num) else OUTPUT_HIGH(num)} else {if(state) OUTPUT_HIGH(num) else OUTPUT_LOW(num)}} |
11 | #define OUTPUT_SET(num, state) {if (DIGITAL_DEBUG_INVERT){if(state) OUTPUT_LOW(num) else OUTPUT_HIGH(num)} else {if(state) OUTPUT_HIGH(num) else OUTPUT_LOW(num)}} |
16 | #define OUTPUT_TOGGLE(num) ( {PORTC ^= (4 << (num));} |
12 | #define OUTPUT_TOGGLE(num) ( {PORTC ^= (4 << (num));} |
- | 13 | ||
- | 14 | /* |
|
- | 15 | * Some digital debugs. A digital debug is 2 signals on the 2 LED outputs, |
|
- | 16 | * turned on and off depending on some condtions given in the code. |
|
- | 17 | * Only one can be selected, by defining DIGITAL_DEBUG_MASK to the value |
|
- | 18 | * of the debug. |
|
- | 19 | * In the code one can do like: |
|
- | 20 | * if (whatever_condition) { |
|
- | 21 | * DebugOut.Digital[0] |= DEBUG_MYOWNDEBUGGER; |
|
- | 22 | * } else { |
|
- | 23 | * DebugOut.Digital[0] &= ~DEBUG_MYOWNDEBUGGER; |
|
- | 24 | * } |
|
- | 25 | * ... |
|
- | 26 | * if (whatever_other_condition) { |
|
- | 27 | * DebugOut.Digital[1] |= DEBUG_MYOWNDEBUGGER; |
|
- | 28 | * } else { |
|
- | 29 | * DebugOut.Digital[1] &= ~DEBUG_MYOWNDEBUGGER; |
|
- | 30 | * } |
|
- | 31 | * |
|
- | 32 | * Digital debugs may be added as desired, and removed when the mystery |
|
- | 33 | * at hand is resolved. |
|
17 | 34 | */ |
|
18 | #define DEBUG_LEDTEST 256 |
35 | #define DEBUG_LEDTEST 256 |
19 | #define DEBUG_HEIGHT_SWITCH 1 |
36 | #define DEBUG_HEIGHT_SWITCH 1 |
20 | #define DEBUG_HEIGHT_DIFF 2 |
37 | #define DEBUG_HEIGHT_DIFF 2 |
21 | #define DEBUG_HOVERTHROTTLE 4 |
38 | #define DEBUG_HOVERTHROTTLE 4 |
22 | #define DEBUG_ACC0THORDER 8 |
39 | #define DEBUG_ACC0THORDER 8 |
23 | #define DEBUG_COMMANDREPEATED 16 |
40 | #define DEBUG_COMMANDREPEATED 16 |
24 | #define DEBUG_PRESSURERANGE 32 |
41 | #define DEBUG_PRESSURERANGE 32 |
25 | #define DEBUG_CLIP 64 |
42 | #define DEBUG_CLIP 64 |
- | 43 | #define DEBUG_SENSORLIMIT 128 |
|
- | 44 | ||
- | 45 | /* |
|
- | 46 | * Set to 0 for using outputs as the usual flashing lights. |
|
- | 47 | * Set to one of the DEBUG_... defines h for using the outputs as debug lights. |
|
- | 48 | */ |
|
- | 49 | #define DIGITAL_DEBUG_MASK DEBUG_CLIP |
|
26 | 50 | ||
27 | void output_init(void); |
51 | void output_init(void); |
28 | void output_update(void); |
52 | void output_update(void); |
29 | 53 | ||
30 | #endif //_output_H |
54 | #endif //_output_H |
31 | 55 |