Subversion Repositories FlightCtrl

Rev

Rev 2048 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1612 dongfang 1
#ifndef _OUTPUT_H
2
#define _OUTPUT_H
3
 
4
#include <avr/io.h>
5
 
1864 - 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
 
1805 - 18
// invert means: An "1" bit in digital debug data make a LOW on the output.
1887 - 19
#define DIGITAL_DEBUG_INVERT 0
1854 - 20
 
1805 - 21
#define OUTPUT_HIGH(num)        {PORTC |=  (4 << (num));}
22
#define OUTPUT_LOW(num)         {PORTC &= ~(4 << (num));}
1775 - 23
#define OUTPUT_TOGGLE(num) (    {PORTC ^=  (4 << (num));}
1612 dongfang 24
 
1854 - 25
/*
26
 * Some digital debugs. A digital debug is 2 signals on the 2 LED outputs,
27
 * turned on and off depending on some condtions given in the code.
28
 * Only one can be selected, by defining DIGITAL_DEBUG_MASK to the value
29
 * of the debug.
30
 * In the code one can do like:
31
 * if (whatever_condition) {
32
 *      DebugOut.Digital[0] |= DEBUG_MYOWNDEBUGGER;
33
 * } else {
34
 *      DebugOut.Digital[0] &= ~DEBUG_MYOWNDEBUGGER;
35
 * }
36
 * ...
37
 * if (whatever_other_condition) {
38
 *      DebugOut.Digital[1] |= DEBUG_MYOWNDEBUGGER;
39
 * } else {
40
 *      DebugOut.Digital[1] &= ~DEBUG_MYOWNDEBUGGER;
41
 * }
42
 *
43
 * Digital debugs may be added as desired, and removed when the mystery
44
 * at hand is resolved.
45
 */
1869 - 46
 
47
#define DEBUG_MAINLOOP_TIMER 1
1964 - 48
#define DEBUG_HEIGHT_DIFF    2
2052 - 49
#define DEBUG_FLIGHTCLIP     4
1964 - 50
#define DEBUG_ACC0THORDER    8
2048 - 51
#define DEBUG_COMPASS       16
1796 - 52
#define DEBUG_PRESSURERANGE 32
1964 - 53
#define DEBUG_CLIP          64
54
#define DEBUG_SENSORLIMIT  128
1612 dongfang 55
 
1986 - 56
#define OUTPUTFLAGS_INVERT_0         1 // Inverted: 1 means low output on atmega. Does not affect on-board LED (if used with the OUTPUTOPTIONS_USE_ONBOARD_LEDS option)
57
#define OUTPUTFLAGS_INVERT_1         2 // Inverted: 1 means low output on atmega. Does not affect on-board LED (if used with the OUTPUTOPTIONS_USE_ONBOARD_LEDS option)
58
#define OUTPUTFLAGS_FLASH_0_AT_BEEP  4 // Flash LED when beeper beeps
59
#define OUTPUTFLAGS_FLASH_1_AT_BEEP  8 // Flash LED when beeper beeps
60
#define OUTPUTFLAGS_USE_ONBOARD_LEDS 16 // Control on-board LEDs in addition to outputs
61
#define OUTPUTFLAGS_TEST_OFF         32 // For testing: Turn off both outputs
62
#define OUTPUTFLAGS_TEST_ON          64 // For testing: Turn on both outputs
1964 - 63
 
2052 - 64
// For practical reasons put here instead of in uart0.h
65
typedef struct {
66
    uint8_t digital[2];
67
    uint16_t analog[32]; // debug values
68
}__attribute__((packed)) DebugOut_t;
69
 
70
extern DebugOut_t debugOut;
71
 
1854 - 72
/*
73
 * Set to 0 for using outputs as the usual flashing lights.
74
 * Set to one of the DEBUG_... defines h for using the outputs as debug lights.
75
 */
1960 - 76
#define DIGITAL_DEBUG_MASK 0
1854 - 77
 
1612 dongfang 78
void output_init(void);
1964 - 79
void outputSet(uint8_t num, uint8_t state);
1612 dongfang 80
void output_update(void);
1887 - 81
void beep(uint16_t millis);
82
void beepNumber(uint8_t numbeeps);
83
void beepRCAlarm(void);
84
void beepI2CAlarm(void);
85
void beepBatteryAlarm(void);
1612 dongfang 86
 
87
#endif //_output_H