From 85e11a1a460f08f1791a03a6bb95c976b7117ab8 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Thu, 11 Jan 2018 08:55:15 +0100 Subject: use inline functions for most gpio --- include/arduino-nano/driver/gpio.h | 16 ++++++++++++---- include/msp430fr5969lp/driver/gpio.h | 37 ++++++++++++++++++++++++++++++++---- 2 files changed, 45 insertions(+), 8 deletions(-) (limited to 'include') diff --git a/include/arduino-nano/driver/gpio.h b/include/arduino-nano/driver/gpio.h index 17bdfc8..6acf977 100644 --- a/include/arduino-nano/driver/gpio.h +++ b/include/arduino-nano/driver/gpio.h @@ -36,10 +36,18 @@ class GPIO { pd7 = 31 }; - void setup(); - void led_on(unsigned char id); - void led_off(unsigned char id); - void led_toggle(unsigned char id); + inline void setup() { + DDRB = _BV(PB5); + } + inline void led_on(unsigned char id) { + PORTB |= _BV(PB5); + } + inline void led_off(unsigned char id) { + PORTB &= ~_BV(PB5); + } + inline void led_toggle(unsigned char id) { + PINB = _BV(PB5); + } inline void input(unsigned char const pin) { if (pin < 8) { } else if (pin < 16) { diff --git a/include/msp430fr5969lp/driver/gpio.h b/include/msp430fr5969lp/driver/gpio.h index 177e7c5..7ac3ba3 100644 --- a/include/msp430fr5969lp/driver/gpio.h +++ b/include/msp430fr5969lp/driver/gpio.h @@ -1,16 +1,45 @@ #ifndef GPIO_H #define GPIO_H +#include + class GPIO { private: GPIO(const GPIO ©); public: GPIO () {} - void setup(); - void led_on(unsigned char id); - void led_off(unsigned char id); - void led_toggle(unsigned char id); + inline void setup() { + P1OUT = 0; + P2OUT = 0; + P3OUT = 0; + P4OUT = 0; + P1DIR = BIT0; + P2DIR = 0; + P3DIR = 0; + P4DIR = BIT6; + } + inline void led_on(unsigned char id) { + if (id == 0) { + P1OUT |= BIT0; + } else { + P4OUT |= BIT6; + } + } + inline void led_off(unsigned char id) { + if (id == 0) { + P1OUT &= ~BIT0; + } else { + P4OUT &= ~BIT6; + } + } + inline void led_toggle(unsigned char id) { + if (id == 0) { + P1OUT ^= BIT0; + } else { + P4OUT ^= BIT6; + } + } }; extern GPIO gpio; -- cgit v1.2.3