123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- #ifndef MBED_ANALOGOUT_H
- #define MBED_ANALOGOUT_H
- #include "platform/platform.h"
- #if defined (DEVICE_ANALOGOUT) || defined(DOXYGEN_ONLY)
- #include "hal/analogout_api.h"
- #include "platform/PlatformMutex.h"
- namespace mbed {
- class AnalogOut {
- public:
-
- AnalogOut(PinName pin)
- {
- analogout_init(&_dac, pin);
- }
-
- void write(float value)
- {
- lock();
- analogout_write(&_dac, value);
- unlock();
- }
-
- void write_u16(unsigned short value)
- {
- lock();
- analogout_write_u16(&_dac, value);
- unlock();
- }
-
- float read()
- {
- lock();
- float ret = analogout_read(&_dac);
- unlock();
- return ret;
- }
-
- AnalogOut &operator= (float percent)
- {
-
- write(percent);
- return *this;
- }
-
- AnalogOut &operator= (AnalogOut &rhs)
- {
-
- write(rhs.read());
- return *this;
- }
-
- operator float()
- {
-
- return read();
- }
- virtual ~AnalogOut()
- {
-
- }
- protected:
- virtual void lock()
- {
- _mutex.lock();
- }
- virtual void unlock()
- {
- _mutex.unlock();
- }
- dac_t _dac;
- PlatformMutex _mutex;
- };
- }
- #endif
- #endif
|