From 221c10842e201f272ebca76f324d6abd7592efaa Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Wed, 13 Jun 2012 19:28:50 +0200 Subject: [PATCH] [sam] added support for DACC in analogWrite (cherry-pick from Thibault Richard commit a1d6cb43a5097414e8933e8d75d8690ee3311f94) --- .../cores/arduino/libsam_sam3x8e_gcc_dbg.a | Bin 244890 -> 0 bytes .../arduino/libsam_sam3x8e_gcc_dbg.a.txt | 418 --------------- .../arduino/sam/cores/arduino/wiring_analog.c | 44 ++ hardware/arduino/sam/system/libsam/chip.h | 1 + .../arduino/sam/system/libsam/include/dacc.h | 102 ++++ .../arduino/sam/system/libsam/source/dacc.c | 481 ++++++++++++++++++ .../arduino_due_x/libsam_sam3x8e_gcc_rel.a | Bin 75306 -> 80258 bytes .../libsam_sam3x8e_gcc_rel.a.txt | 82 +-- .../sam/variants/arduino_due_x/variant.h | 14 +- 9 files changed, 691 insertions(+), 451 deletions(-) delete mode 100644 hardware/arduino/sam/cores/arduino/libsam_sam3x8e_gcc_dbg.a delete mode 100644 hardware/arduino/sam/cores/arduino/libsam_sam3x8e_gcc_dbg.a.txt create mode 100644 hardware/arduino/sam/system/libsam/include/dacc.h create mode 100644 hardware/arduino/sam/system/libsam/source/dacc.c diff --git a/hardware/arduino/sam/cores/arduino/libsam_sam3x8e_gcc_dbg.a b/hardware/arduino/sam/cores/arduino/libsam_sam3x8e_gcc_dbg.a deleted file mode 100644 index ad30b43b31a5d8361fc5ad26ef538bc1c8c6ceb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244890 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 M_WI35kqBt@I;yBtk3McpxnFQ2|%xovO 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 diff --git a/hardware/arduino/sam/cores/arduino/libsam_sam3x8e_gcc_dbg.a.txt b/hardware/arduino/sam/cores/arduino/libsam_sam3x8e_gcc_dbg.a.txt deleted file mode 100644 index d5c0cf942..000000000 --- a/hardware/arduino/sam/cores/arduino/libsam_sam3x8e_gcc_dbg.a.txt +++ /dev/null @@ -1,418 +0,0 @@ - -adc.o: -00000000 T adc_configure_power_save -00000000 T adc_configure_sequence -00000000 T adc_configure_timing -00000000 T adc_configure_trigger -00000000 T adc_disable_all_channel -00000000 T adc_disable_anch -00000000 T adc_disable_channel -00000000 T adc_disable_channel_differential_input -00000000 T adc_disable_channel_input_offset -00000000 T adc_disable_interrupt -00000000 T adc_disable_tag -00000000 T adc_disable_ts -00000000 T adc_enable_all_channel -00000000 T adc_enable_anch -00000000 T adc_enable_channel -00000000 T adc_enable_channel_differential_input -00000000 T adc_enable_channel_input_offset -00000000 T adc_enable_interrupt -00000000 T adc_enable_tag -00000000 T adc_enable_ts -00000000 T adc_get_actual_adc_clock -00000000 T adc_get_channel_status -00000000 T adc_get_channel_value -00000000 T adc_get_comparison_mode -00000000 T adc_get_interrupt_mask -00000000 T adc_get_latest_value -00000000 T adc_get_overrun_status -00000000 T adc_get_pdc_base -00000000 T adc_get_status -00000000 T adc_get_tag -00000000 T adc_get_writeprotect_status -00000000 T adc_init -00000000 T adc_set_bias_current -00000000 T adc_set_channel_input_gain -00000000 T adc_set_comparison_channel -00000000 T adc_set_comparison_mode -00000000 T adc_set_comparison_window -00000000 T adc_set_resolution -00000000 T adc_set_writeprotect -00000000 T adc_start -00000000 T adc_start_sequencer -00000000 T adc_stop -00000000 T adc_stop_sequencer - -adc12_sam3u.o: - -interrupt_sam_nvic.o: -00000000 D g_interrupt_enabled - -pio.o: -00000000 T PIO_Clear -00000000 T PIO_Configure -00000000 T PIO_DisableInterrupt -00000000 T PIO_Get -00000000 T PIO_GetOutputDataStatus -00000000 T PIO_PullUp -00000000 T PIO_Set -00000000 T PIO_SetDebounceFilter -00000000 T PIO_SetInput -00000000 T PIO_SetOutput -00000000 T PIO_SetPeripheral - -pmc.o: -00000000 T pmc_clr_fast_startup_input -00000000 T pmc_disable_all_pck -00000000 T pmc_disable_all_periph_clk -00000000 T pmc_disable_interrupt -00000000 T pmc_disable_pck -00000000 T pmc_disable_periph_clk -00000000 T pmc_disable_pllack -00000000 T pmc_disable_udpck -00000000 T pmc_disable_upll_clock -00000000 T pmc_enable_all_pck -00000000 T pmc_enable_all_periph_clk -00000000 T pmc_enable_backupmode -00000000 T pmc_enable_interrupt -00000000 T pmc_enable_pck -00000000 T pmc_enable_periph_clk -00000000 T pmc_enable_pllack -00000000 T pmc_enable_sleepmode -00000000 T pmc_enable_udpck -00000000 T pmc_enable_upll_clock -00000000 T pmc_enable_waitmode -00000000 T pmc_get_interrupt_mask -00000000 T pmc_get_status -00000000 T pmc_get_writeprotect_status -00000000 T pmc_is_locked_pllack -00000000 T pmc_is_locked_upll -00000000 T pmc_is_pck_enabled -00000000 T pmc_is_periph_clk_enabled -00000000 T pmc_mck_set_prescaler -00000000 T pmc_mck_set_source -00000000 T pmc_osc_disable_fastrc -00000000 T pmc_osc_disable_xtal -00000000 T pmc_osc_enable_fastrc -00000000 T pmc_osc_is_ready_32kxtal -00000000 T pmc_osc_is_ready_mainck -00000000 T pmc_pck_set_prescaler -00000000 T pmc_pck_set_source -00000000 T pmc_set_fast_startup_input -00000000 T pmc_set_writeprotect -00000000 T pmc_switch_mainck_to_fastrc -00000000 T pmc_switch_mainck_to_xtal -00000000 T pmc_switch_mck_to_mainck -00000000 T pmc_switch_mck_to_pllack -00000000 T pmc_switch_mck_to_sclk -00000000 T pmc_switch_mck_to_upllck -00000000 T pmc_switch_pck_to_mainck -00000000 T pmc_switch_pck_to_pllack -00000000 T pmc_switch_pck_to_sclk -00000000 T pmc_switch_pck_to_upllck -00000000 T pmc_switch_sclk_to_32kxtal -00000000 T pmc_switch_udpck_to_pllack -00000000 T pmc_switch_udpck_to_upllck - -pwmc.o: -00000024 r .LC0 -00000000 r .LC1 -0000016c r .LC10 -0000019c r .LC11 -000001cc r .LC12 -000001fc r .LC13 -00000204 r .LC14 -00000014 r .LC2 -00000050 r .LC3 -0000007c r .LC4 -000000a8 r .LC5 -000000dc r .LC6 -00000108 r .LC7 -00000134 r .LC8 -00000160 r .LC9 -00000000 t FindClockConfiguration -00000000 T PWMC_ConfigureChannel -00000000 T PWMC_ConfigureChannelExt -00000000 T PWMC_ConfigureClocks -00000000 T PWMC_ConfigureComparisonUnit -00000000 T PWMC_ConfigureEventLineMode -00000000 T PWMC_ConfigureSyncChannel -00000000 T PWMC_DisableChannel -00000000 T PWMC_DisableChannelIt -00000000 T PWMC_DisableIt -00000000 T PWMC_DisableOverrideOutput -00000000 T PWMC_EnableChannel -00000000 T PWMC_EnableChannelIt -00000000 T PWMC_EnableFaultProtection -00000000 T PWMC_EnableIt -00000000 T PWMC_EnableOverrideOutput -00000000 T PWMC_FaultClear -00000000 T PWMC_SetDeadTime -00000000 T PWMC_SetDutyCycle -00000000 T PWMC_SetFaultMode -00000000 T PWMC_SetFaultProtectionValue -00000000 T PWMC_SetOverrideValue -00000000 T PWMC_SetPeriod -00000000 T PWMC_SetSyncChannelUpdatePeriod -00000000 T PWMC_SetSyncChannelUpdateUnlock -00000000 T PWMC_WriteBuffer - U __assert_func -00000000 r __func__.3192 -00000000 r __func__.3203 -00000000 r __func__.3218 -00000000 r __func__.3229 -00000000 r __func__.3240 -00000000 r __func__.3247 -00000000 r __func__.3331 -00000000 r __func__.3337 - -rtc.o: -00000000 r .LC0 -00000010 r .LC1 -0000002c r .LC2 -00000000 T RTC_ClearSCCR -00000000 T RTC_DisableIt -00000000 T RTC_EnableIt -00000000 T RTC_GetDate -00000000 T RTC_GetHourMode -00000000 T RTC_GetSR -00000000 T RTC_GetTime -00000000 T RTC_SetDate -00000000 T RTC_SetDateAlarm -00000000 T RTC_SetHourMode -00000000 T RTC_SetTime -00000000 T RTC_SetTimeAlarm - U __assert_func -00000000 r __func__.3189 -00000000 r __func__.3198 -00000000 r __func__.3203 - -rtt.o: -00000000 r .LC0 -00000010 r .LC1 -0000002c r .LC2 -00000000 T RTT_EnableIT -00000000 T RTT_GetStatus -00000000 T RTT_GetTime -00000000 T RTT_SetAlarm -00000000 T RTT_SetPrescaler - U __assert_func -00000000 r __func__.3196 -00000000 r __func__.3204 - -spi.o: -00000000 T SPI_Configure -00000000 T SPI_ConfigureNPCS -00000000 T SPI_Disable -00000000 T SPI_DisableIt -00000000 T SPI_Enable -00000000 T SPI_EnableIt -00000000 T SPI_GetStatus -00000000 T SPI_IsFinished -00000000 T SPI_Read -00000000 T SPI_Write - U pmc_enable_periph_clk - -tc.o: -00000000 r .LC0 -00000010 r .LC1 -00000000 T TC_Configure -00000000 T TC_FindMckDivisor -00000000 T TC_Start -00000000 T TC_Stop - U __assert_func -00000000 r __func__.3191 -00000000 r __func__.3197 -00000000 r __func__.3203 - -timetick.o: -00000000 T GetTickCount -00000000 t NVIC_SetPriority -00000000 T Sleep -00000000 t SysTick_Config -00000000 T TimeTick_Configure -00000000 T TimeTick_Increment -00000000 T Wait -00000000 b _dwTickCount - -twi.o: -00000000 r .LC0 -00000010 r .LC1 -00000018 r .LC2 -00000024 r .LC3 -00000054 r .LC4 -00000064 r .LC5 -0000007c r .LC6 -0000009c r .LC7 -000000a8 r .LC8 -00000000 T TWI_ByteReceived -00000000 T TWI_ByteSent -00000000 T TWI_ConfigureMaster -00000000 T TWI_ConfigureSlave -00000000 T TWI_DisableIt -00000000 T TWI_EnableIt -00000000 T TWI_GetMaskedStatus -00000000 T TWI_GetStatus -00000000 T TWI_ReadByte -00000000 T TWI_SendSTOPCondition -00000000 T TWI_StartRead -00000000 T TWI_StartWrite -00000000 T TWI_Stop -00000000 T TWI_TransferComplete -00000000 T TWI_WriteByte - U __assert_func -00000000 r __func__.3556 -00000000 r __func__.3571 -00000000 r __func__.3575 -00000000 r __func__.3582 -00000000 r __func__.3586 -00000000 r __func__.3591 -00000000 r __func__.3599 -00000000 r __func__.3613 -00000000 r __func__.3618 -00000000 r __func__.3622 -00000000 r __func__.3627 -00000000 r __func__.3631 - -udp.o: - -udphs.o: - -uotghs.o: -00000000 t NVIC_EnableIRQ -00000000 t NVIC_SetPriority -00000000 T UDD_Attach -00000000 T UDD_ClearIN -00000000 T UDD_ClearOUT -00000000 T UDD_ClearSetupInt -00000000 T UDD_Detach -00000000 T UDD_FifoByteCount -00000000 T UDD_GetFrameNumber -00000000 T UDD_Init -00000000 T UDD_InitEP -00000000 T UDD_InitEndpoints -00000000 T UDD_ReadWriteAllowed -00000000 T UDD_ReceivedSetupInt -00000000 T UDD_Recv -00000000 T UDD_Recv8 -00000000 T UDD_ReleaseRX -00000000 T UDD_ReleaseTX -00000000 T UDD_Send -00000000 T UDD_Send8 -00000000 T UDD_SetAddress -00000000 T UDD_SetStack -00000000 T UDD_Stall -00000000 T UDD_WaitForINOrOUT -00000000 T UDD_WaitIN -00000000 T UDD_WaitOUT -00000000 T UOTGHS_Handler -00000000 t cpu_irq_is_enabled_flags -00000000 t cpu_irq_restore -00000000 t cpu_irq_save - U g_interrupt_enabled -00000000 b gpf_isr - U pmc_enable_periph_clk - U pmc_enable_udpck - U pmc_enable_upll_clock - U pmc_switch_udpck_to_upllck -00000000 b ul_recv_fifo_ptr -00000000 b ul_send_fifo_ptr - -usart.o: -00000000 r .LC0 -00000014 r .LC1 -00000000 T USART_Configure -00000000 T USART_DisableIt -00000000 T USART_EnableIt -00000000 T USART_GetChar -00000000 T USART_GetStatus -00000000 T USART_IsDataAvailable -00000000 T USART_IsRxReady -00000000 T USART_PutChar -00000000 T USART_Read -00000000 T USART_ReadBuffer -00000000 T USART_SetIrdaFilter -00000000 T USART_SetReceiverEnabled -00000000 T USART_SetTransmitterEnabled -00000000 T USART_Write -00000000 T USART_WriteBuffer - U __assert_func -00000000 r __func__.3477 - -wdt.o: -00000000 T WDT_Disable -00000000 T WDT_Enable -00000000 T WDT_GetPeriod -00000000 T WDT_GetStatus -00000000 T WDT_Restart - -system_sam3xa.o: -00000000 D SystemCoreClock -00000000 T SystemCoreClockUpdate -00000000 T SystemInit -00000000 T system_init_flash - -startup_sam3xa.o: -00000000 W ADC_Handler -00000000 W BusFault_Handler -00000000 W CAN0_Handler -00000000 W CAN1_Handler -00000000 W DACC_Handler -00000000 W DMAC_Handler -00000000 W DebugMon_Handler -00000000 T Dummy_Handler -00000000 W EFC0_Handler -00000000 W EFC1_Handler -00000000 W EMAC_Handler -00000000 W HSMCI_Handler -00000000 W HardFault_Handler -00000000 W MemManage_Handler -00000000 W NMI_Handler -00000000 W PIOA_Handler -00000000 W PIOB_Handler -00000000 W PIOC_Handler -00000000 W PIOD_Handler -00000000 W PMC_Handler -00000000 W PWM_Handler -00000000 W PendSV_Handler -00000000 W RSTC_Handler -00000000 W RTC_Handler -00000000 W RTT_Handler -00000000 T Reset_Handler -00000000 W SMC_Handler -00000000 W SPI0_Handler -00000000 W SSC_Handler -00000000 W SUPC_Handler -00000000 W SVC_Handler -00000000 W SysTick_Handler -00000000 W TC0_Handler -00000000 W TC1_Handler -00000000 W TC2_Handler -00000000 W TC3_Handler -00000000 W TC4_Handler -00000000 W TC5_Handler -00000000 W TC6_Handler -00000000 W TC7_Handler -00000000 W TC8_Handler -00000000 W TRNG_Handler -00000000 W TWI0_Handler -00000000 W TWI1_Handler -00000000 W UART_Handler -00000000 W UOTGHS_Handler -00000000 W USART0_Handler -00000000 W USART1_Handler -00000000 W USART2_Handler -00000000 W USART3_Handler -00000000 W UsageFault_Handler -00000000 W WDT_Handler - U __libc_init_array - U _erelocate - U _estack - U _etext - U _ezero - U _sfixed - U _srelocate - U _szero -00000000 R exception_table - U main diff --git a/hardware/arduino/sam/cores/arduino/wiring_analog.c b/hardware/arduino/sam/cores/arduino/wiring_analog.c index 3d5c0ce70..d5bf6dd2b 100644 --- a/hardware/arduino/sam/cores/arduino/wiring_analog.c +++ b/hardware/arduino/sam/cores/arduino/wiring_analog.c @@ -193,6 +193,50 @@ void analogOutputInit(void) { void analogWrite(uint32_t ulPin, uint32_t ulValue) { uint32_t attr = g_APinDescription[ulPin].ulPinAttribute; + if ((attr & PIN_ATTR_ANALOG) == PIN_ATTR_ANALOG) { + EAnalogChannel channel = g_APinDescription[ulPin].ulADCChannelNumber; + if (channel == DAC0 || channel == DAC1) { + uint32_t chDACC = ((channel == DAC0) ? 0 : 1); + if ((dacc_get_channel_status(DACC_INTERFACE) & (1 << chDACC)) == 0) { + /* Enable clock for DACC_INTERFACE */ + pmc_enable_periph_clk(DACC_INTERFACE_ID); + + /* Reset DACC registers */ + dacc_reset(DACC_INTERFACE); + + /* Half word transfer mode */ + dacc_set_transfer_mode(DACC_INTERFACE, 0); + + /* Power save: + * sleep mode - 0 (disabled) + * fast wakeup - 0 (disabled) + */ + dacc_set_power_save(DACC_INTERFACE, 0, 0); + /* Timing: + * refresh - 0x08 (1024*8 dacc clocks) + * max speed mode - 0 (disabled) + * startup time - 0x10 (1024 dacc clocks) + */ + dacc_set_timing(DACC_INTERFACE, 0x08, 0, 0x10); + + /* Disable TAG and select output channel chDACC */ + dacc_set_channel_selection(DACC_INTERFACE, chDACC); + + /* Enable output channel chDACC */ + dacc_enable_channel(DACC_INTERFACE, chDACC); + + /* Set up analog current */ + dacc_set_analog_control(DACC_INTERFACE, DACC_ACR_IBCTLCH0(0x02) | + DACC_ACR_IBCTLCH1(0x02) | + DACC_ACR_IBCTLDACCORE(0x01)); + } + + // Write user value + dacc_write_conversion_data(DACC_INTERFACE, ulValue); + return; + } + } + if ((attr & PIN_ATTR_PWM) == PIN_ATTR_PWM) { if (!PWMEnabled) { // PWM Startup code diff --git a/hardware/arduino/sam/system/libsam/chip.h b/hardware/arduino/sam/system/libsam/chip.h index fa0f9eb40..10032f4f3 100644 --- a/hardware/arduino/sam/system/libsam/chip.h +++ b/hardware/arduino/sam/system/libsam/chip.h @@ -42,6 +42,7 @@ * Peripherals */ #include "include/adc.h" +#include "include/dacc.h" #include "include/interrupt_sam_nvic.h" #include "include/pio.h" #include "include/pmc.h" diff --git a/hardware/arduino/sam/system/libsam/include/dacc.h b/hardware/arduino/sam/system/libsam/include/dacc.h new file mode 100644 index 000000000..81342d198 --- /dev/null +++ b/hardware/arduino/sam/system/libsam/include/dacc.h @@ -0,0 +1,102 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011-2012, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following condition is met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * ---------------------------------------------------------------------------- + */ + +#ifndef DACC_H_INCLUDED +#define DACC_H_INCLUDED + +#include "../chip.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +//! DACC return codes +typedef enum dacc_rc { + DACC_RC_OK = 0, //!< Operation OK + DACC_RC_INVALID_PARAM //!< Invalid parameter +} dacc_rc_t; + +#if SAM3N_SERIES +//! DACC resolution in number of data bits +# define DACC_RESOLUTION 10 +#else +//! DACC resolution in number of data bits +# define DACC_RESOLUTION 12 +#endif +//! DACC max data value +#define DACC_MAX_DATA ((1 << DACC_RESOLUTION) - 1) + +void dacc_reset(Dacc *p_dacc); +uint32_t dacc_set_trigger(Dacc *p_dacc, uint32_t ul_trigger); +void dacc_disable_trigger(Dacc *p_dacc); +uint32_t dacc_set_transfer_mode(Dacc *p_dacc, uint32_t ul_mode); +void dacc_enable_interrupt(Dacc *p_dacc, uint32_t ul_interrupt_mask); +void dacc_disable_interrupt(Dacc *p_dacc, uint32_t ul_interrupt_mask); +uint32_t dacc_get_interrupt_mask(Dacc *p_dacc); +uint32_t dacc_get_interrupt_status(Dacc *p_dacc); +void dacc_write_conversion_data(Dacc *p_dacc, uint32_t ul_data); +void dacc_set_writeprotect(Dacc *p_dacc, uint32_t ul_enable); +uint32_t dacc_get_writeprotect_status(Dacc *p_dacc); +Pdc *dacc_get_pdc_base(Dacc *p_dacc); + +#if (SAM3N_SERIES) || defined(__DOXYGEN__) +void dacc_enable(Dacc *p_dacc); +void dacc_disable(Dacc *p_dacc); +uint32_t dacc_set_timing(Dacc *p_dacc, uint32_t ul_startup, + uint32_t ul_clock_divider); +#endif /* (SAM3N_SERIES) */ + +#if (SAM3S_SERIES) || (SAM3XA_SERIES) || (SAM4S_SERIES) || defined(__DOXYGEN__) +uint32_t dacc_set_channel_selection(Dacc *p_dacc, uint32_t ul_channel); +void dacc_enable_flexible_selection(Dacc *p_dacc); + +uint32_t dacc_set_power_save(Dacc *p_dacc, uint32_t ul_sleep_mode, + uint32_t ul_fast_wakeup_mode); +uint32_t dacc_set_timing(Dacc *p_dacc, uint32_t ul_refresh, uint32_t ul_maxs, + uint32_t ul_startup); +uint32_t dacc_enable_channel(Dacc *p_dacc, uint32_t ul_channel); +uint32_t dacc_disable_channel(Dacc *p_dacc, uint32_t ul_channel); +uint32_t dacc_get_channel_status(Dacc *p_dacc); +uint32_t dacc_set_analog_control(Dacc *p_dacc, uint32_t ul_analog_control); +uint32_t dacc_get_analog_control(Dacc *p_dacc); +#endif /* (SAM3S_SERIES) || (SAM3XA_SERIES) */ + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +#endif /* DACC_H_INCLUDED */ diff --git a/hardware/arduino/sam/system/libsam/source/dacc.c b/hardware/arduino/sam/system/libsam/source/dacc.c new file mode 100644 index 000000000..aa8f9fe93 --- /dev/null +++ b/hardware/arduino/sam/system/libsam/source/dacc.c @@ -0,0 +1,481 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011-2012, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following condition is met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * ---------------------------------------------------------------------------- + */ + +#include "dacc.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \defgroup sam_drivers_dacc_group Digital-to-Analog Converter Controller (DACC) + * + * \par Purpose + * + * Driver for the Digital-to-Analog Converter Controller. It provides access to the main + * features of the DAC controller. + * + * \par Usage + * + * -# DACC clock should be enabled before using it. + * - \ref pmc_enable_periph_clk() can be used to enable the clock. + * -# Reset DACC with \ref dacc_reset(). + * -# If DACC can be enabled/disabled, uses \ref dacc_enable() and + * \ref dacc_disable(). + * -# Initialize DACC timing with \ref dacc_set_timing() (different DAC + * peripheral may require different parameters). + * -# Write conversion data with \ref dacc_write_conversion_data(). + * -# Configure trigger with \ref dacc_set_trigger() + * and \ref dacc_disable_trigger(). + * -# Configure FIFO transfer mode with \ref dacc_set_transfer_mode(). + * -# Control interrupts with \ref dacc_enable_interrupt(), + * \ref dacc_disable_interrupt(), \ref dacc_get_interrupt_mask() and + * \ref dacc_get_interrupt_status(). + * -# DACC registers support write protect with \ref dacc_set_writeprotect() + * and \ref dacc_get_writeprotect_status(). + * -# If the DACC can work with PDC, use \ref dacc_get_pdc_base() to get + * PDC register base for the DAC controller. + * -# If the DACC has several channels to process, the following functions can + * be used: + * - Enable/Disable TAG and select output channel selection by + * \ref dacc_set_channel_selection(), + * \ref dacc_enable_flexible_channel_selection(). + * - Enable/disable channel by \ref dacc_enable_channel() / + * \ref dacc_disable_channel(), get channel status by + * \ref dacc_get_channel_status(). + * + * \section dependencies Dependencies + * This driver does not depend on other modules. + * + * @{ + */ + +//! Max channel number +#if (SAM3N_SERIES) +# define MAX_CH_NB 0 +#else +# define MAX_CH_NB 1 +#endif + +//! DACC Write Protect Key "DAC" in ASCII +#define DACC_WP_KEY (0x444143) + +/** + * \brief Reset DACC. + * + * \param p_dacc Pointer to a DACC instance. + */ +void dacc_reset(Dacc *p_dacc) +{ + p_dacc->DACC_CR = DACC_CR_SWRST; +} + +/** + * \brief Enable trigger and set the trigger source. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_trigger Trigger source number. + * + * \return \ref DACC_RC_OK for OK. + */ +uint32_t dacc_set_trigger(Dacc *p_dacc, uint32_t ul_trigger) +{ + uint32_t mr = p_dacc->DACC_MR & (~(DACC_MR_TRGSEL_Msk)); +#if (SAM3N_SERIES) + p_dacc->DACC_MR = mr + | DACC_MR_TRGEN + | ((ul_trigger << DACC_MR_TRGSEL_Pos) & DACC_MR_TRGSEL_Msk); +#else + p_dacc->DACC_MR = mr | DACC_MR_TRGEN_EN | DACC_MR_TRGSEL(ul_trigger); +#endif + return DACC_RC_OK; +} + +/** + * \brief Disable trigger (free run mode). + * + * \param p_dacc Pointer to a DACC instance. + */ +void dacc_disable_trigger(Dacc *p_dacc) +{ + p_dacc->DACC_MR &= ~DACC_MR_TRGEN; +} + +/** + * \brief Set the transfer mode. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_mode Transfer mode configuration. + * + * \return \ref DACC_RC_OK for OK. + */ +uint32_t dacc_set_transfer_mode(Dacc *p_dacc, uint32_t ul_mode) +{ + if (ul_mode) { +#if (SAM3N_SERIES) + p_dacc->DACC_MR |= DACC_MR_WORD; +#else + p_dacc->DACC_MR |= DACC_MR_WORD_WORD; +#endif + } else { +#if (SAM3N_SERIES) + p_dacc->DACC_MR &= (~DACC_MR_WORD); +#else + p_dacc->DACC_MR &= (~DACC_MR_WORD_WORD); +#endif + } + return DACC_RC_OK; +} + +/** + * \brief Enable DACC interrupts. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_interrupt_mask The interrupt mask. + */ +void dacc_enable_interrupt(Dacc *p_dacc, uint32_t ul_interrupt_mask) +{ + p_dacc->DACC_IER = ul_interrupt_mask; +} + +/** + * \brief Disable DACC interrupts. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_interrupt_mask The interrupt mask. + */ +void dacc_disable_interrupt(Dacc *p_dacc, uint32_t ul_interrupt_mask) +{ + p_dacc->DACC_IDR = ul_interrupt_mask; +} + +/** + * \brief Get the interrupt mask. + * + * \param p_dacc Pointer to a DACC instance. + * + * \return The interrupt mask. + */ +uint32_t dacc_get_interrupt_mask(Dacc *p_dacc) +{ + return p_dacc->DACC_IMR; +} + +/** + * \brief Get the interrupt status. + * + * \param p_dacc Pointer to a DACC instance. + * + * \return The interrupt status. + */ +uint32_t dacc_get_interrupt_status(Dacc *p_dacc) +{ + return p_dacc->DACC_ISR; +} + +/** + * \brief Write data to conversion register. + * + * \note The \a ul_data could be output data or data with channel TAG when + * flexible mode is used. + * + * In flexible mode the 2 bits, DACC_CDR[13:12] which are otherwise unused, + * are employed to select the channel in the same way as with the USER_SEL + * field. Finally, if the WORD field is set, the 2 bits, DACC_CDR[13:12] are + * used for channel selection of the first data and the 2 bits, + * DACC_CDR[29:28] for channel selection of the second data. + * + * \see dacc_enable_flexible_selection() + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_data The data to be transferred to analog value. + */ +void dacc_write_conversion_data(Dacc *p_dacc, uint32_t ul_data) +{ + p_dacc->DACC_CDR = ul_data; +} + +/** + * \brief Enable or disable write protect of DACC registers. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_enable 1 to enable, 0 to disable. + */ +void dacc_set_writeprotect(Dacc *p_dacc, uint32_t ul_enable) +{ + if (ul_enable) { + p_dacc->DACC_WPMR = DACC_WPMR_WPKEY(DACC_WP_KEY) + | DACC_WPMR_WPEN; + } else { + p_dacc->DACC_WPMR = DACC_WPMR_WPKEY(DACC_WP_KEY); + } +} + +/** + * \brief Get the write protect status. + * + * \param p_dacc Pointer to a DACC instance. + * + * \return Write protect status. + */ +uint32_t dacc_get_writeprotect_status(Dacc *p_dacc) +{ + return p_dacc->DACC_WPSR; +} + +/** + * \brief Get PDC registers base address. + * + * \param p_dacc Pointer to a DACC instance. + * + * \return DACC PDC register base address. + */ +Pdc *dacc_get_pdc_base(Dacc *p_dacc) +{ + p_dacc = p_dacc; + return PDC_DACC; +} + +#if (SAM3N_SERIES) || defined(__DOXYGEN__) +/** + * \brief Enable DACC. + * + * \param p_dacc Pointer to a DACC instance. + */ +void dacc_enable(Dacc *p_dacc) +{ + p_dacc->DACC_MR |= DACC_MR_DACEN; +} + +/** + * \brief Disable DACC. + * + * \param p_dacc Pointer to a DACC instance. + * + * \return \ref DACC_RC_OK for OK. + */ +void dacc_disable(Dacc *p_dacc) +{ + p_dacc->DACC_MR &= (~DACC_MR_DACEN); +} + +/** + * \brief Set the DACC timing. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_startup Startup time selection. + * \param ul_clock_divider Clock divider for internal trigger. + * + * \return \ref DACC_RC_OK for OK. + */ +uint32_t dacc_set_timing(Dacc *p_dacc, uint32_t ul_startup, + uint32_t ul_clock_divider) +{ + uint32_t mr = p_dacc->DACC_MR + & ~(DACC_MR_STARTUP_Msk | DACC_MR_CLKDIV_Msk); + p_dacc->DACC_MR = mr | DACC_MR_STARTUP(ul_startup) + | DACC_MR_CLKDIV(ul_clock_divider); + return DACC_RC_OK; +} +#endif /* #if (SAM3N_SERIES) */ + +#if (SAM3S_SERIES) || (SAM3XA_SERIES) || (SAM4S_SERIES) || defined(__DOXYGEN__) +/** + * \brief Disable flexible (TAG) mode and select a channel for DAC outputs. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_channel Channel to select. + * + * \return \ref DACC_RC_OK if successful. + */ +uint32_t dacc_set_channel_selection(Dacc *p_dacc, uint32_t ul_channel) +{ + uint32_t mr = p_dacc->DACC_MR & (~DACC_MR_USER_SEL_Msk); + if (ul_channel > MAX_CH_NB) { + return DACC_RC_INVALID_PARAM; + } + mr &= ~(DACC_MR_TAG); + mr |= ul_channel << DACC_MR_USER_SEL_Pos; + p_dacc->DACC_MR = mr; + return DACC_RC_OK; +} + +/** + * \brief Enable the flexible channel selection mode (TAG). + * + * In this mode the 2 bits, DACC_CDR[13:12] which are otherwise unused, are + * employed to select the channel in the same way as with the USER_SEL field. + * Finally, if the WORD field is set, the 2 bits, DACC_CDR[13:12] are used + * for channel selection of the first data and the 2 bits, DACC_CDR[29:28] + * for channel selection of the second data. + * + * \param p_dacc Pointer to a DACC instance. + */ +void dacc_enable_flexible_selection(Dacc *p_dacc) +{ + p_dacc->DACC_MR |= DACC_MR_TAG; +} + +/** + * \brief Set the power save mode. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_sleep_mode Sleep mode configuration. + * \param ul_fast_wakeup_mode Fast wakeup mode configuration. + * + * \return \ref DACC_RC_OK if successful. + */ +uint32_t dacc_set_power_save(Dacc *p_dacc, + uint32_t ul_sleep_mode, uint32_t ul_fast_wakeup_mode) +{ + if (ul_sleep_mode) { + p_dacc->DACC_MR |= DACC_MR_SLEEP; + } else { + p_dacc->DACC_MR &= (~DACC_MR_SLEEP); + } + if (ul_fast_wakeup_mode) { + p_dacc->DACC_MR |= DACC_MR_FASTWKUP; + } else { + p_dacc->DACC_MR &= (~DACC_MR_FASTWKUP); + } + return DACC_RC_OK; +} + +/** + * \brief Set DACC timings. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_refresh Refresh period setting value. + * \param ul_maxs Max speed mode configuration. + * \param ul_startup Startup time selection. + * + * \return \ref DACC_RC_OK for OK. + */ +uint32_t dacc_set_timing(Dacc *p_dacc, + uint32_t ul_refresh, uint32_t ul_maxs, uint32_t ul_startup) +{ + uint32_t mr = p_dacc->DACC_MR + & (~(DACC_MR_REFRESH_Msk | DACC_MR_STARTUP_Msk)); + mr |= DACC_MR_REFRESH(ul_refresh); + if (ul_maxs) { + mr |= DACC_MR_MAXS; + } else { + mr &= ~DACC_MR_MAXS; + } + mr |= (DACC_MR_STARTUP_Msk & ((ul_startup) << DACC_MR_STARTUP_Pos)); + p_dacc->DACC_MR = mr; + return DACC_RC_OK; +} + +/** + * \brief Enable DACC channel. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_channel The output channel to enable. + * + * \return \ref DACC_RC_OK for OK. + */ +uint32_t dacc_enable_channel(Dacc *p_dacc, uint32_t ul_channel) +{ + if (ul_channel > MAX_CH_NB) + return DACC_RC_INVALID_PARAM; + + p_dacc->DACC_CHER = DACC_CHER_CH0 << ul_channel; + return DACC_RC_OK; +} + +/** + * \brief Disable DACC channel. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_channel The output channel to disable. + * + * \return \ref DACC_RC_OK for OK. + */ +uint32_t dacc_disable_channel(Dacc *p_dacc, uint32_t ul_channel) +{ + if (ul_channel > MAX_CH_NB) { + return DACC_RC_INVALID_PARAM; + } + p_dacc->DACC_CHDR = DACC_CHDR_CH0 << ul_channel; + return DACC_RC_OK; +} + +/** + * \brief Get the channel status. + * + * \param p_dacc Pointer to a DACC instance. + * + * \return DACC channel status. + */ +uint32_t dacc_get_channel_status(Dacc *p_dacc) +{ + return p_dacc->DACC_CHSR; +} + +/** + * \brief Set the analog control value. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_analog_control Analog control configuration. + * + * \return \ref DACC_RC_OK for OK. + */ +uint32_t dacc_set_analog_control(Dacc *p_dacc, uint32_t ul_analog_control) +{ + p_dacc->DACC_ACR = ul_analog_control; + return DACC_RC_OK; +} + +/** + * \brief Get the analog control value. + * + * \param p_dacc Pointer to a DACC instance. + * + * \return Current setting of analog control. + */ +uint32_t dacc_get_analog_control(Dacc *p_dacc) +{ + return p_dacc->DACC_ACR; +} +#endif /* (SAM3S_SERIES) || (SAM3XA_SERIES) */ + +//@} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond diff --git a/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a b/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a index 00960209f107115c1cdfe6cccce3e8d88424e8d7..a36253ea4e6caaf6178117c815d1a2c3ca880655 100644 GIT binary patch delta 20008 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 JKmWCz{{!HpUkm^M delta 17821 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 I9)0hB0sR6$9RL6T diff --git a/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a.txt b/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a.txt index 7447be8ba..1ed7a440f 100644 --- a/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a.txt +++ b/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a.txt @@ -72,6 +72,7 @@ pmc.o: 00000000 T pmc_switch_udpck_to_upllck pwmc.o: +00000000 r C.9.7204 00000000 t FindClockConfiguration 00000000 T PWMC_ConfigureChannel 00000000 T PWMC_ConfigureChannelExt @@ -99,14 +100,14 @@ pwmc.o: 00000000 T PWMC_SetSyncChannelUpdateUnlock 00000000 T PWMC_WriteBuffer U __assert_func -00000000 r __func__.3192 -00000000 r __func__.3203 -00000000 r __func__.3218 -00000000 r __func__.3229 -00000000 r __func__.3240 -00000000 r __func__.3247 -00000000 r __func__.3331 -00000000 r __func__.3337 +00000000 r __func__.5914 +00000000 r __func__.5925 +00000000 r __func__.5940 +00000000 r __func__.5951 +00000000 r __func__.5962 +00000000 r __func__.5969 +00000000 r __func__.6053 +00000000 r __func__.6059 rtc.o: 00000000 T RTC_ClearSCCR @@ -122,9 +123,9 @@ rtc.o: 00000000 T RTC_SetTime 00000000 T RTC_SetTimeAlarm U __assert_func -00000000 r __func__.3189 -00000000 r __func__.3198 -00000000 r __func__.3203 +00000000 r __func__.5911 +00000000 r __func__.5920 +00000000 r __func__.5925 rtt.o: 00000000 T RTT_EnableIT @@ -133,8 +134,8 @@ rtt.o: 00000000 T RTT_SetAlarm 00000000 T RTT_SetPrescaler U __assert_func -00000000 r __func__.3196 -00000000 r __func__.3204 +00000000 r __func__.5918 +00000000 r __func__.5926 spi.o: 00000000 T SPI_Configure @@ -155,9 +156,9 @@ tc.o: 00000000 T TC_Start 00000000 T TC_Stop U __assert_func -00000000 r __func__.3191 -00000000 r __func__.3197 -00000000 r __func__.3203 +00000000 r __func__.5913 +00000000 r __func__.5919 +00000000 r __func__.5925 timetick.o: 00000000 T GetTickCount @@ -184,18 +185,18 @@ twi.o: 00000000 T TWI_TransferComplete 00000000 T TWI_WriteByte U __assert_func -00000000 r __func__.3556 -00000000 r __func__.3571 -00000000 r __func__.3575 -00000000 r __func__.3582 -00000000 r __func__.3586 -00000000 r __func__.3591 -00000000 r __func__.3599 -00000000 r __func__.3613 -00000000 r __func__.3618 -00000000 r __func__.3622 -00000000 r __func__.3627 -00000000 r __func__.3631 +00000000 r __func__.6286 +00000000 r __func__.6301 +00000000 r __func__.6305 +00000000 r __func__.6312 +00000000 r __func__.6316 +00000000 r __func__.6321 +00000000 r __func__.6329 +00000000 r __func__.6343 +00000000 r __func__.6348 +00000000 r __func__.6352 +00000000 r __func__.6357 +00000000 r __func__.6361 usart.o: 00000000 T USART_Configure @@ -214,7 +215,7 @@ usart.o: 00000000 T USART_Write 00000000 T USART_WriteBuffer U __assert_func -00000000 r __func__.3477 +00000000 r __func__.6207 wdt.o: 00000000 T WDT_Disable @@ -379,3 +380,26 @@ uotghs.o: interrupt_sam_nvic.o: 00000000 D g_interrupt_enabled + +dacc.o: +00000000 T dacc_disable_channel +00000000 T dacc_disable_interrupt +00000000 T dacc_disable_trigger +00000000 T dacc_enable_channel +00000000 T dacc_enable_flexible_selection +00000000 T dacc_enable_interrupt +00000000 T dacc_get_analog_control +00000000 T dacc_get_channel_status +00000000 T dacc_get_interrupt_mask +00000000 T dacc_get_interrupt_status +00000000 T dacc_get_pdc_base +00000000 T dacc_get_writeprotect_status +00000000 T dacc_reset +00000000 T dacc_set_analog_control +00000000 T dacc_set_channel_selection +00000000 T dacc_set_power_save +00000000 T dacc_set_timing +00000000 T dacc_set_transfer_mode +00000000 T dacc_set_trigger +00000000 T dacc_set_writeprotect +00000000 T dacc_write_conversion_data diff --git a/hardware/arduino/sam/variants/arduino_due_x/variant.h b/hardware/arduino/sam/variants/arduino_due_x/variant.h index 2ba898ca0..a99f7807a 100644 --- a/hardware/arduino/sam/variants/arduino_due_x/variant.h +++ b/hardware/arduino/sam/variants/arduino_due_x/variant.h @@ -161,10 +161,16 @@ 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 A12 = 66; -static const uint8_t A13 = 67; -static const uint8_t A14 = 68; -static const uint8_t A15 = 69; +static const uint8_t DA0 = 66; +static const uint8_t DA1 = 67; +static const uint8_t CANRX0 = 68; +static const uint8_t CANTX0 = 69; + +/* + * DACC + */ +#define DACC_INTERFACE DACC +#define DACC_INTERFACE_ID ID_DACC /* * PWM