added prescaler for 16 bit pwm in LPC1347 target

Fork of mbed-dev by mbed official

Committer:
JojoS
Date:
Sat Sep 10 15:32:04 2016 +0000
Revision:
147:ba84b7dc41a7
Parent:
64:41a834223ea3
added prescaler for 16 bit timers (solution as in LPC11xx), default prescaler 31 for max 28 ms period time

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 15:a81a8d6c1dfe 1 /* mbed Microcontroller Library
mbed_official 15:a81a8d6c1dfe 2 * Copyright (c) 2006-2015 ARM Limited
mbed_official 15:a81a8d6c1dfe 3 *
mbed_official 15:a81a8d6c1dfe 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 15:a81a8d6c1dfe 5 * you may not use this file except in compliance with the License.
mbed_official 15:a81a8d6c1dfe 6 * You may obtain a copy of the License at
mbed_official 15:a81a8d6c1dfe 7 *
mbed_official 15:a81a8d6c1dfe 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 15:a81a8d6c1dfe 9 *
mbed_official 15:a81a8d6c1dfe 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 15:a81a8d6c1dfe 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 15:a81a8d6c1dfe 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 15:a81a8d6c1dfe 13 * See the License for the specific language governing permissions and
mbed_official 15:a81a8d6c1dfe 14 * limitations under the License.
mbed_official 15:a81a8d6c1dfe 15 */
mbed_official 15:a81a8d6c1dfe 16 #include "mbed_assert.h"
mbed_official 15:a81a8d6c1dfe 17 #include "analogin_api.h"
mbed_official 15:a81a8d6c1dfe 18
mbed_official 15:a81a8d6c1dfe 19 #include "cmsis.h"
mbed_official 15:a81a8d6c1dfe 20 #include "pinmap.h"
mbed_official 15:a81a8d6c1dfe 21 #include "PeripheralPins.h"
mbed_official 15:a81a8d6c1dfe 22 #include "adc.h"
mbed_official 15:a81a8d6c1dfe 23 #include "status_codes.h"
mbed_official 15:a81a8d6c1dfe 24
mbed_official 15:a81a8d6c1dfe 25 extern uint8_t g_sys_init;
mbed_official 15:a81a8d6c1dfe 26 struct adc_module adc_instance;
mbed_official 15:a81a8d6c1dfe 27
mbed_official 15:a81a8d6c1dfe 28 void adc_configure_ain_pin(uint32_t pin)
mbed_official 15:a81a8d6c1dfe 29 {
mbed_official 15:a81a8d6c1dfe 30 #define PIN_INVALID_ADC_AIN 0xFFFFUL
mbed_official 15:a81a8d6c1dfe 31
mbed_official 15:a81a8d6c1dfe 32 /* Pinmapping table for AINxx -> GPIO pin number */
mbed_official 15:a81a8d6c1dfe 33 const uint32_t pinmapping[] = {
mbed_official 15:a81a8d6c1dfe 34 #if (SAMD20E | SAMD21E)
mbed_official 15:a81a8d6c1dfe 35 PIN_PA02B_ADC_AIN0, PIN_PA03B_ADC_AIN1,
mbed_official 15:a81a8d6c1dfe 36 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 37 PIN_PA04B_ADC_AIN4, PIN_PA05B_ADC_AIN5,
mbed_official 15:a81a8d6c1dfe 38 PIN_PA06B_ADC_AIN6, PIN_PA07B_ADC_AIN7,
mbed_official 15:a81a8d6c1dfe 39 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 40 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 41 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 42 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 43 PIN_PA08B_ADC_AIN16, PIN_PA09B_ADC_AIN17,
mbed_official 15:a81a8d6c1dfe 44 PIN_PA10B_ADC_AIN18, PIN_PA11B_ADC_AIN19,
mbed_official 15:a81a8d6c1dfe 45 #elif (SAMD20G | SAMD21G)
mbed_official 15:a81a8d6c1dfe 46 PIN_PA02B_ADC_AIN0, PIN_PA03B_ADC_AIN1,
mbed_official 15:a81a8d6c1dfe 47 PIN_PB08B_ADC_AIN2, PIN_PB09B_ADC_AIN3,
mbed_official 15:a81a8d6c1dfe 48 PIN_PA04B_ADC_AIN4, PIN_PA05B_ADC_AIN5,
mbed_official 15:a81a8d6c1dfe 49 PIN_PA06B_ADC_AIN6, PIN_PA07B_ADC_AIN7,
mbed_official 15:a81a8d6c1dfe 50 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 51 PIN_PB02B_ADC_AIN10, PIN_PB03B_ADC_AIN11,
mbed_official 15:a81a8d6c1dfe 52 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 53 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 54 PIN_PA08B_ADC_AIN16, PIN_PA09B_ADC_AIN17,
mbed_official 15:a81a8d6c1dfe 55 PIN_PA10B_ADC_AIN18, PIN_PA11B_ADC_AIN19,
mbed_official 15:a81a8d6c1dfe 56 #elif (SAMD20J | SAMD21J)
mbed_official 15:a81a8d6c1dfe 57 PIN_PA02B_ADC_AIN0, PIN_PA03B_ADC_AIN1,
mbed_official 15:a81a8d6c1dfe 58 PIN_PB08B_ADC_AIN2, PIN_PB09B_ADC_AIN3,
mbed_official 15:a81a8d6c1dfe 59 PIN_PA04B_ADC_AIN4, PIN_PA05B_ADC_AIN5,
mbed_official 15:a81a8d6c1dfe 60 PIN_PA06B_ADC_AIN6, PIN_PA07B_ADC_AIN7,
mbed_official 15:a81a8d6c1dfe 61 PIN_PB00B_ADC_AIN8, PIN_PB01B_ADC_AIN9,
mbed_official 15:a81a8d6c1dfe 62 PIN_PB02B_ADC_AIN10, PIN_PB03B_ADC_AIN11,
mbed_official 15:a81a8d6c1dfe 63 PIN_PB04B_ADC_AIN12, PIN_PB05B_ADC_AIN13,
mbed_official 15:a81a8d6c1dfe 64 PIN_PB06B_ADC_AIN14, PIN_PB07B_ADC_AIN15,
mbed_official 15:a81a8d6c1dfe 65 PIN_PA08B_ADC_AIN16, PIN_PA09B_ADC_AIN17,
mbed_official 15:a81a8d6c1dfe 66 PIN_PA10B_ADC_AIN18, PIN_PA11B_ADC_AIN19,
mbed_official 15:a81a8d6c1dfe 67 #elif SAMR21E
mbed_official 15:a81a8d6c1dfe 68 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 69 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 70 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 71 PIN_PA06B_ADC_AIN6, PIN_PA07B_ADC_AIN7,
mbed_official 15:a81a8d6c1dfe 72 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 73 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 74 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 75 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 76 PIN_PA08B_ADC_AIN16, PIN_PA09B_ADC_AIN17,
mbed_official 15:a81a8d6c1dfe 77 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 78 #elif SAMR21G
mbed_official 15:a81a8d6c1dfe 79 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 80 PIN_PB08B_ADC_AIN2, PIN_PB09B_ADC_AIN3,
mbed_official 15:a81a8d6c1dfe 81 PIN_PA04B_ADC_AIN4, PIN_PA05B_ADC_AIN5,
mbed_official 15:a81a8d6c1dfe 82 PIN_PA06B_ADC_AIN6, PIN_PA07B_ADC_AIN7,
mbed_official 15:a81a8d6c1dfe 83 PIN_PB00B_ADC_AIN8, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 84 PIN_PB02B_ADC_AIN10, PIN_PB03B_ADC_AIN11,
mbed_official 15:a81a8d6c1dfe 85 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 86 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 87 PIN_PA08B_ADC_AIN16, PIN_PA09B_ADC_AIN17,
mbed_official 15:a81a8d6c1dfe 88 PIN_PA10B_ADC_AIN18, PIN_PA11B_ADC_AIN19,
mbed_official 15:a81a8d6c1dfe 89 #elif (SAMD10C | SAMD11C)
mbed_official 15:a81a8d6c1dfe 90 PIN_PA02B_ADC_AIN0, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 91 PIN_PA04B_ADC_AIN2, PIN_PA05B_ADC_AIN3,
mbed_official 15:a81a8d6c1dfe 92 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 93 PIN_PA14B_ADC_AIN6, PIN_PA15B_ADC_AIN7,
mbed_official 15:a81a8d6c1dfe 94 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 95 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 96 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 97 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 98 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 99 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 100 #elif (SAMD10DS | SAMD11DS)
mbed_official 15:a81a8d6c1dfe 101 PIN_PA02B_ADC_AIN0, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 102 PIN_PA04B_ADC_AIN2, PIN_PA05B_ADC_AIN3,
mbed_official 15:a81a8d6c1dfe 103 PIN_PA06B_ADC_AIN4, PIN_PA07B_ADC_AIN5,
mbed_official 15:a81a8d6c1dfe 104 PIN_PA14B_ADC_AIN6, PIN_PA15B_ADC_AIN7,
mbed_official 15:a81a8d6c1dfe 105 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 106 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 107 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 108 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 109 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 110 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 111 #elif (SAMD10DM | SAMD11DM)
mbed_official 15:a81a8d6c1dfe 112 PIN_PA02B_ADC_AIN0, PIN_PA03B_ADC_AIN1,
mbed_official 15:a81a8d6c1dfe 113 PIN_PA04B_ADC_AIN2, PIN_PA05B_ADC_AIN3,
mbed_official 15:a81a8d6c1dfe 114 PIN_PA06B_ADC_AIN4, PIN_PA07B_ADC_AIN5,
mbed_official 15:a81a8d6c1dfe 115 PIN_PA14B_ADC_AIN6, PIN_PA15B_ADC_AIN7,
mbed_official 15:a81a8d6c1dfe 116 PIN_PA10B_ADC_AIN8, PIN_PA11B_ADC_AIN9,
mbed_official 15:a81a8d6c1dfe 117 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 118 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 119 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 120 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 121 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 122 #elif (SAML21E)
mbed_official 18:da299f395b9e 123 PIN_PA02B_ADC_AIN0, PIN_PA03B_ADC_AIN1,
mbed_official 18:da299f395b9e 124 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 125 PIN_PA04B_ADC_AIN4, PIN_PA05B_ADC_AIN5,
mbed_official 18:da299f395b9e 126 PIN_PA06B_ADC_AIN6, PIN_PA07B_ADC_AIN7,
mbed_official 18:da299f395b9e 127 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 128 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 129 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 130 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 131 PIN_PA08B_ADC_AIN16, PIN_PA09B_ADC_AIN17,
mbed_official 18:da299f395b9e 132 PIN_PA10B_ADC_AIN18, PIN_PA11B_ADC_AIN19,
mbed_official 18:da299f395b9e 133 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 134 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 135 #elif (SAML21G)
mbed_official 18:da299f395b9e 136 PIN_PA02B_ADC_AIN0, PIN_PA03B_ADC_AIN1,
mbed_official 18:da299f395b9e 137 PIN_PB08B_ADC_AIN2, PIN_PB09B_ADC_AIN3,
mbed_official 18:da299f395b9e 138 PIN_PA04B_ADC_AIN4, PIN_PA05B_ADC_AIN5,
mbed_official 18:da299f395b9e 139 PIN_PA06B_ADC_AIN6, PIN_PA07B_ADC_AIN7,
mbed_official 18:da299f395b9e 140 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 141 PIN_PB02B_ADC_AIN10, PIN_PB03B_ADC_AIN11,
mbed_official 18:da299f395b9e 142 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 143 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 144 PIN_PA08B_ADC_AIN16, PIN_PA09B_ADC_AIN17,
mbed_official 18:da299f395b9e 145 PIN_PA10B_ADC_AIN18, PIN_PA11B_ADC_AIN19,
mbed_official 18:da299f395b9e 146 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 147 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 148 #elif (SAML21J)
mbed_official 18:da299f395b9e 149 PIN_PA02B_ADC_AIN0, PIN_PA03B_ADC_AIN1,
mbed_official 18:da299f395b9e 150 PIN_PB08B_ADC_AIN2, PIN_PB09B_ADC_AIN3,
mbed_official 18:da299f395b9e 151 PIN_PA04B_ADC_AIN4, PIN_PA05B_ADC_AIN5,
mbed_official 18:da299f395b9e 152 PIN_PA06B_ADC_AIN6, PIN_PA07B_ADC_AIN7,
mbed_official 18:da299f395b9e 153 PIN_PB00B_ADC_AIN8, PIN_PB01B_ADC_AIN9,
mbed_official 18:da299f395b9e 154 PIN_PB02B_ADC_AIN10, PIN_PB03B_ADC_AIN11,
mbed_official 18:da299f395b9e 155 PIN_PB04B_ADC_AIN12, PIN_PB05B_ADC_AIN13,
mbed_official 18:da299f395b9e 156 PIN_PB06B_ADC_AIN14, PIN_PB07B_ADC_AIN15,
mbed_official 18:da299f395b9e 157 PIN_PA08B_ADC_AIN16, PIN_PA09B_ADC_AIN17,
mbed_official 18:da299f395b9e 158 PIN_PA10B_ADC_AIN18, PIN_PA11B_ADC_AIN19,
mbed_official 18:da299f395b9e 159 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 160 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 161 #else
mbed_official 15:a81a8d6c1dfe 162 # error ADC pin mappings are not defined for this device.
mbed_official 15:a81a8d6c1dfe 163 #endif
mbed_official 15:a81a8d6c1dfe 164 };
mbed_official 15:a81a8d6c1dfe 165
mbed_official 15:a81a8d6c1dfe 166 uint32_t pin_map_result = PIN_INVALID_ADC_AIN;
mbed_official 15:a81a8d6c1dfe 167
mbed_official 15:a81a8d6c1dfe 168 if (pin <= ADC_EXTCHANNEL_MSB) {
mbed_official 15:a81a8d6c1dfe 169 pin_map_result = pinmapping[pin >> ADC_INPUTCTRL_MUXPOS_Pos];
mbed_official 15:a81a8d6c1dfe 170
mbed_official 15:a81a8d6c1dfe 171 Assert(pin_map_result != PIN_INVALID_ADC_AIN);
mbed_official 15:a81a8d6c1dfe 172
mbed_official 15:a81a8d6c1dfe 173 struct system_pinmux_config config;
mbed_official 15:a81a8d6c1dfe 174 system_pinmux_get_config_defaults(&config);
mbed_official 15:a81a8d6c1dfe 175
mbed_official 15:a81a8d6c1dfe 176 /* Analog functions are all on MUX setting B */
mbed_official 15:a81a8d6c1dfe 177 config.input_pull = SYSTEM_PINMUX_PIN_PULL_NONE;
mbed_official 15:a81a8d6c1dfe 178 config.mux_position = 1;
mbed_official 15:a81a8d6c1dfe 179
mbed_official 15:a81a8d6c1dfe 180 system_pinmux_pin_set_config(pin_map_result, &config);
mbed_official 15:a81a8d6c1dfe 181 }
mbed_official 15:a81a8d6c1dfe 182 }
mbed_official 15:a81a8d6c1dfe 183
mbed_official 15:a81a8d6c1dfe 184 void analogin_init(analogin_t *obj, PinName pin)
mbed_official 15:a81a8d6c1dfe 185 {
mbed_official 15:a81a8d6c1dfe 186 MBED_ASSERT(obj);
mbed_official 15:a81a8d6c1dfe 187 if (g_sys_init == 0) {
mbed_official 15:a81a8d6c1dfe 188 system_init();
mbed_official 15:a81a8d6c1dfe 189 g_sys_init = 1;
mbed_official 15:a81a8d6c1dfe 190 }
mbed_official 15:a81a8d6c1dfe 191 uint32_t pos_input;
mbed_official 15:a81a8d6c1dfe 192 static uint8_t init_flag = 0;
mbed_official 15:a81a8d6c1dfe 193
mbed_official 15:a81a8d6c1dfe 194 pos_input = pinmap_find_peripheral(pin, PinMap_ADC);
mbed_official 64:41a834223ea3 195 MBED_ASSERT(pos_input != (uint32_t)NC);
mbed_official 15:a81a8d6c1dfe 196
mbed_official 15:a81a8d6c1dfe 197 adc_get_config_defaults(&(obj->config_adc));
mbed_official 64:41a834223ea3 198 obj->config_adc.positive_input = (enum adc_positive_input)pos_input;
mbed_official 15:a81a8d6c1dfe 199 if (init_flag == 0) { // ADC init and enable to be done only once.
mbed_official 15:a81a8d6c1dfe 200 adc_init(&adc_instance, ADC, &(obj->config_adc));
mbed_official 15:a81a8d6c1dfe 201 adc_enable(&adc_instance);
mbed_official 15:a81a8d6c1dfe 202 init_flag = 1;
mbed_official 15:a81a8d6c1dfe 203 }
mbed_official 15:a81a8d6c1dfe 204 adc_configure_ain_pin(obj->config_adc.positive_input);
mbed_official 15:a81a8d6c1dfe 205 adc_configure_ain_pin(obj->config_adc.negative_input);
mbed_official 15:a81a8d6c1dfe 206 }
mbed_official 15:a81a8d6c1dfe 207
mbed_official 15:a81a8d6c1dfe 208 uint16_t analogin_read_u16(analogin_t *obj)
mbed_official 15:a81a8d6c1dfe 209 {
mbed_official 15:a81a8d6c1dfe 210 MBED_ASSERT(obj);
mbed_official 15:a81a8d6c1dfe 211 uint16_t result;
mbed_official 15:a81a8d6c1dfe 212 adc_set_positive_input(&adc_instance, obj->config_adc.positive_input);
mbed_official 15:a81a8d6c1dfe 213 adc_set_negative_input(&adc_instance, obj->config_adc.negative_input);
mbed_official 15:a81a8d6c1dfe 214 adc_start_conversion(&adc_instance);
mbed_official 15:a81a8d6c1dfe 215 do {
mbed_official 15:a81a8d6c1dfe 216 } while(adc_read(&(adc_instance), &result) == STATUS_BUSY); // 12 bit value
mbed_official 15:a81a8d6c1dfe 217
mbed_official 15:a81a8d6c1dfe 218 return (uint16_t)(((uint32_t)result * 0xFFFF) / 0x0FFF); // for normalizing to 16 bit value
mbed_official 15:a81a8d6c1dfe 219 }
mbed_official 15:a81a8d6c1dfe 220
mbed_official 15:a81a8d6c1dfe 221 float analogin_read(analogin_t *obj)
mbed_official 15:a81a8d6c1dfe 222 {
mbed_official 15:a81a8d6c1dfe 223 MBED_ASSERT(obj);
mbed_official 15:a81a8d6c1dfe 224 uint16_t value = analogin_read_u16(obj);
mbed_official 15:a81a8d6c1dfe 225 return (float)value * (1.0f / (float)0xFFFF);
mbed_official 15:a81a8d6c1dfe 226 }
mbed_official 15:a81a8d6c1dfe 227