aboutsummaryrefslogtreecommitdiff
path: root/buildroot/share/PlatformIO/variants/archim/variant.h
diff options
context:
space:
mode:
Diffstat (limited to 'buildroot/share/PlatformIO/variants/archim/variant.h')
-rw-r--r--buildroot/share/PlatformIO/variants/archim/variant.h284
1 files changed, 284 insertions, 0 deletions
diff --git a/buildroot/share/PlatformIO/variants/archim/variant.h b/buildroot/share/PlatformIO/variants/archim/variant.h
new file mode 100644
index 0000000..11f8f63
--- /dev/null
+++ b/buildroot/share/PlatformIO/variants/archim/variant.h
@@ -0,0 +1,284 @@
+/*
+ Copyright (c) 2011 Arduino. All right reserved.
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#ifndef _VARIANT_ARDUINO_DUE_X_
+#define _VARIANT_ARDUINO_DUE_X_
+
+/*----------------------------------------------------------------------------
+ * Definitions
+ *----------------------------------------------------------------------------*/
+
+/** Frequency of the board main oscillator */
+#define VARIANT_MAINOSC 12000000
+
+/** Master clock frequency */
+#define VARIANT_MCK 84000000
+
+/*----------------------------------------------------------------------------
+ * Headers
+ *----------------------------------------------------------------------------*/
+
+#include "Arduino.h"
+#ifdef __cplusplus
+#include "UARTClass.h"
+#include "USARTClass.h"
+#endif
+
+#ifdef __cplusplus
+extern "C"{
+#endif // __cplusplus
+
+/**
+ * Libc porting layers
+ */
+#if defined ( __GNUC__ ) /* GCC CS3 */
+# include <syscalls.h> /** RedHat Newlib minimal stub */
+#endif
+
+/*----------------------------------------------------------------------------
+ * Pins
+ *----------------------------------------------------------------------------*/
+
+// Number of pins defined in PinDescription array
+#define PINS_COUNT 79
+#define NUM_DIGITAL_PINS 66
+#define NUM_ANALOG_INPUTS 12
+#define analogInputToDigitalPin(p) ((p < 12) ? (p) + 54 : -1)
+
+#define digitalPinToPort(P) ( g_APinDescription[P].pPort )
+#define digitalPinToBitMask(P) ( g_APinDescription[P].ulPin )
+//#define analogInPinToBit(P) ( )
+#define portOutputRegister(port) ( &(port->PIO_ODSR) )
+#define portInputRegister(port) ( &(port->PIO_PDSR) )
+#define digitalPinHasPWM(P) ( g_APinDescription[P].ulPWMChannel != NOT_ON_PWM || g_APinDescription[P].ulTCChannel != NOT_ON_TIMER )
+
+/*
+ * portModeRegister(..) should return a register to set pin mode
+ * INPUT or OUTPUT by setting the corresponding bit to 0 or 1.
+ * Unfortunately on SAM architecture the PIO_OSR register is
+ * read-only and can be set only through the enable/disable registers
+ * pair PIO_OER/PIO_ODR.
+ */
+// #define portModeRegister(port) ( &(port->PIO_OSR) )
+
+/*
+ * digitalPinToTimer(..) is AVR-specific and is not defined for SAM
+ * architecture. If you need to check if a pin supports PWM you must
+ * use digitalPinHasPWM(..).
+ *
+ * https://github.com/arduino/Arduino/issues/1833
+ */
+// #define digitalPinToTimer(P)
+
+// Interrupts
+#define digitalPinToInterrupt(p) ((p) < NUM_DIGITAL_PINS ? (p) : -1)
+
+// LEDs
+#define PIN_LED_13 (13U)
+#define PIN_LED_RXL (72U)
+#define PIN_LED_TXL (73U)
+#define PIN_LED PIN_LED_13
+#define PIN_LED2 PIN_LED_RXL
+#define PIN_LED3 PIN_LED_TXL
+#define LED_BUILTIN 13
+
+/*
+ * SPI Interfaces
+ */
+#define SPI_INTERFACES_COUNT 1
+
+#define SPI_INTERFACE SPI0
+#define SPI_INTERFACE_ID ID_SPI0
+#define SPI_CHANNELS_NUM 4
+#define PIN_SPI_SS0 (77U)
+#define PIN_SPI_SS1 (87U)
+#define PIN_SPI_SS2 (86U)
+#define PIN_SPI_SS3 (78U)
+#define PIN_SPI_MOSI (75U)
+#define PIN_SPI_MISO (74U)
+#define PIN_SPI_SCK (76U)
+#define BOARD_SPI_SS0 (77U) //(10U)
+#define BOARD_SPI_SS1 (4U)
+#define BOARD_SPI_SS2 (52U)
+#define BOARD_SPI_SS3 PIN_SPI_SS3
+#define BOARD_SPI_DEFAULT_SS BOARD_SPI_SS3
+
+#define BOARD_PIN_TO_SPI_PIN(x) \
+ (x==BOARD_SPI_SS0 ? PIN_SPI_SS0 : \
+ (x==BOARD_SPI_SS1 ? PIN_SPI_SS1 : \
+ (x==BOARD_SPI_SS2 ? PIN_SPI_SS2 : PIN_SPI_SS3 )))
+#define BOARD_PIN_TO_SPI_CHANNEL(x) \
+ (x==BOARD_SPI_SS0 ? 0 : \
+ (x==BOARD_SPI_SS1 ? 1 : \
+ (x==BOARD_SPI_SS2 ? 2 : 3)))
+
+static const uint8_t SS = BOARD_SPI_SS0;
+static const uint8_t SS1 = BOARD_SPI_SS1;
+static const uint8_t SS2 = BOARD_SPI_SS2;
+static const uint8_t SS3 = BOARD_SPI_SS3;
+static const uint8_t MOSI = PIN_SPI_MOSI;
+static const uint8_t MISO = PIN_SPI_MISO;
+static const uint8_t SCK = PIN_SPI_SCK;
+
+/*
+ * Wire Interfaces
+ */
+#define WIRE_INTERFACES_COUNT 2
+
+#define PIN_WIRE_SDA (20U)
+#define PIN_WIRE_SCL (21U)
+#define WIRE_INTERFACE TWI1
+#define WIRE_INTERFACE_ID ID_TWI1
+#define WIRE_ISR_HANDLER TWI1_Handler
+#define WIRE_ISR_ID TWI1_IRQn
+
+#define PIN_WIRE1_SDA (70U)
+#define PIN_WIRE1_SCL (71U)
+#define WIRE1_INTERFACE TWI0
+#define WIRE1_INTERFACE_ID ID_TWI0
+#define WIRE1_ISR_HANDLER TWI0_Handler
+#define WIRE1_ISR_ID TWI0_IRQn
+
+static const uint8_t SDA = PIN_WIRE_SDA;
+static const uint8_t SCL = PIN_WIRE_SCL;
+static const uint8_t SDA1 = PIN_WIRE1_SDA;
+static const uint8_t SCL1 = PIN_WIRE1_SCL;
+
+/*
+ * UART/USART Interfaces
+ */
+// Serial
+#define PINS_UART (81U)
+// Serial1
+#define PINS_USART0 (82U)
+// Serial2
+#define PINS_USART1 (83U)
+// Serial3
+#define PINS_USART3 (84U)
+
+/*
+ * USB Interfaces
+ */
+#define PINS_USB (85U)
+
+/*
+ * Analog pins
+ */
+static const uint8_t A0 = 54;
+static const uint8_t A1 = 55;
+static const uint8_t A2 = 56;
+static const uint8_t A3 = 57;
+static const uint8_t A4 = 58;
+static const uint8_t A5 = 59;
+static const uint8_t A6 = 60;
+static const uint8_t A7 = 61;
+static const uint8_t A8 = 62;
+static const uint8_t A9 = 63;
+static const uint8_t A10 = 64;
+static const uint8_t A11 = 65;
+static const uint8_t DAC0 = 66;
+static const uint8_t DAC1 = 67;
+static const uint8_t CANRX = 68;
+static const uint8_t CANTX = 69;
+#define ADC_RESOLUTION 12
+
+/*
+ * Complementary CAN pins
+ */
+static const uint8_t CAN1RX = 88;
+static const uint8_t CAN1TX = 89;
+
+// CAN0
+#define PINS_CAN0 (90U)
+// CAN1
+#define PINS_CAN1 (91U)
+
+
+/*
+ * DACC
+ */
+#define DACC_INTERFACE DACC
+#define DACC_INTERFACE_ID ID_DACC
+#define DACC_RESOLUTION 12
+#define DACC_ISR_HANDLER DACC_Handler
+#define DACC_ISR_ID DACC_IRQn
+
+/*
+ * PWM
+ */
+#define PWM_INTERFACE PWM
+#define PWM_INTERFACE_ID ID_PWM
+#define PWM_FREQUENCY 31000
+#define PWM_MAX_DUTY_CYCLE 255
+#define PWM_MIN_DUTY_CYCLE 0
+#define PWM_RESOLUTION 8
+
+/*
+ * TC
+ */
+#define TC_INTERFACE TC0
+#define TC_INTERFACE_ID ID_TC0
+#define TC_FREQUENCY 100000
+#define TC_MAX_DUTY_CYCLE 255
+#define TC_MIN_DUTY_CYCLE 0
+#define TC_RESOLUTION 8
+
+#ifdef __cplusplus
+}
+#endif
+
+/*----------------------------------------------------------------------------
+ * Arduino objects - C++ only
+ *----------------------------------------------------------------------------*/
+
+#ifdef __cplusplus
+
+extern UARTClass Serial;
+extern USARTClass Serial1;
+extern USARTClass Serial2;
+extern USARTClass Serial3;
+
+#endif
+
+// These serial port names are intended to allow libraries and architecture-neutral
+// sketches to automatically default to the correct port name for a particular type
+// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
+// the first hardware serial port whose RX/TX pins are not dedicated to another use.
+//
+// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor
+//
+// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial
+//
+// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library
+//
+// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins.
+//
+// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX
+// pins are NOT connected to anything by default.
+#define SERIAL_PORT_MONITOR Serial
+#define SERIAL_PORT_USBVIRTUAL SerialUSB
+#define SERIAL_PORT_HARDWARE_OPEN Serial1
+#define SERIAL_PORT_HARDWARE_OPEN1 Serial2
+#define SERIAL_PORT_HARDWARE_OPEN2 Serial3
+#define SERIAL_PORT_HARDWARE Serial
+#define SERIAL_PORT_HARDWARE1 Serial1
+#define SERIAL_PORT_HARDWARE2 Serial2
+#define SERIAL_PORT_HARDWARE3 Serial3
+
+#endif /* _VARIANT_ARDUINO_DUE_X_ */
+