7 #include <AlarmClock.h>
9 #ifndef PINPOLL_COUNT_LOW
10 #define PINPOLL_COUNT_LOW 1
12 #ifndef PINPOLL_COUNT_HIGH
13 #define PINPOLL_COUNT_HIGH 1
20 inline static void setOutput (uint8_t pin) { pinMode(pin,OUTPUT); }
21 inline static void setInput (uint8_t pin) { pinMode(pin,INPUT); }
22 inline static void setHigh (uint8_t pin) { digitalWrite(pin,HIGH); }
23 inline static void setLow (uint8_t pin) { digitalWrite(pin,LOW); }
24 inline static uint8_t getState (uint8_t pin) {
return digitalRead(pin); }
25 #ifdef ARDUINO_ARCH_STM32F1
26 inline static void setPWM (uint8_t pin) { pinMode(pin,PWM); }
27 inline static void setPWM (uint8_t pin,uint16_t value) { pwmWrite(pin,value); }
29 inline static void setPWM (uint8_t pin) { pinMode(pin,OUTPUT); }
30 inline static void setPWM (uint8_t pin,uint8_t value) { analogWrite(pin,value); }
38 inline static void setOutput (uint8_t pin) { DDRA |= (1 << pin); }
39 inline static void setInput (uint8_t pin) { DDRA &= ~(1 << pin); }
40 inline static void setHigh (uint8_t pin) { PORTA |= (1 << pin); }
41 inline static void setLow (uint8_t pin) { PORTA &= ~(1 << pin); }
42 inline static uint8_t getState (uint8_t pin) {
return (PINA & (1 << pin)) == 0 ? LOW : HIGH; }
47 inline static void setOutput (uint8_t pin) { DDRB |= (1 << pin); }
48 inline static void setInput (uint8_t pin) { DDRB &= ~(1 << pin); }
49 inline static void setHigh (uint8_t pin) { PORTB |= (1 << pin); }
50 inline static void setLow (uint8_t pin) { PORTB &= ~(1 << pin); }
51 inline static uint8_t getState (uint8_t pin) {
return (PINB & (1 << pin)) == 0 ? LOW : HIGH; }
55 inline static void setOutput (uint8_t pin) { DDRC |= (1 << pin); }
56 inline static void setInput (uint8_t pin) { DDRC &= ~(1 << pin); }
57 inline static void setHigh (uint8_t pin) { PORTC |= (1 << pin); }
58 inline static void setLow (uint8_t pin) { PORTC &= ~(1 << pin); }
59 inline static uint8_t getState (uint8_t pin) {
return (PINC & (1 << pin)) == 0 ? LOW : HIGH; }
63 inline static void setOutput (uint8_t pin) { DDRD |= (1 << pin); }
64 inline static void setInput (uint8_t pin) { DDRD &= ~(1 << pin); }
65 inline static void setHigh (uint8_t pin) { PORTD |= (1 << pin); }
66 inline static void setLow (uint8_t pin) { PORTD &= ~(1 << pin); }
67 inline static uint8_t getState (uint8_t pin) {
return (PIND & (1 << pin)) == 0 ? LOW : HIGH; }
86 uint8_t p = digitalRead(pin);
88 if( laststate != p ) {
95 count = (p == LOW ? PINPOLL_COUNT_LOW : PINPOLL_COUNT_HIGH);
101 count = (p == LOW ? PINPOLL_COUNT_LOW : PINPOLL_COUNT_HIGH);
106 uint8_t state = readPin();
107 if( state != laststate) {
108 if( state == HIGH ) {
109 if( mode == CHANGE || mode == RISING ) {
114 if( mode == CHANGE || mode == FALLING ) {
124 void enable (uint8_t p,
void (*func)(
void),uint8_t m) {
125 sysclock.cancel(*
this);
129 laststate = digitalRead(pin);
130 DPRINT(F(
"Enable PinPolling: ")); DDEC(pin); DPRINT(F(
" - ")); DDECLN(mode);
135 DPRINT(F(
"Disable PinPolling: ")); DDECLN(pin);
136 sysclock.cancel(*
this);
141 inline PinPollingAlarm& pinpolling5() {
static PinPollingAlarm p;
return p; }
142 inline PinPollingAlarm& pinpolling6() {
static PinPollingAlarm p;
return p; }
143 inline PinPollingAlarm& pinpolling7() {
static PinPollingAlarm p;
return p; }
144 inline PinPollingAlarm& pinpolling8() {
static PinPollingAlarm p;
return p; }
145 inline PinPollingAlarm& pinpolling9() {
static PinPollingAlarm p;
return p; }
146 inline PinPollingAlarm& pinpolling10() {
static PinPollingAlarm p;
return p; }
147 inline PinPollingAlarm& pinpolling11() {
static PinPollingAlarm p;
return p; }
148 inline PinPollingAlarm& pinpolling12() {
static PinPollingAlarm p;
return p; }
149 inline PinPollingAlarm& pinpolling13() {
static PinPollingAlarm p;
return p; }
150 inline PinPollingAlarm& pinpolling14() {
static PinPollingAlarm p;
return p; }
151 inline PinPollingAlarm& pinpolling15() {
static PinPollingAlarm p;
return p; }
152 inline PinPollingAlarm& pinpolling16() {
static PinPollingAlarm p;
return p; }
153 inline PinPollingAlarm& pinpolling17() {
static PinPollingAlarm p;
return p; }
154 inline PinPollingAlarm& pinpolling18() {
static PinPollingAlarm p;
return p; }
155 inline PinPollingAlarm& pinpolling19() {
static PinPollingAlarm p;
return p; }
156 inline PinPollingAlarm& pinpolling20() {
static PinPollingAlarm p;
return p; }
157 inline PinPollingAlarm& pinpolling21() {
static PinPollingAlarm p;
return p; }
158 inline PinPollingAlarm& pinpolling22() {
static PinPollingAlarm p;
return p; }
159 inline PinPollingAlarm& pinpolling23() {
static PinPollingAlarm p;
return p; }
160 inline PinPollingAlarm& pinpolling24() {
static PinPollingAlarm p;
return p; }
161 inline PinPollingAlarm& pinpolling25() {
static PinPollingAlarm p;
return p; }
162 inline PinPollingAlarm& pinpolling26() {
static PinPollingAlarm p;
return p; }
163 inline PinPollingAlarm& pinpolling27() {
static PinPollingAlarm p;
return p; }
164 inline PinPollingAlarm& pinpolling28() {
static PinPollingAlarm p;
return p; }
165 inline PinPollingAlarm& pinpolling29() {
static PinPollingAlarm p;
return p; }
166 inline PinPollingAlarm& pinpolling30() {
static PinPollingAlarm p;
return p; }
167 inline PinPollingAlarm& pinpolling31() {
static PinPollingAlarm p;
return p; }