Fri, 17 Nov 2017 10:13:31 +0100
proper configuration, homing and planner optimization
2 | 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 |