Class for using AD7730 chip
Diff: AD7730.h
- Revision:
- 0:c584a588c24f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/AD7730.h Fri Dec 16 20:31:01 2011 +0000 @@ -0,0 +1,85 @@ +#ifndef AD7730_H +#define AD7730_H + +#include "mbed.h" + +class AD7730{ + + public: + AD7730(PinName mosi, PinName miso, PinName sclk, PinName ready, PinName cs); + ~AD7730(void); + + int readRegistry(int registry); + int writeRegistry(int registry, int value); + int initialize(void); + int systemLowCal(double wgt); + int systemHighCal(double wgt, double fullScale); + int read(); + int startConversion(bool wait); + void setFilter(int SF, bool chop, int filter2); + void setFilterSF(int SF); + void setFilterMode(int mode); + void setFilterChop(int enabled); + void reset(bool fullReset); + int adjustDAC(int direction); + void start(void); + void stop(void); + bool isReady(void); + double getHz(void); + + + private: + + SPI _spi; + DigitalOut _cs; + DigitalIn _readyDig; + DigitalOut _LED3; + InterruptIn *_interruptReady; + PinName _readyPin; + double _fullScaleWeight; + double _minWeight; + double _maxWeight; + int _readBuffer[100]; + int _bufferCount; + int _lastValue; + bool _continous; + int _frequency; + Timer _tmr; + + //Registry value constants + static const int STATUS_REG = 0; + static const int DATA_REG = 1; + static const int MODE_REG = 2; + static const int FILTER_REG = 3; + static const int DAC_REG = 4; + static const int OFFSET_REG = 5; + static const int GAIN_REG = 6; + static const int TEST_REG = 7; + + //define empty spi command + static const int EMPTY_SPI = 0xFF; + + //internal registries + int _mode; + int _filter; + int _dac; + int _offset; + int _gain; + + + //timing variables + Timer _exeTmr; + int _exeTime; + + //error variables + int _exeError; + + //private functions + int internalZeroCal(void); + int internalFullCal(void); + void interruptRead(void); + + +}; + +#endif