Driver for National Semiconductor ADC128Sxxx family of analog to digital converters

Revision:
2:f6c4a79f2ee0
Parent:
1:0edd6142cd67
--- a/ADC128S.cpp	Wed Mar 02 05:50:24 2011 +0000
+++ b/ADC128S.cpp	Wed Apr 27 19:07:26 2011 +0000
@@ -5,17 +5,44 @@
 #include "mbed.h"
 #include "ADC128S.h"
 
-ADC128S::ADC128S(PinName mosi, PinName miso, PinName sck, PinName cs) : _adc(mosi, miso, sck), _cs(cs) {
+ADC128S::ADC128S(PinName mosi, PinName miso, PinName sck, PinName cs) : _adc(mosi, miso, sck), _cs(cs), _channel(0) {
     _adc.format(16,3);
     _adc.frequency(8000000);
 }
 
+int ADC128S::getChannel() {
+    return _channel;
+}
+
+void ADC128S::setChannel(int channel) {
+    _cs = 0;
+    _adc.write(channel<<11); // send channel for next acquisition; XXXAAAXX XXXXXXXX
+    _adc.write(channel<<11); // send channel for next acquisition; XXXAAAXX XXXXXXXX
+    _cs = 1;
+    _channel = channel;
+}
+
+unsigned int ADC128S::read() {
+    unsigned int result = 0;
+    _cs = 0;
+    // get next acquisition, send next channel: XXXAAAXX XXXXXXXX
+    _channel++;
+    _channel %= 8;
+    result = _adc.write(_channel<<11);
+    _cs = 1;
+    
+    return result;
+}
+
 unsigned int ADC128S::read(int channel) {
     unsigned int result = 0;
     _cs = 0;
     _adc.write(channel<<11); // send channel for next acquisition; XXXAAAXX XXXXXXXX
+    _cs = 1;
+    wait_us(50);
+    _cs = 0;
     result = _adc.write(channel<<11); // get next acquisition
     _cs = 1;
     
     return result;
-}
\ No newline at end of file
+}