mbed.h verzija za koristenje na predmetu PAI

Committer:
esokic
Date:
Tue Mar 10 09:51:52 2015 +0000
Revision:
0:05aad811ea07
mbed.h verzija od marta 2014, za koristenje na predmetu PAI

Who changed what in which revision?

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