Library for MCP4822 SPI 12-bit DAC, both outputs supported, nLDAC connected to GND.

Dependents:   MCP4822_2aLerche

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers MCP4822.h Source File

MCP4822.h

00001 /* MCP4822 library 
00002  * Copyright (c) 2008-2010, Lerche
00003  *
00004  * Permission is hereby granted, free of charge, to any person obtaining a copy
00005  * of this software and associated documentation files (the "Software"), to deal
00006  * in the Software without restriction, including without limitation the rights
00007  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
00008  * copies of the Software, and to permit persons to whom the Software is
00009  * furnished to do so, subject to the following conditions:
00010  *
00011  * The above copyright notice and this permission notice shall be included in
00012  * all copies or substantial portions of the Software.
00013  *
00014  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00015  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00016  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
00017  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00018  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00019  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
00020  * THE SOFTWARE.
00021  */
00022 
00023 #include "mbed.h"
00024 
00025 #ifndef MCP4822_H
00026 #define MCP4822_H
00027 
00028 /** Interface to a 12-bit SPI dual-output DAC */
00029 class MCP4822 {
00030 public:
00031      /** Constructor: MCP4822
00032       * 
00033       * @param MOSI - The SPI Data out pin  
00034       * @param SCLK - The SPI clock pin
00035       * @param /CS - The ChipSelect pin 
00036       */ 
00037     MCP4822 (PinName mosi, PinName sclk, PinName ncs);
00038      /** Write to the A-output, max 4095 (0xFFF) with 1 mV steps
00039       *  
00040       * @param ValueA The value to be written
00041       */ 
00042     void writeA (int ValueA);
00043      /** Write to the B-output, max 4095 (0xFFF) with 1 mV steps
00044       *
00045       * @param ValueB The valkue to be written
00046       */ 
00047     void writeB (int ValueB);
00048      /** Write to any output, accoding to letter.
00049       *
00050       *
00051       */
00052     void write(char chan, int value);
00053      /** Shutdown the output on specific channel
00054       *
00055       *
00056       */
00057     void shdn();
00058     
00059     private :    
00060         SPI _spi;
00061         DigitalOut _ncs;
00062         void _init();
00063   };
00064 
00065 #endif