The code from https://github.com/vpcola/Nucleo

Committer:
sinrab
Date:
Wed Oct 08 11:00:24 2014 +0000
Revision:
0:5464d5e415e5
The code from https://github.com/vpcola/Nucleo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sinrab 0:5464d5e415e5 1 /* mbed Microcontroller Library
sinrab 0:5464d5e415e5 2 * Copyright (c) 2006-2013 ARM Limited
sinrab 0:5464d5e415e5 3 *
sinrab 0:5464d5e415e5 4 * Licensed under the Apache License, Version 2.0 (the "License");
sinrab 0:5464d5e415e5 5 * you may not use this file except in compliance with the License.
sinrab 0:5464d5e415e5 6 * You may obtain a copy of the License at
sinrab 0:5464d5e415e5 7 *
sinrab 0:5464d5e415e5 8 * http://www.apache.org/licenses/LICENSE-2.0
sinrab 0:5464d5e415e5 9 *
sinrab 0:5464d5e415e5 10 * Unless required by applicable law or agreed to in writing, software
sinrab 0:5464d5e415e5 11 * distributed under the License is distributed on an "AS IS" BASIS,
sinrab 0:5464d5e415e5 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
sinrab 0:5464d5e415e5 13 * See the License for the specific language governing permissions and
sinrab 0:5464d5e415e5 14 * limitations under the License.
sinrab 0:5464d5e415e5 15 */
sinrab 0:5464d5e415e5 16 #ifndef MBED_ANALOGOUT_H
sinrab 0:5464d5e415e5 17 #define MBED_ANALOGOUT_H
sinrab 0:5464d5e415e5 18
sinrab 0:5464d5e415e5 19 #include "platform.h"
sinrab 0:5464d5e415e5 20
sinrab 0:5464d5e415e5 21 #if DEVICE_ANALOGOUT
sinrab 0:5464d5e415e5 22
sinrab 0:5464d5e415e5 23 #include "analogout_api.h"
sinrab 0:5464d5e415e5 24
sinrab 0:5464d5e415e5 25 namespace mbed {
sinrab 0:5464d5e415e5 26
sinrab 0:5464d5e415e5 27 /** An analog output, used for setting the voltage on a pin
sinrab 0:5464d5e415e5 28 *
sinrab 0:5464d5e415e5 29 * Example:
sinrab 0:5464d5e415e5 30 * @code
sinrab 0:5464d5e415e5 31 * // Make a sawtooth output
sinrab 0:5464d5e415e5 32 *
sinrab 0:5464d5e415e5 33 * #include "mbed.h"
sinrab 0:5464d5e415e5 34 *
sinrab 0:5464d5e415e5 35 * AnalogOut tri(p18);
sinrab 0:5464d5e415e5 36 * int main() {
sinrab 0:5464d5e415e5 37 * while(1) {
sinrab 0:5464d5e415e5 38 * tri = tri + 0.01;
sinrab 0:5464d5e415e5 39 * wait_us(1);
sinrab 0:5464d5e415e5 40 * if(tri == 1) {
sinrab 0:5464d5e415e5 41 * tri = 0;
sinrab 0:5464d5e415e5 42 * }
sinrab 0:5464d5e415e5 43 * }
sinrab 0:5464d5e415e5 44 * }
sinrab 0:5464d5e415e5 45 * @endcode
sinrab 0:5464d5e415e5 46 */
sinrab 0:5464d5e415e5 47 class AnalogOut {
sinrab 0:5464d5e415e5 48
sinrab 0:5464d5e415e5 49 public:
sinrab 0:5464d5e415e5 50
sinrab 0:5464d5e415e5 51 /** Create an AnalogOut connected to the specified pin
sinrab 0:5464d5e415e5 52 *
sinrab 0:5464d5e415e5 53 * @param AnalogOut pin to connect to (18)
sinrab 0:5464d5e415e5 54 */
sinrab 0:5464d5e415e5 55 AnalogOut(PinName pin) {
sinrab 0:5464d5e415e5 56 analogout_init(&_dac, pin);
sinrab 0:5464d5e415e5 57 }
sinrab 0:5464d5e415e5 58
sinrab 0:5464d5e415e5 59 /** Set the output voltage, specified as a percentage (float)
sinrab 0:5464d5e415e5 60 *
sinrab 0:5464d5e415e5 61 * @param value A floating-point value representing the output voltage,
sinrab 0:5464d5e415e5 62 * specified as a percentage. The value should lie between
sinrab 0:5464d5e415e5 63 * 0.0f (representing 0v / 0%) and 1.0f (representing 3.3v / 100%).
sinrab 0:5464d5e415e5 64 * Values outside this range will be saturated to 0.0f or 1.0f.
sinrab 0:5464d5e415e5 65 */
sinrab 0:5464d5e415e5 66 void write(float value) {
sinrab 0:5464d5e415e5 67 analogout_write(&_dac, value);
sinrab 0:5464d5e415e5 68 }
sinrab 0:5464d5e415e5 69
sinrab 0:5464d5e415e5 70 /** Set the output voltage, represented as an unsigned short in the range [0x0, 0xFFFF]
sinrab 0:5464d5e415e5 71 *
sinrab 0:5464d5e415e5 72 * @param value 16-bit unsigned short representing the output voltage,
sinrab 0:5464d5e415e5 73 * normalised to a 16-bit value (0x0000 = 0v, 0xFFFF = 3.3v)
sinrab 0:5464d5e415e5 74 */
sinrab 0:5464d5e415e5 75 void write_u16(unsigned short value) {
sinrab 0:5464d5e415e5 76 analogout_write_u16(&_dac, value);
sinrab 0:5464d5e415e5 77 }
sinrab 0:5464d5e415e5 78
sinrab 0:5464d5e415e5 79 /** Return the current output voltage setting, measured as a percentage (float)
sinrab 0:5464d5e415e5 80 *
sinrab 0:5464d5e415e5 81 * @returns
sinrab 0:5464d5e415e5 82 * A floating-point value representing the current voltage being output on the pin,
sinrab 0:5464d5e415e5 83 * measured as a percentage. The returned value will lie between
sinrab 0:5464d5e415e5 84 * 0.0f (representing 0v / 0%) and 1.0f (representing 3.3v / 100%).
sinrab 0:5464d5e415e5 85 *
sinrab 0:5464d5e415e5 86 * @note
sinrab 0:5464d5e415e5 87 * This value may not match exactly the value set by a previous write().
sinrab 0:5464d5e415e5 88 */
sinrab 0:5464d5e415e5 89 float read() {
sinrab 0:5464d5e415e5 90 return analogout_read(&_dac);
sinrab 0:5464d5e415e5 91 }
sinrab 0:5464d5e415e5 92
sinrab 0:5464d5e415e5 93 #ifdef MBED_OPERATORS
sinrab 0:5464d5e415e5 94 /** An operator shorthand for write()
sinrab 0:5464d5e415e5 95 */
sinrab 0:5464d5e415e5 96 AnalogOut& operator= (float percent) {
sinrab 0:5464d5e415e5 97 write(percent);
sinrab 0:5464d5e415e5 98 return *this;
sinrab 0:5464d5e415e5 99 }
sinrab 0:5464d5e415e5 100
sinrab 0:5464d5e415e5 101 AnalogOut& operator= (AnalogOut& rhs) {
sinrab 0:5464d5e415e5 102 write(rhs.read());
sinrab 0:5464d5e415e5 103 return *this;
sinrab 0:5464d5e415e5 104 }
sinrab 0:5464d5e415e5 105
sinrab 0:5464d5e415e5 106 /** An operator shorthand for read()
sinrab 0:5464d5e415e5 107 */
sinrab 0:5464d5e415e5 108 operator float() {
sinrab 0:5464d5e415e5 109 return read();
sinrab 0:5464d5e415e5 110 }
sinrab 0:5464d5e415e5 111 #endif
sinrab 0:5464d5e415e5 112
sinrab 0:5464d5e415e5 113 protected:
sinrab 0:5464d5e415e5 114 dac_t _dac;
sinrab 0:5464d5e415e5 115 };
sinrab 0:5464d5e415e5 116
sinrab 0:5464d5e415e5 117 } // namespace mbed
sinrab 0:5464d5e415e5 118
sinrab 0:5464d5e415e5 119 #endif
sinrab 0:5464d5e415e5 120
sinrab 0:5464d5e415e5 121 #endif
sinrab 0:5464d5e415e5 122