A simple library for controlling an MCP4241 digital potentiometer

Committer:
ollie8
Date:
Fri Sep 13 11:09:41 2013 +0000
Revision:
0:f547d674e543
Child:
1:179b46a0165e
First check in of digi pot library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ollie8 0:f547d674e543 1 #include "DigiPot.h"
ollie8 0:f547d674e543 2
ollie8 0:f547d674e543 3 #define POT_0 0x00
ollie8 0:f547d674e543 4 #define POT_1 0x10
ollie8 0:f547d674e543 5
ollie8 0:f547d674e543 6 DigiPot::DigiPot(PinName miso, PinName mosi, PinName clk, PinName cs) {
ollie8 0:f547d674e543 7 chsel = new DigitalOut(cs);
ollie8 0:f547d674e543 8 spi = new SPI(mosi, miso, clk);// mosi, miso, sclk
ollie8 0:f547d674e543 9 spi->format(8,0); // 8 bits , mode 0
ollie8 0:f547d674e543 10 spi->frequency(1000000); // Default SPI frequency. ( 250kHz maximum for read commands).
ollie8 0:f547d674e543 11 level = 0x00;
ollie8 0:f547d674e543 12 }
ollie8 0:f547d674e543 13
ollie8 0:f547d674e543 14 void DigiPot::increment() {
ollie8 0:f547d674e543 15 setLevel(level++);
ollie8 0:f547d674e543 16 }
ollie8 0:f547d674e543 17
ollie8 0:f547d674e543 18 void DigiPot::decrement() {
ollie8 0:f547d674e543 19 setLevel(level--);
ollie8 0:f547d674e543 20 }
ollie8 0:f547d674e543 21
ollie8 0:f547d674e543 22 void DigiPot::setLevel(unsigned char level) {
ollie8 0:f547d674e543 23 *chsel = 0;
ollie8 0:f547d674e543 24 spi->write(POT_0);
ollie8 0:f547d674e543 25 spi->write(level);
ollie8 0:f547d674e543 26 *chsel = 1;
ollie8 0:f547d674e543 27 *chsel = 0;
ollie8 0:f547d674e543 28 spi->write(POT_1);
ollie8 0:f547d674e543 29 spi->write(level);
ollie8 0:f547d674e543 30 *chsel = 1;
ollie8 0:f547d674e543 31 }
ollie8 0:f547d674e543 32
ollie8 0:f547d674e543 33 void DigiPot::mute() {
ollie8 0:f547d674e543 34 setLevel(0x00);
ollie8 0:f547d674e543 35 }
ollie8 0:f547d674e543 36
ollie8 0:f547d674e543 37 void DigiPot::unmute() {
ollie8 0:f547d674e543 38 setLevel(level);
ollie8 0:f547d674e543 39 }
ollie8 0:f547d674e543 40
ollie8 0:f547d674e543 41 unsigned char DigiPot::getLevel() {
ollie8 0:f547d674e543 42 return level;
ollie8 0:f547d674e543 43 }