|
1 /* |
|
2 LUFA Library |
|
3 Copyright (C) Dean Camera, 2010. |
|
4 |
|
5 dean [at] fourwalledcubicle [dot] com |
|
6 www.fourwalledcubicle.com |
|
7 */ |
|
8 |
|
9 /* |
|
10 Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) |
|
11 |
|
12 Permission to use, copy, modify, distribute, and sell this |
|
13 software and its documentation for any purpose is hereby granted |
|
14 without fee, provided that the above copyright notice appear in |
|
15 all copies and that both that the copyright notice and this |
|
16 permission notice and warranty disclaimer appear in supporting |
|
17 documentation, and that the name of the author not be used in |
|
18 advertising or publicity pertaining to distribution of the |
|
19 software without specific, written prior permission. |
|
20 |
|
21 The author disclaim all warranties with regard to this |
|
22 software, including all implied warranties of merchantability |
|
23 and fitness. In no event shall the author be liable for any |
|
24 special, indirect or consequential damages or any damages |
|
25 whatsoever resulting from loss of use, data or profits, whether |
|
26 in an action of contract, negligence or other tortious action, |
|
27 arising out of or in connection with the use or performance of |
|
28 this software. |
|
29 */ |
|
30 |
|
31 /* |
|
32 Board LEDs driver for the Benito board, from www.dorkbotpdx.org. |
|
33 */ |
|
34 |
|
35 #ifndef __LEDS_ARDUINOUNO_H__ |
|
36 #define __LEDS_ARDUINOUNO_H__ |
|
37 |
|
38 /* Includes: */ |
|
39 #include <avr/io.h> |
|
40 |
|
41 /* Enable C linkage for C++ Compilers: */ |
|
42 #if defined(__cplusplus) |
|
43 extern "C" { |
|
44 #endif |
|
45 |
|
46 /* Preprocessor Checks: */ |
|
47 #if !defined(INCLUDE_FROM_LEDS_H) |
|
48 #error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead. |
|
49 #endif |
|
50 |
|
51 /* Public Interface - May be used in end-application: */ |
|
52 /* Macros: */ |
|
53 /** LED mask for the first LED on the board. */ |
|
54 #define LEDS_LED1 (1 << 5) |
|
55 |
|
56 /** LED mask for the second LED on the board. */ |
|
57 #define LEDS_LED2 (1 << 4) |
|
58 |
|
59 /** LED mask for all the LEDs on the board. */ |
|
60 #define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2) |
|
61 |
|
62 /** LED mask for the none of the board LEDs */ |
|
63 #define LEDS_NO_LEDS 0 |
|
64 |
|
65 /* Inline Functions: */ |
|
66 #if !defined(__DOXYGEN__) |
|
67 static inline void LEDs_Init(void) |
|
68 { |
|
69 DDRD |= LEDS_ALL_LEDS; |
|
70 PORTD |= LEDS_ALL_LEDS; |
|
71 } |
|
72 |
|
73 static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) |
|
74 { |
|
75 PORTD &= ~LEDMask; |
|
76 } |
|
77 |
|
78 static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask) |
|
79 { |
|
80 PORTD |= LEDMask; |
|
81 } |
|
82 |
|
83 static inline void LEDs_SetAllLEDs(const uint8_t LEDMask) |
|
84 { |
|
85 PORTD = ((PORTD | LEDS_ALL_LEDS) & ~LEDMask); |
|
86 } |
|
87 |
|
88 static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask) |
|
89 { |
|
90 PORTD = ((PORTD | ActiveMask) & ~LEDMask); |
|
91 } |
|
92 |
|
93 static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) |
|
94 { |
|
95 PORTD ^= LEDMask; |
|
96 } |
|
97 |
|
98 static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; |
|
99 static inline uint8_t LEDs_GetLEDs(void) |
|
100 { |
|
101 return (PORTD & LEDS_ALL_LEDS); |
|
102 } |
|
103 #endif |
|
104 |
|
105 /* Disable C linkage for C++ Compilers: */ |
|
106 #if defined(__cplusplus) |
|
107 } |
|
108 #endif |
|
109 |
|
110 #endif |