|
-
-
- #ifndef _SD_t3_ioreg_h_
- #define _SD_t3_ioreg_h_
-
-
-
- #include "Arduino.h"
-
- #if defined(__AVR__)
- #define PIN_TO_BASEREG(pin) (portInputRegister(digitalPinToPort(pin)))
- #define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin))
- #define IO_REG_TYPE uint8_t
- #define IO_REG_ASM asm("r30")
- #define DIRECT_READ(base, mask) (((*(base)) & (mask)) ? 1 : 0)
- #define DIRECT_MODE_INPUT(base, mask) ((*((base)+1)) &= ~(mask))
- #define DIRECT_MODE_OUTPUT(base, mask) ((*((base)+1)) |= (mask))
- #define DIRECT_WRITE_LOW(base, mask) ((*((base)+2)) &= ~(mask))
- #define DIRECT_WRITE_HIGH(base, mask) ((*((base)+2)) |= (mask))
-
- #elif defined(__MK20DX128__) || defined(__MK20DX256__) || defined(__MK64FX512__) || defined(__MK66FX1M0__)
- #define PIN_TO_BASEREG(pin) (portOutputRegister(pin))
- #define PIN_TO_BITMASK(pin) (1)
- #define IO_REG_TYPE uint8_t
- #define IO_REG_ASM
- #define DIRECT_READ(base, mask) (*((base)+512))
- #define DIRECT_MODE_INPUT(base, mask) (*((base)+640) = 0)
- #define DIRECT_MODE_OUTPUT(base, mask) (*((base)+640) = 1)
- #define DIRECT_WRITE_LOW(base, mask) (*((base)+256) = 1)
- #define DIRECT_WRITE_HIGH(base, mask) (*((base)+128) = 1)
-
- #elif defined(__MKL26Z64__)
- #define PIN_TO_BASEREG(pin) (portOutputRegister(pin))
- #define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin))
- #define IO_REG_TYPE uint8_t
- #define IO_REG_ASM
- #define DIRECT_READ(base, mask) ((*((base)+16) & (mask)) ? 1 : 0)
- #define DIRECT_MODE_INPUT(base, mask) (*((base)+20) &= ~(mask))
- #define DIRECT_MODE_OUTPUT(base, mask) (*((base)+20) |= (mask))
- #define DIRECT_WRITE_LOW(base, mask) (*((base)+8) = (mask))
- #define DIRECT_WRITE_HIGH(base, mask) (*((base)+4) = (mask))
-
- #elif defined(__SAM3X8E__)
- #define PIN_TO_BASEREG(pin) (&(digitalPinToPort(pin)->PIO_PER))
- #define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin))
- #define IO_REG_TYPE uint32_t
- #define IO_REG_ASM
- #define DIRECT_READ(base, mask) (((*((base)+15)) & (mask)) ? 1 : 0)
- #define DIRECT_MODE_INPUT(base, mask) ((*((base)+5)) = (mask))
- #define DIRECT_MODE_OUTPUT(base, mask) ((*((base)+4)) = (mask))
- #define DIRECT_WRITE_LOW(base, mask) ((*((base)+13)) = (mask))
- #define DIRECT_WRITE_HIGH(base, mask) ((*((base)+12)) = (mask))
-
- #elif defined(__PIC32MX__)
- #define PIN_TO_BASEREG(pin) (portModeRegister(digitalPinToPort(pin)))
- #define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin))
- #define IO_REG_TYPE uint32_t
- #define IO_REG_ASM
- #define DIRECT_READ(base, mask) (((*(base+4)) & (mask)) ? 1 : 0) //PORTX + 0x10
- #define DIRECT_MODE_INPUT(base, mask) ((*(base+2)) = (mask)) //TRISXSET + 0x08
- #define DIRECT_MODE_OUTPUT(base, mask) ((*(base+1)) = (mask)) //TRISXCLR + 0x04
- #define DIRECT_WRITE_LOW(base, mask) ((*(base+8+1)) = (mask)) //LATXCLR + 0x24
- #define DIRECT_WRITE_HIGH(base, mask) ((*(base+8+2)) = (mask)) //LATXSET + 0x28
-
- #else
- #define PIN_TO_BASEREG(pin) (0)
- #define PIN_TO_BITMASK(pin) (pin)
- #define IO_REG_TYPE unsigned int
- #define IO_REG_ASM
- #define DIRECT_READ(base, pin) digitalRead(pin)
- #define DIRECT_WRITE_LOW(base, pin) digitalWrite(pin, LOW)
- #define DIRECT_WRITE_HIGH(base, pin) digitalWrite(pin, HIGH)
- #define DIRECT_MODE_INPUT(base, pin) pinMode(pin,INPUT)
- #define DIRECT_MODE_OUTPUT(base, pin) pinMode(pin,OUTPUT)
-
- #endif // CPU types
-
- #endif
|