From df1262a92a48e804d0ec416478125a3bf1ad35aa Mon Sep 17 00:00:00 2001 From: Thibaut VIARD <thibaut.viard@atmel.com> Date: Thu, 11 Sep 2014 14:56:36 +0200 Subject: [PATCH] CORE files update following headers update Signed-off-by: Thibaut VIARD <thibaut.viard@atmel.com> --- cores/arduino/WVariant.h | 4 ---- cores/arduino/startup.c | 2 +- cores/arduino/wiring_analog.c | 40 +++++++++++++++++++++++++++---- variants/arduino_zero/variant.cpp | 21 +++++++++------- 4 files changed, 48 insertions(+), 19 deletions(-) diff --git a/cores/arduino/WVariant.h b/cores/arduino/WVariant.h index 1b3de932..a1156fc3 100644 --- a/cores/arduino/WVariant.h +++ b/cores/arduino/WVariant.h @@ -64,8 +64,6 @@ typedef enum _ETCChannel TCC2_CH1 = (2<<8)|(1), TC3_CH0 = (3<<8)|(0), TC3_CH1 = (3<<8)|(1), - TC7_CH0 = (7<<8)|(0), - TC7_CH1 = (7<<8)|(1) } ETCChannel ; extern const void* g_apTCInstances[TCC_INST_NUM+TC_INST_NUM] ; @@ -92,8 +90,6 @@ typedef enum _EPWMChannel PWM2_CH1=TCC2_CH1, PWM3_CH0=TC3_CH0, PWM3_CH1=TC3_CH1, - PWM7_CH0=TC7_CH0, - PWM7_CH1=TC7_CH1 } EPWMChannel ; typedef enum _EPortType diff --git a/cores/arduino/startup.c b/cores/arduino/startup.c index c54a2cd2..82e687fd 100644 --- a/cores/arduino/startup.c +++ b/cores/arduino/startup.c @@ -315,7 +315,7 @@ void SystemInit( void ) /* ---------------------------------------------------------------------------------------------- * 6) Modify PRESCaler value of OSC8M to have 8MHz */ - SYSCTRL->OSC8M.bit.PRESC = SYSCTRL_OSC8M_PRESC_0_Val ; + SYSCTRL->OSC8M.bit.PRESC = SYSCTRL_OSC8M_PRESC_1_Val ; SYSCTRL->OSC8M.bit.ONDEMAND = 0 ; /* ---------------------------------------------------------------------------------------------- diff --git a/cores/arduino/wiring_analog.c b/cores/arduino/wiring_analog.c index ba6a74d3..2ef6630e 100644 --- a/cores/arduino/wiring_analog.c +++ b/cores/arduino/wiring_analog.c @@ -23,12 +23,41 @@ extern "C" { #endif -void analogReference( eAnalogReference ulMode ) +static int _readResolution = 10; +static int _writeResolution = 8; + +void analogReadResolution( int res ) +{ + _readResolution = res ; +} + +void analogWriteResolution( int res ) { + _writeResolution = res ; +} - // ATTENTION : On this board the default is note 5volts or 3.3volts BUT 1volt +static inline uint32_t mapResolution( uint32_t value, uint32_t from, uint32_t to ) +{ + if ( from == to ) + { + return value ; + } - switch(ulMode) + if ( from > to ) + { + return value >> (from-to) ; + } + else + { + return value << (to-from) ; + } +} + +void analogReference( eAnalogReference ulMode ) +{ + // ATTENTION : On this board the default is not 5volts or 3.3volts BUT 1volt + + switch ( ulMode ) { case AR_DEFAULT: case AR_INTERNAL: @@ -41,6 +70,7 @@ void analogReference( eAnalogReference ulMode ) break; } } + uint32_t analogRead( uint32_t ulPin ) { uint32_t valueRead = 0; @@ -105,7 +135,7 @@ void analogWrite( uint32_t ulPin, uint32_t ulValue ) } Channelx = GetTCChannelNumber( g_APinDescription[ulPin].ulPWMChannel ) ; - if ( GetTCChannelNumber( g_APinDescription[ulPin].ulPWMChannel ) >= TCC_INST_NUM ) + if ( GetTCNumber( g_APinDescription[ulPin].ulPWMChannel ) >= TCC_INST_NUM ) { isTC = 1 ; TCx = (Tc*) GetTC( g_APinDescription[ulPin].ulPWMChannel ) ; @@ -199,7 +229,7 @@ void analogWrite( uint32_t ulPin, uint32_t ulValue ) // -- Defaults to digital write pinMode( ulPin, OUTPUT ) ; - //ulValue = mapResolution(ulValue, _writeResolution, 8); + ulValue = mapResolution(ulValue, _writeResolution, 8); if ( ulValue < 128 ) { diff --git a/variants/arduino_zero/variant.cpp b/variants/arduino_zero/variant.cpp index 5a0a9c6c..e17c8b4f 100644 --- a/variants/arduino_zero/variant.cpp +++ b/variants/arduino_zero/variant.cpp @@ -26,10 +26,10 @@ * | 1 | 1 <- TX | PA11 | | EIC/EXTINT[11] ADC/AIN[19] PTC/X[3] *SERCOM0/PAD[3] SERCOM2/PAD[3] TCC1/WO[1] TCC0/WO[3] * | 2 | ~2 | PA08 | | EIC/NMI ADC/AIN[16] PTC/X[0] SERCOM0/PAD[0] SERCOM2/PAD[0] *TCC0/WO[0] TCC1/WO[2] * | 3 | ~3 | PA09 | | EIC/EXTINT[9] ADC/AIN[17] PTC/X[1] 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] PTC/X[8] SERCOM5/PAD[2] SERCOM3/PAD[2] *TC7/WO[0] TCC0/WO[6] - * | 7 | ~7 | PA21 | | EIC/EXTINT[5] PTC/X[9] SERCOM5/PAD[3] SERCOM3/PAD[3] *TC7/WO[1] TCC0/WO[7] + * | 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] PTC/X[8] SERCOM5/PAD[2] SERCOM3/PAD[2] *TCC0/WO[6] + * | 7 | ~7 | PA21 | | EIC/EXTINT[5] PTC/X[9] SERCOM5/PAD[3] SERCOM3/PAD[3] *TCC0/WO[7] * +------------+------------------+--------+-----------------+------------------------------ * | | Digital High | | | * +------------+------------------+--------+-----------------+------------------------------ @@ -66,7 +66,7 @@ * | 26 | A2 | PB09 | | EIC/EXTINT[9] *ADC/AIN[3] PTC/Y[15] SERCOM4/PAD[1] TC4/WO[1] * | 27 | A3 | PA04 | | EIC/EXTINT[4] *ADC/AIN[4] AC/AIN[0] PTC/Y[2] SERCOM0/PAD[0] TCC0/WO[0] * | 28 | A4 | PA05 | | EIC/EXTINT[5] *ADC/AIN[5] AC/AIN[1] PTC/Y[5] SERCOM0/PAD[1] TCC0/WO[1] - * | 29 | A5 | PB02 | | EIC/EXTINT[2] *ADC/AIN[10] PTC/Y[8] SERCOM5/PAD[0] TC6/WO[0] + * | 29 | A5 | PB02 | | EIC/EXTINT[2] *ADC/AIN[10] PTC/Y[8] SERCOM5/PAD[0] * +------------+------------------+--------+-----------------+------------------------------ * | | LEDs | | | * +------------+------------------+--------+-----------------+------------------------------ @@ -118,12 +118,15 @@ const PinDescription g_APinDescription[]= { PORTA, 11, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_11 }, // TX: SERCOM0/PAD[3] // 2..12 + // Digital Low { PORTA, 8, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_NMI }, // TCC0/WO[0] { PORTA, 9, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH1, TCC0_CH1, EXTERNAL_INT_9 }, // TCC0/WO[1] - { PORTA, 14, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH4, TCC0_CH4, EXTERNAL_INT_14 }, // TCC0/WO[4] - { PORTA, 15, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH5, TCC0_CH5, EXTERNAL_INT_15 }, // TCC0/WO[5] - { PORTA, 20, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM7_CH0, TC7_CH0, EXTERNAL_INT_4 }, // TC7/WO[0] - { PORTA, 21, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM7_CH1, TC7_CH1, EXTERNAL_INT_5 }, // TC7/WO[1] + { PORTA, 14, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM3_CH0, TC3_CH0, EXTERNAL_INT_14 }, // TC3/WO[0] + { PORTA, 15, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM3_CH1, TC3_CH1, EXTERNAL_INT_15 }, // TC3/WO[1] + { PORTA, 20, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH6, TCC0_CH6, EXTERNAL_INT_4 }, // TC7/WO[0] + { PORTA, 21, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH7, TCC0_CH7, EXTERNAL_INT_5 }, // TC7/WO[1] + + // Digital High { PORTA, 6, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM1_CH0, TCC1_CH0, EXTERNAL_INT_4 }, // TCC1/WO[0] { PORTA, 7, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_5 }, // TCC1/WO[1] { PORTA, 18, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH2, TCC0_CH2, EXTERNAL_INT_2 }, // TCC0/WO[2] -- GitLab