Skip to content
Snippets Groups Projects
Commit de0ab392 authored by Thibaut VIARD's avatar Thibaut VIARD
Browse files

Adding Zero variant

parent 50785a7c
No related branches found
No related tags found
No related merge requests found
/*
Copyright (c) 2014 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
*/
/*
*
* ZERO Board pin | PIN | Label/Name
* ------------------+--------+-----------------
* Analog Connector | |
* ------------------+--------+-----------------
* 1 | PA02 | A0
* 2 | PB08 | A1
* 3 | PB09 | A2
* 4 | PA04 | A3
* 5 | PA05 | A4
* 6 | PB02 | A5
* ------------------+--------+-----------------
* Digital Low | |
* ------------------+--------+-----------------
* 1 | PA10 | 0 -> RX
* 2 | PA11 | 1 <- TX
* 3 | PA08 | ~2
* 4 | PA09 | ~3
* 5 | PA14 | ~4
* 6 | PA15 | ~5
* 7 | PA20 | ~6
* 8 | PA21 | ~7
* ------------------+--------+-----------------
* Digital High | |
* ------------------+--------+-----------------
* 1 | PA06 | ~8
* 2 | PA07 | ~9
* 3 | PA18 | ~10
* 4 | PA16 | ~11
* 5 | PA19 | ~12
* 6 | PA17 | ~13
* 7 | | GND
* 8 | PA03 | AREF
* 9 | PA22 | SDA
* 10 | PA23 | SCL
* ------------------+--------+-----------------
* SPI (Legacy ICSP) | |
* ------------------+--------+-----------------
* 1 | PA12 | MISO
* 2 | | 5V0
* 3 | PB11 | SCK
* 4 | PB10 | MOSI
* 5 | | RESET
* 6 | | GND
* ------------------+--------+-----------------
* LEDs | |
* ------------------+--------+-----------------
* | PB03 | RX
* | PA27 | TX
* ------------------+--------+-----------------
* USB | |
* ------------------+--------+-----------------
* | PA28 | USB HOST ENABLE
* | PA24 | USB_NEGATIVE
* | PA25 | USB_POSITIVE
* ------------------+--------+-----------------
* 32.768KHz Crystal | |
* ------------------+--------+-----------------
* | PA00 | XIN32
* | PA01 | XOUT32
*
* + Pin number + ZERO Board pin | PIN | Label/Name | Comments (* is for default peripheral in use)
* +------------+------------------+--------+-----------------+------------------------------
* | | Digital Low | | |
* +------------+------------------+--------+-----------------+------------------------------
* | 0 | 0 -> RX | PA10 | | EIC/EXTINT[10] ADC/AIN[18] *SERCOM0/PAD[2] TCC1/WO[0] TCC0/WO[2]
* | 1 | 1 <- TX | PA11 | | EIC/EXTINT[11] ADC/AIN[19] *SERCOM0/PAD[3] SERCOM2/PAD[3] TCC1/WO[1] TCC0/WO[3]
* | 2 | ~2 | PA08 | | EIC/NMI ADC/AIN[16] SERCOM0/PAD[0] SERCOM2/PAD[0] *TCC0/WO[0] TCC1/WO[2]
* | 3 | ~3 | PA09 | | EIC/EXTINT[9] ADC/AIN[17] SERCOM0/PAD[1] SERCOM2/PAD[1] *TCC0/WO[1] TCC1/WO[3]
* | 4 | ~4 | PA14 | | EIC/EXTINT[14] SERCOM2/PAD[2] SERCOM4/PAD[2] *TC3/WO[0] TCC0/WO[4]
* | 5 | ~5 | PA15 | | EIC/EXTINT[15] SERCOM2/PAD[3] SERCOM4/PAD[3] *TC3/WO[1] TCC0/WO[5]
* | 6 | ~6 | PA20 | | EIC/EXTINT[4] SERCOM5/PAD[2] SERCOM3/PAD[2] TC7/WO[0] *TCC0/WO[6]
* | 7 | ~7 | PA21 | | EIC/EXTINT[5] SERCOM5/PAD[3] SERCOM3/PAD[3] TC7/WO[1] *TCC0/WO[7]
* +------------+------------------+--------+-----------------+------------------------------
* | | Digital High | | |
* +------------+------------------+--------+-----------------+------------------------------
* | 8 | ~8 | PA06 | | EIC/EXTINT[6] ADC/AIN[6] AC/AIN[2] SERCOM0/PAD[2] *TCC1/WO[0]
* | 9 | ~9 | PA07 | | EIC/EXTINT[7] ADC/AIN[7] AC/AIN[3] SERCOM0/PAD[3] *TCC1/WO[1]
* | 10 | ~10 | PA18 | | EIC/EXTINT[2] SERCOM1/PAD[2] SERCOM3/PAD[2] *TC3/WO[0] TCC0/WO[2]
* | 11 | ~11 | PA16 | | EIC/EXTINT[0] SERCOM1/PAD[0] SERCOM3/PAD[0] *TCC2/WO[0] TCC0/WO[6]
* | 12 | ~12 | PA19 | | EIC/EXTINT[3] SERCOM1/PAD[3] SERCOM3/PAD[3] *TC3/WO[1] TCC0/WO[3]
* | 13 | ~13 | PA17 | LED | EIC/EXTINT[1] SERCOM1/PAD[1] SERCOM3/PAD[1] *TCC2/WO[1] TCC0/WO[7]
* | 14 | GND | | |
* | 15 | AREF | PA03 | | *DAC/VREFP
* | 16 | SDA | PA22 | | EIC/EXTINT[6] *SERCOM3/PAD[0] SERCOM5/PAD[0] TC4/WO[0] TCC0/WO[4]
* | 17 | SCL | PA23 | | EIC/EXTINT[7] *SERCOM3/PAD[1] SERCOM5/PAD[1] TC4/WO[1] TCC0/WO[5]
* +------------+------------------+--------+-----------------+------------------------------
* | |SPI (Legacy ICSP) | | |
* +------------+------------------+--------+-----------------+------------------------------
* | 18 | 1 | PA12 | MISO | EIC/EXTINT[12] SERCOM2/PAD[0] *SERCOM4/PAD[0] TCC2/WO[0] TCC0/WO[6]
* | 19 | 2 | | 5V0 |
* | 20 | 3 | PB11 | SCK | EIC/EXTINT[11] *SERCOM4/PAD[3] TC5/WO[1] TCC0/WO[5]
* | 21 | 4 | PB10 | MOSI | EIC/EXTINT[10] *SERCOM4/PAD[2] TC5/WO[0] TCC0/WO[4]
* | 22 | 5 | | RESET |
* | 23 | 6 | | GND |
* +------------+------------------+--------+-----------------+------------------------------
* | | Analog Connector | | |
* +------------+------------------+--------+-----------------+------------------------------
* | 24 | A0 | PA02 | | EIC/EXTINT[2] *DAC/VOUT
* | 25 | A1 | PB08 | | EIC/EXTINT[8] *ADC/AIN[2] SERCOM4/PAD[0] TC4/WO[0]
* | 26 | A2 | PB09 | | EIC/EXTINT[9] *ADC/AIN[3] SERCOM4/PAD[1] TC4/WO[1]
* | 27 | A3 | PA04 | | EIC/EXTINT[4] *ADC/AIN[4] AC/AIN[0] SERCOM0/PAD[0] TCC0/WO[0]
* | 28 | A4 | PA05 | | EIC/EXTINT[5] *ADC/AIN[5] AC/AIN[1] SERCOM0/PAD[1] TCC0/WO[1]
* | 29 | A5 | PB02 | | EIC/EXTINT[2] *ADC/AIN[10] SERCOM5/PAD[0] TC6/WO[0]
* +------------+------------------+--------+-----------------+------------------------------
* | | LEDs | | |
* +------------+------------------+--------+-----------------+------------------------------
* | 30 | | PB03 | RX |
* | 31 | | PA27 | TX |
* +------------+------------------+--------+-----------------+------------------------------
* | | USB | | |
* +------------+------------------+--------+-----------------+------------------------------
* | 32 | | PA28 | USB HOST ENABLE |
* | 33 | | PA24 | USB_NEGATIVE | USB/DM
* | 34 | | PA25 | USB_POSITIVE | USB/DP
* +------------+------------------+--------+-----------------+------------------------------
* | |32.768KHz Crystal | | |
* +------------+------------------+--------+-----------------+------------------------------
* | | | PA00 | XIN32 | EXTINT[0] SERCOM1/PAD[0] TCC2/WO[0]
* | | | PA01 | XOUT32 | EXTINT[1] SERCOM1/PAD[1] TCC2/WO[1]
* +------------+------------------+--------+-----------------+------------------------------
*/
/*
* Pins descriptions
*/
extern const PinDescription g_APinDescription[]=
{
// 0 .. 19 - Digital pins
// ----------------------
// 0/1 - SERCOM/UART (Serial)
{ PORTA, 10, PIO_SERCOM, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // RX: SERCOM0/PAD[2]
{ PORTA, 11, PIO_SERCOM, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TX: SERCOM0/PAD[3]
// 2..12
{ PORTA, 8, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC0/WO[0]
{ PORTA, 9, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC0/WO[1]
{ PORTA, 14, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TC3/WO[0]
{ PORTA, 15, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TC3/WO[1]
{ PORTA, 20, PIO_TIMER_ALT, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC0/WO[6]
{ PORTA, 21, PIO_TIMER_ALT, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC0/WO[7]
{ PORTA, 6, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC1/WO[0]
{ PORTA, 7, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC1/WO[1]
{ PORTA, 18, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TC3/WO[0]
{ PORTA, 16, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC2/WO[0]
{ PORTA, 19, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TC3/WO[1]
// 13 (LED)
{ PORTA, 17, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC2/WO[1]
// 14 (GND)
{ NOT_A_PORT, 0, PIO_NOT_A_PIN, 0, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER },
// 15 (AREF)
{ PORTA, 3, PIO_ANALOG, PIO_DEFAULT, PIN_ATTR_ANALOG, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // DAC/VREFP
// 16..17 I2C (SDA/SCL)
{ PORTA, 22, PIO_SERCOM, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // SDA: SERCOM3/PAD[0]
{ PORTA, 23, PIO_SERCOM, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // SCL: SERCOM3/PAD[1]
// 18..23 SPI (ICSP:MISO,SCK,MOSI)
{ PORTA, 12, PIO_SERCOM, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // MISO: SERCOM4/PAD[0]
{ NOT_A_PORT, 0, PIO_NOT_A_PIN, 0, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // 5V0
{ PORTB, 11, PIO_SERCOM, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // SCK: SERCOM4/PAD[3]
{ PORTB, 10, PIO_SERCOM, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // MOSI: SERCOM4/PAD[2]
{ NOT_A_PORT, 0, PIO_NOT_A_PIN, 0, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // RESET
{ NOT_A_PORT, 0, PIO_NOT_A_PIN, 0, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // GND
// 24..29 - Analog pins
// --------------------
// 24 - A0 (DAC output)
{ PORTA, PORT_PA02B_DAC_VOUT, PIO_ANALOG, PIO_DEFAULT, PIN_ATTR_ANALOG, DAC0, A0, NOT_ON_PWM, NOT_ON_TIMER }, // DAC/VOUT
// 25..29 - A1-A5
{ PORTB, 8, PIO_ANALOG, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC2, A1, NOT_ON_PWM, NOT_ON_TIMER }, // ADC/AIN[2]
{ PORTB, 9, PIO_ANALOG, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC3, A2, NOT_ON_PWM, NOT_ON_TIMER }, // ADC/AIN[3]
{ PORTA, 4, PIO_ANALOG, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC4, A3, NOT_ON_PWM, NOT_ON_TIMER }, // ADC/AIN[4]
{ PORTA, 5, PIO_ANALOG, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC5, A4, NOT_ON_PWM, NOT_ON_TIMER }, // ADC/AIN[5]
{ PORTA, 2, PIO_ANALOG, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC10, A5, NOT_ON_PWM, NOT_ON_TIMER }, // ADC/AIN[10]
// 30..31 - RX/TX LEDS (PB03/PA27)
{ PORTB, 3, PIO_DIGITAL, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // use as pure output
{ PORTA, 27, PIO_DIGITAL, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // use as pure output
// 32..33 - USB
{ PORTA, 28, PIO_COM, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // USB/SOF
{ PORTA, 24, PIO_COM, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // USB/DM
{ PORTA, 25, PIO_COM, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // USB/DP
} ;
......@@ -54,17 +54,17 @@ extern "C"{
*----------------------------------------------------------------------------*/
// Number of pins defined in PinDescription array
#define PINS_COUNT (25u)
#define PINS_COUNT (34u)
#define NUM_DIGITAL_PINS (19u)
#define NUM_ANALOG_INPUTS (5u)
#define NUM_ANALOG_OUTPUTS (1u)
#define digitalPinToPort(P) ( g_APinDescription[P].pPort )
#define digitalPinToBitMask(P) ( g_APinDescription[P].ulPin )
#define digitalPinToPort(P) ( &(PORT->Group[g_APinDescription[P].ulPort]) )
#define digitalPinToBitMask(P) ( 1 << g_APinDescription[P].ulPin )
#define digitalPinToTimer(P) ( )
//#define analogInPinToBit(P) ( )
#define portOutputRegister(port) ( &(port->PIO_ODSR) )
#define portInputRegister(port) ( &(port->PIO_PDSR) )
#define portOutputRegister(port) ( &(port->OUT) )
#define portInputRegister(port) ( &(port->IN) )
//#define portModeRegister(P) ( )
#define digitalPinHasPWM(P) ( g_APinDescription[P].ulPWMChannel != NOT_ON_PWM || g_APinDescription[P].ulTCChannel != NOT_ON_TIMER )
......@@ -73,8 +73,8 @@ extern "C"{
// LEDs
#define PIN_LED_13 (13u)
#define PIN_LED_RXL (72u)
#define PIN_LED_TXL (73u)
#define PIN_LED_RXL (30u)
#define PIN_LED_TXL (31u)
#define PIN_LED PIN_LED_13
#define PIN_LED2 PIN_LED_RXL
#define PIN_LED3 PIN_LED_TXL
......@@ -84,7 +84,7 @@ extern "C"{
* SPI Interfaces
*/
#define SPI_INTERFACES_COUNT 1
/*
#define SPI_INTERFACE SPI0
#define SPI_INTERFACE_ID ID_SPI0
#define SPI_CHANNELS_NUM 4
......@@ -117,42 +117,32 @@ 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 WIRE_INTERFACES_COUNT 1
#define PIN_WIRE_SDA (20u)
#define PIN_WIRE_SCL (21u)
#define PIN_WIRE_SDA (16u)
#define PIN_WIRE_SCL (17u)
/*
#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
*/
/*
* UART/USART Interfaces
*/
// Serial
#define PINS_UART (81u)
// Serial1
#define PINS_USART0 (82u)
// Serial2
#define PINS_USART1 (83u)
// Serial3
#define PINS_USART3 (84u)
//#define PINS_UART (81u)
/*
* USB Interfaces
*/
#define PINS_USB (85u)
//#define PINS_USB (85u)
/*
* Analog pins
......@@ -168,31 +158,37 @@ static const uint8_t A5 = 25 ;
/*
* DAC
*/
/*
#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 1000
#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 1000
#define TC_MAX_DUTY_CYCLE 255
#define TC_MIN_DUTY_CYCLE 0
#define TC_RESOLUTION 8
*/
#ifdef __cplusplus
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment