From ce9b9285cbb4478c3103cdb7116b62deb9b5bcd6 Mon Sep 17 00:00:00 2001 From: Thibaut VIARD <thibaut.viard@atmel.com> Date: Mon, 5 May 2014 11:37:53 +0200 Subject: [PATCH] checkpoint --- cores/arduino/Arduino.h | 75 ++++---- cores/arduino/IPAddress.h | 2 +- cores/arduino/RingBuffer.cpp | 14 +- cores/arduino/delay.h | 1 + .../build_gcc/debug_arduino_zero/IPAddress.o | Bin 0 -> 16900 bytes .../build_gcc/debug_arduino_zero/Print.o | Bin 0 -> 39712 bytes .../build_gcc/debug_arduino_zero/Reset.o | Bin 0 -> 6344 bytes .../build_gcc/debug_arduino_zero/RingBuffer.o | Bin 0 -> 9396 bytes .../build_gcc/debug_arduino_zero/main.o | Bin 0 -> 4396 bytes .../build_gcc/debug_arduino_zero/test.o | Bin 0 -> 3420 bytes cores/arduino/wiring.c | 10 +- cores/arduino/wiring_analog.c.disabled | 70 ------- cores/arduino/wiring_digital.c.disabled | 172 ++++++++++++------ cores/arduino/wiring_private.h | 4 +- cores/arduino/wiring_shift.c | 63 +++---- variants/arduino_zero/variant.cpp | 43 +++-- 16 files changed, 235 insertions(+), 219 deletions(-) create mode 100644 cores/arduino/validation/build_gcc/debug_arduino_zero/IPAddress.o create mode 100644 cores/arduino/validation/build_gcc/debug_arduino_zero/Print.o create mode 100644 cores/arduino/validation/build_gcc/debug_arduino_zero/Reset.o create mode 100644 cores/arduino/validation/build_gcc/debug_arduino_zero/RingBuffer.o create mode 100644 cores/arduino/validation/build_gcc/debug_arduino_zero/main.o create mode 100644 cores/arduino/validation/build_gcc/debug_arduino_zero/test.o diff --git a/cores/arduino/Arduino.h b/cores/arduino/Arduino.h index e38ccd62..e270b158 100644 --- a/cores/arduino/Arduino.h +++ b/cores/arduino/Arduino.h @@ -101,44 +101,42 @@ typedef enum _EAnalogChannel #define ADC_CHANNEL_NUMBER_NONE 0xffffffff -// Definitions for PWM channels -typedef enum _EPWMChannel -{ - NOT_ON_PWM=-1, - // PWM_CH0=0, // todo - // PWM_CH1, - // PWM_CH2, - // PWM_CH3, - // PWM_CH4, - // PWM_CH5, - // PWM_CH6, - // PWM_CH7 -} EPWMChannel ; - // Definitions for TC channels typedef enum _ETCChannel { NOT_ON_TIMER=-1, - // TC0_CHA0=0, // todo - // TC0_CHB0, - // TC0_CHA1, - // TC0_CHB1, - // TC0_CHA2, - // TC0_CHB2, - // TC1_CHA3, - // TC1_CHB3, - // TC1_CHA4, - // TC1_CHB4, - // TC1_CHA5, - // TC1_CHB5, - // TC2_CHA6, - // TC2_CHB6, - // TC2_CHA7, - // TC2_CHB7, - // TC2_CHA8, - // TC2_CHB8 + TC3_CH0, + TC3_CH1, + TCC0_CH0, + TCC0_CH1, + TCC0_CH4, + TCC0_CH5, + TCC0_CH6, + TCC0_CH7, + TCC1_CH0, + TCC1_CH1, + TCC2_CH0, + TCC2_CH1 } ETCChannel ; +// Definitions for PWM channels +typedef enum _EPWMChannel +{ + NOT_ON_PWM=-1, + PWM3_CH0=TC3_CH0, + PWM3_CH1=TC3_CH1, + PWM0_CH0=TCC0_CH0, + PWM0_CH1=TCC0_CH1, + PWM0_CH4=TCC0_CH4, + PWM0_CH5=TCC0_CH5, + PWM0_CH6=TCC0_CH6, + PWM0_CH7=TCC0_CH7, + PWM1_CH0=TCC1_CH0, + PWM1_CH1=TCC1_CH1, + PWM2_CH0=TCC2_CH0, + PWM2_CH1=TCC2_CH1 +} EPWMChannel ; + typedef enum _EPortType { NOT_A_PORT=-1, @@ -153,8 +151,7 @@ typedef enum _EPortType typedef enum _EPioType { - PIO_NOT_A_PIN, /* Not under control of a peripheral. */ - PIO_DIGITAL, /* The pin is controlled by PORT. */ + PIO_NOT_A_PIN=-1, /* Not under control of a peripheral. */ PIO_EXTINT, /* The pin is controlled by the associated signal of peripheral A. */ PIO_ANALOG, /* The pin is controlled by the associated signal of peripheral B. */ PIO_SERCOM, /* The pin is controlled by the associated signal of peripheral C. */ @@ -163,10 +160,13 @@ typedef enum _EPioType PIO_TIMER_ALT, /* The pin is controlled by the associated signal of peripheral F. */ PIO_COM, /* The pin is controlled by the associated signal of peripheral G. */ PIO_AC_CLK, /* The pin is controlled by the associated signal of peripheral H. */ + PIO_PWM=PIO_TIMER, + PIO_PWM_ALT=PIO_TIMER_ALT, - PIO_INPUT, /* The pin is controlled by PORT and is an input. */ - PIO_OUTPUT_0, /* The pin is controlled by PORT and is an output with a default level of 0. */ - PIO_OUTPUT_1 /* The pin is controlled by PORT and is an output with a default level of 1. */ + PIO_DIGITAL, /* The pin is controlled by PORT. */ + PIO_INPUT, /* The pin is controlled by PORT and is an input. */ + PIO_INPUT_PULLUP, /* The pin is controlled by PORT and is an input with internal pull-up resistor enabled. */ + PIO_OUTPUT, /* The pin is controlled by PORT and is an output. */ } EPioType ; /** @@ -204,6 +204,7 @@ extern const PinDescription g_APinDescription[] ; #include "WMath.h" #include "HardwareSerial.h" #include "wiring_pulse.h" +#include "delay.h" #endif // __cplusplus diff --git a/cores/arduino/IPAddress.h b/cores/arduino/IPAddress.h index 622efb76..c86089c3 100644 --- a/cores/arduino/IPAddress.h +++ b/cores/arduino/IPAddress.h @@ -42,7 +42,7 @@ public: // Overloaded cast operator to allow IPAddress objects to be used where a pointer // to a four-byte uint8_t array is expected - operator uint32_t() const { return *((uint32_t*)_address); }; + operator uint32_t() const { return *((uint32_t*)_address+0); }; bool operator==(const IPAddress& addr) const { return (*((uint32_t*)_address)) == (*((uint32_t*)addr._address)); }; bool operator==(const uint8_t* addr) const; diff --git a/cores/arduino/RingBuffer.cpp b/cores/arduino/RingBuffer.cpp index f35e5df3..c72060d6 100644 --- a/cores/arduino/RingBuffer.cpp +++ b/cores/arduino/RingBuffer.cpp @@ -8,7 +8,7 @@ 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. + 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 @@ -50,17 +50,17 @@ int RingBuffer::read_char() { if(_iTail == _iHead) return -1; - + int value = _aucBuffer[_iTail]; _iTail = nextIndex(_iTail); - + return value; } int RingBuffer::available() { int delta = _iHead - _iTail; - + if(delta < 0) return SERIAL_BUFFER_SIZE + delta; else @@ -71,7 +71,7 @@ int RingBuffer::peek() { if(_iTail == _iHead) return -1; - + return _aucBuffer[_iTail]; } @@ -80,7 +80,7 @@ int RingBuffer::nextIndex(int index) return (uint32_t)(index + 1) % SERIAL_BUFFER_SIZE; } -int RingBuffer::isFull() +bool RingBuffer::isFull() { return (nextIndex(_iTail) == _iHead); -} \ No newline at end of file +} diff --git a/cores/arduino/delay.h b/cores/arduino/delay.h index e26ba81b..9382d2c4 100644 --- a/cores/arduino/delay.h +++ b/cores/arduino/delay.h @@ -24,6 +24,7 @@ extern "C" { #endif #include <stdint.h> +#include "variant.h" /** * \brief Returns the number of milliseconds since the Arduino board began running the current program. diff --git a/cores/arduino/validation/build_gcc/debug_arduino_zero/IPAddress.o b/cores/arduino/validation/build_gcc/debug_arduino_zero/IPAddress.o new file mode 100644 index 0000000000000000000000000000000000000000..9e63f8d59ab2c5d332ec21f1fed0183b45766ab3 GIT binary patch literal 16900 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 F{Xd`DtK|Ry literal 0 HcmV?d00001 diff --git a/cores/arduino/validation/build_gcc/debug_arduino_zero/Print.o b/cores/arduino/validation/build_gcc/debug_arduino_zero/Print.o new file mode 100644 index 0000000000000000000000000000000000000000..7bb921ed00cfc1357c4c3913e0924f911e72f1b9 GIT binary patch literal 39712 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 literal 0 HcmV?d00001 diff --git a/cores/arduino/validation/build_gcc/debug_arduino_zero/Reset.o b/cores/arduino/validation/build_gcc/debug_arduino_zero/Reset.o new file mode 100644 index 0000000000000000000000000000000000000000..c950d3a3ec4dbb3a4a1e0ec848fb0edd7c620ab9 GIT binary patch literal 6344 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 literal 0 HcmV?d00001 diff --git a/cores/arduino/validation/build_gcc/debug_arduino_zero/RingBuffer.o b/cores/arduino/validation/build_gcc/debug_arduino_zero/RingBuffer.o new file mode 100644 index 0000000000000000000000000000000000000000..4bd676669d25584711b5967f964b8797193a9392 GIT binary patch literal 9396 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 Q(qE%Q-1AC*pAzx^12oB4h5!Hn literal 0 HcmV?d00001 diff --git a/cores/arduino/validation/build_gcc/debug_arduino_zero/main.o b/cores/arduino/validation/build_gcc/debug_arduino_zero/main.o new file mode 100644 index 0000000000000000000000000000000000000000..fde33e4e5f6cc1cfa607411de9a9ea91753925d6 GIT binary patch literal 4396 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 literal 0 HcmV?d00001 diff --git a/cores/arduino/validation/build_gcc/debug_arduino_zero/test.o b/cores/arduino/validation/build_gcc/debug_arduino_zero/test.o new file mode 100644 index 0000000000000000000000000000000000000000..6b21d4500e4bf0c52dfabd3538cfb5e2fa199473 GIT binary patch literal 3420 zcmb_eO^6&-5PtnLyOZqhnB639{xq$uxXETZlg+AY%xX59AHhUJNDk^q=$Y=BZJ3!J zyL)0H0fQctAOR05NWe?L927+&3KGmI2E>C0Z+h@1-U8k{#P92VZ|BV_>cN8Us`{#4 zRlRyY-LD-!cEm6Yp~w)^qOS>YyO3E5a~Yc!_lYgy;uqr68%HkQAVlBQ`gLG7jlwp* z<@-l?ZOwrG%QS|r0XB`|Re+{h_>P)6{4SYY_>!PKe3q=3)nFEf--2e@g|L&-R?1y| z$)kLpdD=HK(7s8qXkX84=7#|7E?&lVyhM@G75f&9#zG$u#<=lNY5j;*+FCk2Ic}_* zM2smhGV&xKB$gsZ+pc(OvsKzR^2ErvF)?&t)B6WEBhC~alkw#2DKQsG@m%ZcI(`gB zQ#{DG@keP)U|momTWko|-JJ$W>ejoQ2dI!`vbG!6m}{EwRmg&2ZOD;U)M+}|iyiBA zlCaqce22>6ebvR-?}eSnnXT-ZQ_2fL995US*nh=~gDN;Zs)^V3tMw=jk`?Hz*9v_v z4WmxA)(czynP$B%k|6DMMV4?NS-*|}xE4jNepPj(71?X0Vn6EDT7fwF>}h9dX2zLw z=iR+oxs}=3d1pEfT7j1YJDe96PafYLv}=Ly2Yz|(%zU{Pd!72S69;F*1T|vN{NCBw zmz;9D-t8@5Drs=8+^%$6y#!dg+-ujsnYdi{S}lN0r~F*SDJQAFP@kE3eBLQH8of@P zGcG4V#^KdK4?ImTcfHtaJ8kb=IqbB;P5_p4l5!Gunyp~rkxE4*%gF8wG(xURfAVtT zjaKBP=x5ZGqquVVMo7X}gY<ki5aQ_4(mrRJojQfCCQc)Y9dyMxEW6^Ih@*OtBvG8~ z_#YZ67WZHadVyC9h4C<V<5J$!<CPgPG&+2IjWJ<wFg6;K)+S@KvBkK52u`DT?t%<q zUMP)@iA~TI@f<9cif@{ijm5EH@sBp)Cg<C!R|8MuoG&X03yU6cS%h0l65*l?E-<g= z(&XlQ)WzPBme4;pU|Hp#b^q_&`vyO#^_pkGP9s9%O!jIuY(0?;lL$6sGe9{^oI`&_ zxM5TX%tyHOsND{@<}Auf(>Sd4a0}>B8rW}G|Nl(9hIy%QJxKYzp38ja_m>b4K&GEX z5VYElHWC+~Yxi${kHTklUj6RNzZXL6l76a={m^w%d5-{u+<jdd>Bo2~j^YP_t&u)t z+pr1g$3CzJ^rPOuqt|yx;$Ru6cvWchQ}yxA)=AaZ1E|+WKjz^>Qt@7ftk*ZC)wfpq zam-~rDmFxM3eQ&*Bq`e^=z6?eh<6(p=L>OVz8^qVV<3uAC<iD=QnrtwE19NaP^P61 znX+Ajtmpk5$#}k*_Z~c|&)+~+V<3tYihd6$+t;w^@o-%T2N>gx<5BT`fUL$q6mLU0 zK|zwTeGgraw+r#s0b{)NcvQTfA#+Rx59uc;zo{V5Df0PMa^-gm2Y_p-Ncr6X08>}t zk0H^lQovQ{0t6+~+=AcJnjh;U@sB{C$9}CZ?4z0od!)`J$6beELQ9}Ta<!M~cLJO4 zGl1J5^Ph(C*eB-H<8d>wcZyUzr7N!EwzzXw;pEo9jH&CDP#?$$%@#ZpeNtV?5liGh ztIBTSgrhwgsar3HES$!{cty>Z`SngyU%M*a;Aks5Vf_%6;4f;Qtn4J{I#;PrR<;v$ zePfo7{m)51DXeF;ey?)OxFsgDwc{FaW)tWiJ^DJ(mA}fVR809R|8V%{$Y`f*=}t_Q z-7`@P?-6rDeh$euN}c<~oXEc&CJxoK#CJ>1Zvg%I&rN<v@@FJJDf#n~Hzn^#&O4Rk zE=c}{<d-CWNAmY1ze0}sKa%<<<Z2$cl-O6=*+t?c>fBZ2>>2TFzTnwBfG<iMr3e!Z N&Bg<-NPSM){{%^Dn{faD literal 0 HcmV?d00001 diff --git a/cores/arduino/wiring.c b/cores/arduino/wiring.c index 1bb8e2ab..182e5e1c 100644 --- a/cores/arduino/wiring.c +++ b/cores/arduino/wiring.c @@ -28,7 +28,7 @@ extern "C" { */ extern uint32_t SystemCoreClock=1000000ul ; -void __libc_init_array(void); +//void __libc_init_array(void); /* * Arduino Zero board initialization @@ -40,6 +40,8 @@ void __libc_init_array(void); */ void init( void ) { + uint32_t ul ; + // Set Systick to 1ms interval, common to all Cortex-M variants if ( SysTick_Config( SystemCoreClock / 1000 ) ) { @@ -53,6 +55,12 @@ void init( void ) // Setup PORT for Digital I/O PM->APBBMASK.bit.PORT=1 ; + // Setup all pins (digital and analog) in INPUT mode (default is nothing) + for ( ul = 0 ; ul < NUM_DIGITAL_PINS ; ul++ ) + { + pinMode( ul, INPUT ) ; + } + // Initialize Serial port U(S)ART pins // Todo diff --git a/cores/arduino/wiring_analog.c.disabled b/cores/arduino/wiring_analog.c.disabled index ffdc4e2f..bdc7de87 100644 --- a/cores/arduino/wiring_analog.c.disabled +++ b/cores/arduino/wiring_analog.c.disabled @@ -59,76 +59,6 @@ uint32_t analogRead(uint32_t ulPin) ulChannel = g_APinDescription[ulPin].ulADCChannelNumber ; -#if defined __SAM3U4E__ - switch ( g_APinDescription[ulPin].ulAnalogChannel ) - { - // Handling ADC 10 bits channels - case ADC0 : - case ADC1 : - case ADC2 : - case ADC3 : - case ADC4 : - case ADC5 : - case ADC6 : - case ADC7 : - // Enable the corresponding channel - adc_enable_channel( ADC, ulChannel ); - - // Start the ADC - adc_start( ADC ); - - // Wait for end of conversion - while ((adc_get_status(ADC) & ADC_SR_DRDY) != ADC_SR_DRDY) - ; - - // Read the value - ulValue = adc_get_latest_value(ADC); - ulValue = mapResolution(ulValue, 10, _readResolution); - - // Disable the corresponding channel - adc_disable_channel( ADC, ulChannel ); - - // Stop the ADC - // adc_stop( ADC ) ; // never do adc_stop() else we have to reconfigure the ADC each time - break; - - // Handling ADC 12 bits channels - case ADC8 : - case ADC9 : - case ADC10 : - case ADC11 : - case ADC12 : - case ADC13 : - case ADC14 : - case ADC15 : - // Enable the corresponding channel - adc12b_enable_channel( ADC12B, ulChannel ); - - // Start the ADC12B - adc12b_start( ADC12B ); - - // Wait for end of conversion - while ((adc12b_get_status(ADC12B) & ADC12B_SR_DRDY) != ADC12B_SR_DRDY) - ; - - // Read the value - ulValue = adc12b_get_latest_value(ADC12B) >> 2; - ulValue = mapResolution(ulValue, 12, _readResolution); - - // Stop the ADC12B - // adc12_stop( ADC12B ) ; // never do adc12_stop() else we have to reconfigure the ADC12B each time - - // Disable the corresponding channel - adc12b_disable_channel( ADC12B, ulChannel ); - break; - - // Compiler could yell because we don't handle DAC pins - default : - ulValue=0; - break; - } -#endif - #if defined __SAM3X8E__ || defined __SAM3X8H__ static uint32_t latestSelectedChannel = -1; switch ( g_APinDescription[ulPin].ulAnalogChannel ) diff --git a/cores/arduino/wiring_digital.c.disabled b/cores/arduino/wiring_digital.c.disabled index 7c958de8..091350b3 100644 --- a/cores/arduino/wiring_digital.c.disabled +++ b/cores/arduino/wiring_digital.c.disabled @@ -1,5 +1,5 @@ /* - Copyright (c) 2011 Arduino. All right reserved. + 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 @@ -22,57 +22,120 @@ extern "C" { #endif -extern void pinMode( uint32_t ulPin, uint32_t ulMode ) +int pinPeripheral( uint32_t ulPin, EPioType ulPeripheral ) { if ( g_APinDescription[ulPin].ulPinType == PIO_NOT_A_PIN ) - { - return ; - } + { + return ; + } + + switch ( ulPeripheral ) + { + case PIO_DIGITAL: + case PIO_INPUT: + case PIO_OUTPUT_0: + case PIO_OUTPUT_1: + // Disable peripheral muxing + PORT->Group[g_APinDescription[ulPin].ulPort]->PINCFG[g_APinDescription[ulPin].ulPin].bit.PMUXEN = 1 ; + + // Configure pin mode, if requested + switch ( ulPeripheral ) + { + case PIO_INPUT: + pinMode( ulPin, INPUT ) ; + break ; + + case PIO_INPUT_PULLUP: + pinMode( ulPin, INPUT_PULLUP ) ; + break ; + + case PIO_OUTPUT: + pinMode( ulPin, OUTPUT ) ; + break ; + } + break ; + + case PIO_ANALOG: + PORT->Group[g_APinDescription[ulPin].ulPort]->PMUX[g_APinDescription[ulPin].ulPin]. + PORT->Group[g_APinDescription[ulPin].ulPort]->PINCFG[g_APinDescription[ulPin].ulPin].bit.PMUXEN = 1 ; + + if ( g_APinDescription[ulPin].ulPin < 16 ) + { + PORT->Group[g_APinDescription[ulPin].ulPort]->WRCONFIG.reg=PORT_WRCONFIG_PMUXEN|PORT_WRCONFIG_PINMASK( g_APinDescription[ulPin].ulPin ) ; + } + else + { + PORT->Group[g_APinDescription[ulPin].ulPort]->WRCONFIG.reg=PORT_WRCONFIG_HWSEL|PORT_WRCONFIG_PMUXEN| |PORT_WRCONFIG_PINMASK( g_APinDescription[ulPin].ulPin >> 16 ) ; + } + PORT_WRCONFIG_PMUX() + PORT_WRCONFIG_WRPINCFG + PORT_WRCONFIG_WRPMUX + PORT_WRCONFIG_PINMASK() + break ; + + case PIO_EXTINT: + break ; + + case PIO_SERCOM: + break ; + + case PIO_SERCOM_ALT: + break ; + + case PIO_TIMER: + break ; + + case PIO_TIMER_ALT: + break ; + + case PIO_COM: + break ; + + case PIO_AC_CLK: + break ; + + case PIO_NOT_A_PIN: + return -1 ; + break ; + } +} + +void pinMode( uint32_t ulPin, uint32_t ulMode ) +{ + if ( g_APinDescription[ulPin].ulPinType == PIO_NOT_A_PIN ) + { + return ; + } switch ( ulMode ) - { - case INPUT: - /* Enable peripheral for clocking input */ - pmc_enable_periph_clk( g_APinDescription[ulPin].ulPeripheralId ) ; - PIO_Configure( - g_APinDescription[ulPin].pPort, - PIO_INPUT, - g_APinDescription[ulPin].ulPin, - 0 ) ; - break ; - - case INPUT_PULLUP: - /* Enable peripheral for clocking input */ - pmc_enable_periph_clk( g_APinDescription[ulPin].ulPeripheralId ) ; - PIO_Configure( - g_APinDescription[ulPin].pPort, - PIO_INPUT, - g_APinDescription[ulPin].ulPin, - PIO_PULLUP ) ; - break ; - - case OUTPUT: - PIO_Configure( - g_APinDescription[ulPin].pPort, - PIO_OUTPUT_1, - g_APinDescription[ulPin].ulPin, - g_APinDescription[ulPin].ulPinConfiguration ) ; - - /* if all pins are output, disable PIO Controller clocking, reduce power consumption */ - if ( g_APinDescription[ulPin].pPort->PIO_OSR == 0xffffffff ) - { - pmc_disable_periph_clk( g_APinDescription[ulPin].ulPeripheralId ) ; - } - break ; - - default: - break ; - } + { + case INPUT: + // Set pin to input mode + PORT->Group[g_APinDescription[ulPin].ulPort]->PINCFG[g_APinDescription[ulPin].ulPin].reg=(uint8_t)(PORT_PINCFG_INEN) ; + PORT->Group[g_APinDescription[ulPin].ulPort]->DIRCLR.reg = (uint32_t)(1<<g_APinDescription[ulPin].ulPin) ; + break ; + + case INPUT_PULLUP: + // Set pin to input mode with pull-up resistor enabled + PORT->Group[g_APinDescription[ulPin].ulPort]->PINCFG[g_APinDescription[ulPin].ulPin].reg=(uint8_t)(PORT_PINCFG_INEN|PORT_PINCFG_PULLEN) ; + PORT->Group[g_APinDescription[ulPin].ulPort]->DIRCLR.reg = (uint32_t)(1<<g_APinDescription[ulPin].ulPin) ; + break ; + + case OUTPUT: + // Set pin to output mode + PORT->Group[g_APinDescription[ulPin].ulPort]->PINCFG[g_APinDescription[ulPin].ulPin].reg&=~(uint8_t)(PORT_PINCFG_INEN) ; + PORT->Group[g_APinDescription[ulPin].ulPort]->DIRSET.reg = (uint32_t)(1<<g_APinDescription[ulPin].ulPin) ; + break ; + + default: + // do nothing + break ; + } } -extern void digitalWrite( uint32_t ulPin, uint32_t ulVal ) +void digitalWrite( uint32_t ulPin, uint32_t ulVal ) { - /* Handle */ + /* Handle the case the pin isn't usable as PIO */ if ( g_APinDescription[ulPin].ulPinType == PIO_NOT_A_PIN ) { return ; @@ -88,17 +151,18 @@ extern void digitalWrite( uint32_t ulPin, uint32_t ulVal ) } } -extern int digitalRead( uint32_t ulPin ) +int digitalRead( uint32_t ulPin ) { + /* Handle the case the pin isn't usable as PIO */ if ( g_APinDescription[ulPin].ulPinType == PIO_NOT_A_PIN ) - { - return LOW ; - } - - if ( PIO_Get( g_APinDescription[ulPin].pPort, PIO_INPUT, g_APinDescription[ulPin].ulPin ) == 1 ) - { - return HIGH ; - } + { + return LOW ; + } + + if ( (PORT->Group[g_APinDescription[ulPin].ulPort]->IN.reg & g_APinDescription[ulPin].ulPin) != 0 ) + { + return HIGH ; + } return LOW ; } diff --git a/cores/arduino/wiring_private.h b/cores/arduino/wiring_private.h index 573da03d..6200593c 100644 --- a/cores/arduino/wiring_private.h +++ b/cores/arduino/wiring_private.h @@ -8,7 +8,7 @@ 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. + 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 @@ -28,7 +28,7 @@ extern "C"{ #endif // Includes Atmel CMSIS -#include <chip.h> +#include "sam.h" #include "wiring_constants.h" diff --git a/cores/arduino/wiring_shift.c b/cores/arduino/wiring_shift.c index 302f0b5f..1a8e1a48 100644 --- a/cores/arduino/wiring_shift.c +++ b/cores/arduino/wiring_shift.c @@ -8,7 +8,7 @@ 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. + 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 @@ -16,7 +16,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "Arduino.h" +//#include "Arduino.h" +#include "wiring_private.h" #ifdef __cplusplus extern "C"{ @@ -24,46 +25,46 @@ extern "C"{ uint32_t shiftIn( uint32_t ulDataPin, uint32_t ulClockPin, uint32_t ulBitOrder ) { - uint8_t value = 0 ; - uint8_t i ; + uint8_t value = 0 ; + uint8_t i ; - for ( i=0 ; i < 8 ; ++i ) - { - digitalWrite( ulClockPin, HIGH ) ; + for ( i=0 ; i < 8 ; ++i ) + { + digitalWrite( ulClockPin, HIGH ) ; - if ( ulBitOrder == LSBFIRST ) - { - value |= digitalRead( ulDataPin ) << i ; - } - else - { - value |= digitalRead( ulDataPin ) << (7 - i) ; - } + if ( ulBitOrder == LSBFIRST ) + { + value |= digitalRead( ulDataPin ) << i ; + } + else + { + value |= digitalRead( ulDataPin ) << (7 - i) ; + } - digitalWrite( ulClockPin, LOW ) ; - } + digitalWrite( ulClockPin, LOW ) ; + } - return value ; + return value ; } void shiftOut( uint32_t ulDataPin, uint32_t ulClockPin, uint32_t ulBitOrder, uint32_t ulVal ) { - uint8_t i ; + uint8_t i ; - for ( i=0 ; i < 8 ; i++ ) + for ( i=0 ; i < 8 ; i++ ) + { + if ( ulBitOrder == LSBFIRST ) + { + digitalWrite( ulDataPin, !!(ulVal & (1 << i)) ) ; + } + else { - if ( ulBitOrder == LSBFIRST ) - { - digitalWrite( ulDataPin, !!(ulVal & (1 << i)) ) ; - } - else - { - digitalWrite( ulDataPin, !!(ulVal & (1 << (7 - i))) ) ; - } + digitalWrite( ulDataPin, !!(ulVal & (1 << (7 - i))) ) ; + } - digitalWrite( ulClockPin, HIGH ) ; - digitalWrite( ulClockPin, LOW ) ; - } + digitalWrite( ulClockPin, HIGH ) ; + digitalWrite( ulClockPin, LOW ) ; + } } #ifdef __cplusplus diff --git a/variants/arduino_zero/variant.cpp b/variants/arduino_zero/variant.cpp index 61b556a3..711ba180 100644 --- a/variants/arduino_zero/variant.cpp +++ b/variants/arduino_zero/variant.cpp @@ -26,8 +26,8 @@ * | 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] + * | 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] * +------------+------------------+--------+-----------------+------------------------------ @@ -90,22 +90,33 @@ extern const PinDescription g_APinDescription[]= // 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] + =TC3_CH0, + =TC3_CH1, + =TCC0_CH1, + =TCC0_CH4, + =TCC0_CH5, + =TCC0_CH6, + =TCC0_CH7, + =TCC1_CH0, + =TCC1_CH1, + =TCC2_CH0, + PWM2_CH1=TCC2_CH1 // 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] + { PORTA, 8, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM0_CH0, TCC0_CH0 }, // TCC0/WO[0] + { PORTA, 9, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM0_CH1, TCC0_CH1 }, // TCC0/WO[1] + { PORTA, 14, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM0_CH4, TCC0_CH4 }, // TCC0/WO[4] + { PORTA, 15, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM0_CH5, TCC0_CH5 }, // TCC0/WO[5] + { PORTA, 20, PIO_TIMER_ALT, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM0_CH6, TCC0_CH6 }, // TCC0/WO[6] + { PORTA, 21, PIO_TIMER_ALT, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM0_CH7, TCC0_CH7 }, // TCC0/WO[7] + { PORTA, 6, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM1_CH0, TCC1_CH0 }, // TCC1/WO[0] + { PORTA, 7, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM1_CH1, TCC1_CH1 }, // TCC1/WO[1] + { PORTA, 18, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM3_CH0, TC3_CH0 }, // TC3/WO[0] + { PORTA, 16, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM2_CH0, TCC2_CH0 }, // TCC2/WO[0] + { PORTA, 19, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM3_CH1, TC3_CH1 }, // 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] + { PORTA, 17, PIO_PWM, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM2_CH1, 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 }, @@ -138,8 +149,8 @@ extern const PinDescription g_APinDescription[]= { 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 + { PORTB, 3, PIO_OUTPUT, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // use as pure output + { PORTA, 27, PIO_OUTPUT, 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 -- GitLab