From 40dce96f1173dfba5f667b0c289687ac3d92506b Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Wed, 9 Oct 2013 15:54:47 +0200 Subject: [PATCH] Fixed adc_init() function. See #1418 --- build/shared/revisions.txt | 1 + .../arduino/sam/system/libsam/source/adc.c | 51 ++++++++++++- .../arduino_due_x/libsam_sam3x8e_gcc_rel.a | Bin 116704 -> 116482 bytes .../libsam_sam3x8e_gcc_rel.a.txt | 69 +++++++++--------- .../sam/variants/arduino_due_x/variant.cpp | 2 +- 5 files changed, 87 insertions(+), 36 deletions(-) diff --git a/build/shared/revisions.txt b/build/shared/revisions.txt index 4ff8faf0b..86801f1a8 100644 --- a/build/shared/revisions.txt +++ b/build/shared/revisions.txt @@ -12,6 +12,7 @@ ARDUINO 1.5.5 BETA [core] * sam: Fixed wrong initialization for ADC timings (analogRead speed Arduino DUE improved by a factor x10) + https://github.com/arduino/Arduino/issues/1418 (http://www.djerickson.com/arduino/) * avr: Fixed wrong extended fuses on Arduino Yún when using external programmer * avr: Added yun variant with LED_BUILTIN definition diff --git a/hardware/arduino/sam/system/libsam/source/adc.c b/hardware/arduino/sam/system/libsam/source/adc.c index c4be3bb71..18a1b4c38 100644 --- a/hardware/arduino/sam/system/libsam/source/adc.c +++ b/hardware/arduino/sam/system/libsam/source/adc.c @@ -46,7 +46,7 @@ extern "C" { * @{ */ -#if SAM3S_SERIES || SAM4S_SERIES || SAM3N_SERIES || SAM3XA_SERIES +#if SAM3S_SERIES || SAM4S_SERIES || SAM3N_SERIES /** * \brief Initialize the given ADC with the specified ADC clock and startup time. * @@ -80,6 +80,55 @@ uint32_t adc_init(Adc *p_adc, const uint32_t ul_mck, ADC_MR_STARTUP_Msk); return 0; } +#elif SAM3XA_SERIES +/** + * \brief Initialize the given ADC with the specified ADC clock and startup time. + * + * \param p_adc Pointer to an ADC instance. + * \param ul_mck Main clock of the device (value in Hz). + * \param ul_adc_clock Analog-to-Digital conversion clock (value in Hz). + * \param uc_startup ADC start up time. Please refer to the product datasheet + * for details. + * + * \return 0 on success. + */ +uint32_t adc_init(Adc *p_adc, const uint32_t ul_mck, + const uint32_t ul_adc_clock, const uint8_t uc_startuptime) +{ + uint32_t startup_table[] = { 0, 8, 16, 24, 64, 80, 96, 112, 512, 576, 640, 704, 768, 832, 896, 960 }; + uint32_t ul_prescal, ul_startup, ul_mr_startup, ul_real_adc_clock; + p_adc->ADC_CR = ADC_CR_SWRST; + + /* Reset Mode Register. */ + p_adc->ADC_MR = 0; + + /* Reset PDC transfer. */ + p_adc->ADC_PTCR = (ADC_PTCR_RXTDIS | ADC_PTCR_TXTDIS); + p_adc->ADC_RCR = 0; + p_adc->ADC_RNCR = 0; + if (ul_mck % (2 * ul_adc_clock)) { + // Division with reminder + ul_prescal = ul_mck / (2 * ul_adc_clock); + } else { + // Whole division + ul_prescal = ul_mck / (2 * ul_adc_clock) - 1; + } + ul_real_adc_clock = ul_mck / (2 * (ul_prescal + 1)); + + // ADC clocks needed to get ul_startuptime uS + ul_startup = (ul_real_adc_clock / 1000000) * uc_startuptime; + + // Find correct MR_STARTUP value from conversion table + for (ul_mr_startup=0; ul_mr_startup<16; ul_mr_startup++) { + if (startup_table[ul_mr_startup] >= ul_startup) + break; + } + if (ul_mr_startup==16) + return -1; + p_adc->ADC_MR |= ADC_MR_PRESCAL(ul_prescal) | + ((ul_mr_startup << ADC_MR_STARTUP_Pos) & ADC_MR_STARTUP_Msk); + return 0; +} #elif SAM3U_SERIES /** * \brief Initialize the given ADC with the specified ADC clock and startup time. 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 c639827e311bdbf49b93c756052ab6d4327766fe..7768e877cd4366cbab5664de520f7c7365a28114 100644 GIT binary patch delta 29976 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 PWq{!)^LT-X5a9m+UT#Xy delta 31209 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