Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
AnalogIO_1ch/MCP4921.cpp@0:f69d3c64978d, 2014-07-28 (annotated)
- Committer:
 - MikamiUitOpen
 - Date:
 - Mon Jul 28 07:30:22 2014 +0000
 - Revision:
 - 0:f69d3c64978d
 - Child:
 - 1:d8449dbcde02
 
ver.1
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| MikamiUitOpen | 0:f69d3c64978d | 1 | //------------------------------------------------------ | 
| MikamiUitOpen | 0:f69d3c64978d | 2 | // Class for 1 DAC in MCO4922 | 
| MikamiUitOpen | 0:f69d3c64978d | 3 | // | 
| MikamiUitOpen | 0:f69d3c64978d | 4 | // 2014/07/18, Copyright (c) 2014 MIKAMI, Naoki | 
| MikamiUitOpen | 0:f69d3c64978d | 5 | //------------------------------------------------------ | 
| MikamiUitOpen | 0:f69d3c64978d | 6 | |
| MikamiUitOpen | 0:f69d3c64978d | 7 | #include "MCP4921.hpp" | 
| MikamiUitOpen | 0:f69d3c64978d | 8 | |
| MikamiUitOpen | 0:f69d3c64978d | 9 | namespace Mikami | 
| MikamiUitOpen | 0:f69d3c64978d | 10 | { | 
| MikamiUitOpen | 0:f69d3c64978d | 11 | DacMCP4921::DacMCP4921(PinName mosi, PinName sclk, | 
| MikamiUitOpen | 0:f69d3c64978d | 12 | PinName cs, int hz) | 
| MikamiUitOpen | 0:f69d3c64978d | 13 | : mySpi_(mosi, NC, sclk, PA_4), myCs_(cs, 1) | 
| MikamiUitOpen | 0:f69d3c64978d | 14 | { | 
| MikamiUitOpen | 0:f69d3c64978d | 15 | // Set SPI format and bus frequency | 
| MikamiUitOpen | 0:f69d3c64978d | 16 | mySpi_.format(16, 0); | 
| MikamiUitOpen | 0:f69d3c64978d | 17 | mySpi_.frequency(hz); | 
| MikamiUitOpen | 0:f69d3c64978d | 18 | |
| MikamiUitOpen | 0:f69d3c64978d | 19 | // Set DAC to 0 | 
| MikamiUitOpen | 0:f69d3c64978d | 20 | WriteDac(0); | 
| MikamiUitOpen | 0:f69d3c64978d | 21 | } | 
| MikamiUitOpen | 0:f69d3c64978d | 22 | |
| MikamiUitOpen | 0:f69d3c64978d | 23 | void DacMCP4921::Write(float value) | 
| MikamiUitOpen | 0:f69d3c64978d | 24 | { | 
| MikamiUitOpen | 0:f69d3c64978d | 25 | if (value < -1.0f) value = -1.0f; | 
| MikamiUitOpen | 0:f69d3c64978d | 26 | if (value > 1.0f) value = 1.0f; | 
| MikamiUitOpen | 0:f69d3c64978d | 27 | |
| MikamiUitOpen | 0:f69d3c64978d | 28 | WriteDac((uint16_t)((value + 1.0f)*2047)); | 
| MikamiUitOpen | 0:f69d3c64978d | 29 | } | 
| MikamiUitOpen | 0:f69d3c64978d | 30 | |
| MikamiUitOpen | 0:f69d3c64978d | 31 | void DacMCP4921::Write(uint16_t value) | 
| MikamiUitOpen | 0:f69d3c64978d | 32 | { | 
| MikamiUitOpen | 0:f69d3c64978d | 33 | WriteDac((value > 4095) ? 4095 : value); | 
| MikamiUitOpen | 0:f69d3c64978d | 34 | } | 
| MikamiUitOpen | 0:f69d3c64978d | 35 | |
| MikamiUitOpen | 0:f69d3c64978d | 36 | void DacMCP4921::WriteDac(uint16_t value) | 
| MikamiUitOpen | 0:f69d3c64978d | 37 | { | 
| MikamiUitOpen | 0:f69d3c64978d | 38 | myCs_.write(0); // cs <= L | 
| MikamiUitOpen | 0:f69d3c64978d | 39 | mySpi_.write(value | 0x3000); | 
| MikamiUitOpen | 0:f69d3c64978d | 40 | myCs_.write(1); // cs <= H | 
| MikamiUitOpen | 0:f69d3c64978d | 41 | } | 
| MikamiUitOpen | 0:f69d3c64978d | 42 | } | 
| MikamiUitOpen | 0:f69d3c64978d | 43 |