Subversion Repositories FlightCtrl

Rev

Rev 2099 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1910 - 1
#ifndef _OUTPUT_H
2
#define _OUTPUT_H
3
 
4
#include <avr/io.h>
5
 
6
#define J3HIGH    PORTD |= (1<<PORTD5)
7
#define J3LOW     PORTD &= ~(1<<PORTD5)
8
#define J3TOGGLE  PORTD ^= (1<<PORTD5)
9
 
10
#define J4HIGH    PORTD |= (1<<PORTD4)
11
#define J4LOW     PORTD &= ~(1<<PORTD4)
12
#define J4TOGGLE  PORTD ^= (1<<PORTD4)
13
 
14
#define J5HIGH    PORTD |= (1<<PORTD3)
15
#define J5LOW     PORTD &= ~(1<<PORTD3)
16
#define J5TOGGLE  PORTD ^= (1<<PORTD3)
17
 
18
// invert means: An "1" bit in digital debug data make a LOW on the output.
19
#define OUTPUT_INVERT 0
20
 
21
#define OUTPUT_HIGH(num)        {PORTC |=  (4 << (num));}
22
#define OUTPUT_LOW(num)         {PORTC &= ~(4 << (num));}
23
#define OUTPUT_SET(num, state)  {if (OUTPUT_INVERT) { if(state) OUTPUT_LOW(num) else OUTPUT_HIGH(num)} else {if(state) OUTPUT_HIGH(num) else OUTPUT_LOW(num)}}
24
#define OUTPUT_TOGGLE(num) (    {PORTC ^=  (4 << (num));}
25
 
26
/*
27
 * Some digital debugs. A digital debug is 2 signals on the 2 LED outputs,
28
 * turned on and off depending on some condtions given in the code.
29
 * Only one can be selected, by defining DIGITAL_DEBUG_MASK to the value
30
 * of the debug.
31
 * In the code one can do like:
32
 * if (whatever_condition) {
33
 *      DebugOut.Digital[0] |= DEBUG_MYOWNDEBUGGER;
34
 * } else {
35
 *      DebugOut.Digital[0] &= ~DEBUG_MYOWNDEBUGGER;
36
 * }
37
 * ...
38
 * if (whatever_other_condition) {
39
 *      DebugOut.Digital[1] |= DEBUG_MYOWNDEBUGGER;
40
 * } else {
41
 *      DebugOut.Digital[1] &= ~DEBUG_MYOWNDEBUGGER;
42
 * }
43
 *
44
 * Digital debugs may be added as desired, and removed when the mystery
45
 * at hand is resolved.
46
 */
47
#define DEBUG_NONE 0
48
 
49
#define DEBUG_LEDTEST_ON  1000
50
#define DEBUG_LEDTEST_OFF 1001
51
 
52
#define DEBUG_MAINLOOP_TIMER 1
53
#define DEBUG_HEIGHT_DIFF 2
54
#define DEBUG_HOVERTHROTTLE 4
55
#define DEBUG_ACC0THORDER 8
56
#define DEBUG_COMMANDREPEATED 16
57
#define DEBUG_PRESSURERANGE 32
58
#define DEBUG_CLIP 64
59
#define DEBUG_SENSORLIMIT 128
60
 
61
/*
62
 * Set to 0 for using outputs as the usual flashing lights.
63
 * Set to one of the DEBUG_... defines h for using the outputs as debug lights.
64
 */
65
#define DIGITAL_DEBUG_MASK DEBUG_NONE
66
 
67
void output_init(void);
68
void output_update(void);
69
void beep(uint16_t millis);
70
void beepNumber(uint8_t numbeeps);
71
void beepRCAlarm(void);
72
void beepI2CAlarm(void);
73
void beepBatteryAlarm(void);
74
 
75
#endif //_output_H