analogIn with DMA

Dependents:   TDEMNucleo

Committer:
willybayot
Date:
Sat Jan 03 09:42:26 2015 +0000
Revision:
0:1f6ea9afd585
anaalogIN with DMA

Who changed what in which revision?

UserRevisionLine numberNew contents of line
willybayot 0:1f6ea9afd585 1 /* mbed Microcontroller Library
willybayot 0:1f6ea9afd585 2 * Copyright (c) 2006-2013 ARM Limited
willybayot 0:1f6ea9afd585 3 *
willybayot 0:1f6ea9afd585 4 * Licensed under the Apache License, Version 2.0 (the "License");
willybayot 0:1f6ea9afd585 5 * you may not use this file except in compliance with the License.
willybayot 0:1f6ea9afd585 6 * You may obtain a copy of the License at
willybayot 0:1f6ea9afd585 7 *
willybayot 0:1f6ea9afd585 8 * http://www.apache.org/licenses/LICENSE-2.0
willybayot 0:1f6ea9afd585 9 *
willybayot 0:1f6ea9afd585 10 * Unless required by applicable law or agreed to in writing, software
willybayot 0:1f6ea9afd585 11 * distributed under the License is distributed on an "AS IS" BASIS,
willybayot 0:1f6ea9afd585 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
willybayot 0:1f6ea9afd585 13 * See the License for the specific language governing permissions and
willybayot 0:1f6ea9afd585 14 * limitations under the License.
willybayot 0:1f6ea9afd585 15 */
willybayot 0:1f6ea9afd585 16 #ifndef MBED_ANALOGINDMA_H
willybayot 0:1f6ea9afd585 17 #define MBED_ANALOGINDMA_H
willybayot 0:1f6ea9afd585 18
willybayot 0:1f6ea9afd585 19 #include "platform.h"
willybayot 0:1f6ea9afd585 20
willybayot 0:1f6ea9afd585 21 #if DEVICE_ANALOGIN
willybayot 0:1f6ea9afd585 22
willybayot 0:1f6ea9afd585 23 #include "analoginDMA_api.h"
willybayot 0:1f6ea9afd585 24
willybayot 0:1f6ea9afd585 25
willybayot 0:1f6ea9afd585 26 namespace mbed {
willybayot 0:1f6ea9afd585 27
willybayot 0:1f6ea9afd585 28 /** An analog input, used for reading the voltage on a pin
willybayot 0:1f6ea9afd585 29 *
willybayot 0:1f6ea9afd585 30 * Example:
willybayot 0:1f6ea9afd585 31 * @code
willybayot 0:1f6ea9afd585 32 * // Print messages when the AnalogIn is greater than 50%
willybayot 0:1f6ea9afd585 33 *
willybayot 0:1f6ea9afd585 34 * #include "mbed.h"
willybayot 0:1f6ea9afd585 35 *
willybayot 0:1f6ea9afd585 36 * AnalogIn temperature(p20);
willybayot 0:1f6ea9afd585 37 *
willybayot 0:1f6ea9afd585 38 * int main() {
willybayot 0:1f6ea9afd585 39 * while(1) {
willybayot 0:1f6ea9afd585 40 * if(temperature > 0.5) {
willybayot 0:1f6ea9afd585 41 * printf("Too hot! (%f)", temperature.read());
willybayot 0:1f6ea9afd585 42 * }
willybayot 0:1f6ea9afd585 43 * }
willybayot 0:1f6ea9afd585 44 * }
willybayot 0:1f6ea9afd585 45 * @endcode
willybayot 0:1f6ea9afd585 46 */
willybayot 0:1f6ea9afd585 47 class AnalogInDMA {
willybayot 0:1f6ea9afd585 48
willybayot 0:1f6ea9afd585 49 public:
willybayot 0:1f6ea9afd585 50
willybayot 0:1f6ea9afd585 51 /** Create an AnalogIn, connected to the specified pin
willybayot 0:1f6ea9afd585 52 *
willybayot 0:1f6ea9afd585 53 * @param pin AnalogIn pin to connect to
willybayot 0:1f6ea9afd585 54 * @param name (optional) A string to identify the object
willybayot 0:1f6ea9afd585 55 */
willybayot 0:1f6ea9afd585 56 AnalogInDMA(PinName pin) {
willybayot 0:1f6ea9afd585 57 analoginDMA_init(&_adc, pin);
willybayot 0:1f6ea9afd585 58 }
willybayot 0:1f6ea9afd585 59
willybayot 0:1f6ea9afd585 60 /** Read the input voltage, represented as a float in the range [0.0, 1.0]
willybayot 0:1f6ea9afd585 61 *
willybayot 0:1f6ea9afd585 62 * @returns A floating-point value representing the current input voltage, measured as a percentage
willybayot 0:1f6ea9afd585 63 */
willybayot 0:1f6ea9afd585 64 float read() {
willybayot 0:1f6ea9afd585 65 return analoginDMA_read(&_adc);
willybayot 0:1f6ea9afd585 66 }
willybayot 0:1f6ea9afd585 67
willybayot 0:1f6ea9afd585 68 /** Read the input voltage, represented as an unsigned short in the range [0x0, 0xFFFF]
willybayot 0:1f6ea9afd585 69 *
willybayot 0:1f6ea9afd585 70 * @returns
willybayot 0:1f6ea9afd585 71 * 16-bit unsigned short representing the current input voltage, normalised to a 16-bit value
willybayot 0:1f6ea9afd585 72 */
willybayot 0:1f6ea9afd585 73 unsigned short read_u16() {
willybayot 0:1f6ea9afd585 74 return analoginDMA_read_u16(&_adc);
willybayot 0:1f6ea9afd585 75 }
willybayot 0:1f6ea9afd585 76
willybayot 0:1f6ea9afd585 77 #ifdef MBED_OPERATORS
willybayot 0:1f6ea9afd585 78 /** An operator shorthand for read()
willybayot 0:1f6ea9afd585 79 *
willybayot 0:1f6ea9afd585 80 * The float() operator can be used as a shorthand for read() to simplify common code sequences
willybayot 0:1f6ea9afd585 81 *
willybayot 0:1f6ea9afd585 82 * Example:
willybayot 0:1f6ea9afd585 83 * @code
willybayot 0:1f6ea9afd585 84 * float x = volume.read();
willybayot 0:1f6ea9afd585 85 * float x = volume;
willybayot 0:1f6ea9afd585 86 *
willybayot 0:1f6ea9afd585 87 * if(volume.read() > 0.25) { ... }
willybayot 0:1f6ea9afd585 88 * if(volume > 0.25) { ... }
willybayot 0:1f6ea9afd585 89 * @endcode
willybayot 0:1f6ea9afd585 90 */
willybayot 0:1f6ea9afd585 91 operator float() {
willybayot 0:1f6ea9afd585 92 return read();
willybayot 0:1f6ea9afd585 93 }
willybayot 0:1f6ea9afd585 94 #endif
willybayot 0:1f6ea9afd585 95
willybayot 0:1f6ea9afd585 96 protected:
willybayot 0:1f6ea9afd585 97 analogin_t _adc;
willybayot 0:1f6ea9afd585 98 };
willybayot 0:1f6ea9afd585 99
willybayot 0:1f6ea9afd585 100 } // namespace mbed
willybayot 0:1f6ea9afd585 101
willybayot 0:1f6ea9afd585 102 #endif
willybayot 0:1f6ea9afd585 103
willybayot 0:1f6ea9afd585 104 #endif