1 | /* |
2 | wiring_private.h - Internal header file. |
3 | Part of Arduino - http://www.arduino.cc/ |
4 | |
5 | Copyright (c) 2005-2006 David A. Mellis |
6 | |
7 | This library is free software; you can redistribute it and/or |
8 | modify it under the terms of the GNU Lesser General Public |
9 | License as published by the Free Software Foundation; either |
10 | version 2.1 of the License, or (at your option) any later version. |
11 | |
12 | This library is distributed in the hope that it will be useful, |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
15 | Lesser General Public License for more details. |
16 | |
17 | You should have received a copy of the GNU Lesser General |
18 | Public License along with this library; if not, write to the |
19 | Free Software Foundation, Inc., 59 Temple Place, Suite 330, |
20 | Boston, MA 02111-1307 USA |
21 | */ |
22 |
|
23 | #ifndef WiringPrivate_h |
24 | #define WiringPrivate_h |
25 |
|
26 | #include <avr/io.h> |
27 | #include <avr/interrupt.h> |
28 | #include <stdio.h> |
29 | #include <stdarg.h> |
30 |
|
31 | #include "Arduino.h" |
32 |
|
33 | #ifdef __cplusplus |
34 | extern "C"{ |
35 | #endif |
36 |
|
37 | #ifndef cbi |
38 | #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
39 | #endif |
40 | #ifndef sbi |
41 | #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
42 | #endif |
43 |
|
44 | uint32_t countPulseASM(volatile uint8_t *port, uint8_t bit, uint8_t stateMask, unsigned long maxloops); |
45 |
|
46 | #define EXTERNAL_INT_0 0 |
47 | #define EXTERNAL_INT_1 1 |
48 | #define EXTERNAL_INT_2 2 |
49 | #define EXTERNAL_INT_3 3 |
50 | #define EXTERNAL_INT_4 4 |
51 | #define EXTERNAL_INT_5 5 |
52 | #define EXTERNAL_INT_6 6 |
53 | #define EXTERNAL_INT_7 7 |
54 |
|
55 | #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega128RFA1__) || defined(__AVR_ATmega256RFR2__) || \ |
56 | defined(__AVR_AT90USB82__) || defined(__AVR_AT90USB162__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega8U2__) |
57 | #define EXTERNAL_NUM_INTERRUPTS 8 |
58 | #elif defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) |
59 | #define EXTERNAL_NUM_INTERRUPTS 3 |
60 | #elif defined(__AVR_ATmega32U4__) |
61 | #define EXTERNAL_NUM_INTERRUPTS 5 |
62 | #else |
63 | #define EXTERNAL_NUM_INTERRUPTS 2 |
64 | #endif |
65 |
|
66 | typedef void (*voidFuncPtr)(void); |
67 |
|
68 | #ifdef __cplusplus |
69 | } // extern "C" |
70 | #endif |
71 |
|
72 | #endif |
73 |
|