From 043555a302903be4aeae270a2040f4aaf490c88b Mon Sep 17 00:00:00 2001 From: Kristian Lauszus Date: Fri, 17 Aug 2012 23:21:27 +0200 Subject: [PATCH] Added digitalWrite(pin, TOGGLE) --- build/shared/lib/keywords.txt | 3 ++- hardware/arduino/cores/arduino/Arduino.h | 5 +++-- hardware/arduino/cores/arduino/wiring_digital.c | 7 ++++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/build/shared/lib/keywords.txt b/build/shared/lib/keywords.txt index 69fadf4467d..f5cd4696987 100644 --- a/build/shared/lib/keywords.txt +++ b/build/shared/lib/keywords.txt @@ -1,7 +1,8 @@ # LITERAL1 specifies constants -HIGH LITERAL1 Constants LOW LITERAL1 Constants +HIGH LITERAL1 Constants +TOGGLE LITERAL1 Constants INPUT LITERAL1 Constants INPUT_PULLUP LITERAL1 Constants OUTPUT LITERAL1 Constants diff --git a/hardware/arduino/cores/arduino/Arduino.h b/hardware/arduino/cores/arduino/Arduino.h index 830c9952fbf..b59968a9773 100755 --- a/hardware/arduino/cores/arduino/Arduino.h +++ b/hardware/arduino/cores/arduino/Arduino.h @@ -15,9 +15,10 @@ extern "C"{ #endif -#define HIGH 0x1 #define LOW 0x0 - +#define HIGH 0x1 +#define TOGGLE 0x2 + #define INPUT 0x0 #define OUTPUT 0x1 #define INPUT_PULLUP 0x2 diff --git a/hardware/arduino/cores/arduino/wiring_digital.c b/hardware/arduino/cores/arduino/wiring_digital.c index be323b1dfef..7ecb64cc4d1 100644 --- a/hardware/arduino/cores/arduino/wiring_digital.c +++ b/hardware/arduino/cores/arduino/wiring_digital.c @@ -152,11 +152,12 @@ void digitalWrite(uint8_t pin, uint8_t val) uint8_t oldSREG = SREG; cli(); - if (val == LOW) { + if (val == LOW) *out &= ~bit; - } else { + else if (val == TOGGLE) + *out ^= bit; + else *out |= bit; - } SREG = oldSREG; }