Flying Sea Glider / Mbed 2 deprecated 2019_13sep_jcw_nosd

Dependencies:   mbed MODSERIAL FATFileSystem

Committer:
CodyMarquardt
Date:
Fri Jun 28 13:59:11 2019 +0000
Revision:
99:9d0849f5fcd7
Parent:
73:f6f378311c8d
Program has bugs. Committing in order to access in MBED studio to debug

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mkelly10 9:d5fcdcb3c89d 1 #include "ltc1298.hpp"
mkelly10 9:d5fcdcb3c89d 2
danstrider 10:085ab7328054 3 SpiADC::SpiADC(PinName mosi, PinName miso, PinName sclk, PinName csel, PinName led) :
danstrider 10:085ab7328054 4 _spi(mosi, miso, sclk), // mosi, miso, sclk
danstrider 10:085ab7328054 5 adcLed(led), // status led
danstrider 10:085ab7328054 6 cs(csel) // chip select
mkelly10 9:d5fcdcb3c89d 7 {
mkelly10 9:d5fcdcb3c89d 8 }
mkelly10 9:d5fcdcb3c89d 9
danstrider 10:085ab7328054 10 void SpiADC::initialize() {
mkelly10 9:d5fcdcb3c89d 11 //set up the spi bus and frequency
mkelly10 51:c5c40272ecc3 12 _spi.format(12,0);
mkelly10 9:d5fcdcb3c89d 13 _spi.frequency(1000000);
mkelly10 51:c5c40272ecc3 14
mkelly10 9:d5fcdcb3c89d 15 //chip select high puts ltc1298 in standby
danstrider 10:085ab7328054 16 cs = 1;
danstrider 10:085ab7328054 17
danstrider 10:085ab7328054 18 //zero the initial ch0 and ch1 oversampled readings
mkelly10 9:d5fcdcb3c89d 19 ch0_filt = 0;
mkelly10 9:d5fcdcb3c89d 20 ch1_filt = 0;
mkelly10 51:c5c40272ecc3 21 ch2_filt = 0;
mkelly10 51:c5c40272ecc3 22 ch3_filt = 0;
mkelly10 51:c5c40272ecc3 23 ch4_filt = 0;
mkelly10 51:c5c40272ecc3 24 ch5_filt = 0;
mkelly10 51:c5c40272ecc3 25 ch6_filt = 0;
mkelly10 51:c5c40272ecc3 26 ch7_filt = 0;
CodyMarquardt 99:9d0849f5fcd7 27
CodyMarquardt 99:9d0849f5fcd7 28 CH2OVERSAMPLE = 10; // edit by CAM
mkelly10 9:d5fcdcb3c89d 29
danstrider 10:085ab7328054 30 //led on to say hello
tnhnrl 68:8f549749b8ce 31 adcLed = 0; //debug turned off
mkelly10 9:d5fcdcb3c89d 32 }
mkelly10 9:d5fcdcb3c89d 33
danstrider 10:085ab7328054 34 // start an interupt driven trigger of the external ADC
danstrider 10:085ab7328054 35 void SpiADC::start() {
mkelly10 51:c5c40272ecc3 36 interval.attach_us(this, &SpiADC::update, 10000); //this should be a 100 Hz sample rate
mkelly10 9:d5fcdcb3c89d 37 }
mkelly10 9:d5fcdcb3c89d 38
danstrider 10:085ab7328054 39 // stop the interupt driven trigger
danstrider 10:085ab7328054 40 void SpiADC::stop() {
mkelly10 9:d5fcdcb3c89d 41 interval.detach();
mkelly10 9:d5fcdcb3c89d 42 }
mkelly10 9:d5fcdcb3c89d 43
danstrider 10:085ab7328054 44 void SpiADC::update() {
mkelly10 9:d5fcdcb3c89d 45 //flash the LED
tnhnrl 68:8f549749b8ce 46 //adcLed = !adcLed;
mkelly10 9:d5fcdcb3c89d 47
mkelly10 9:d5fcdcb3c89d 48 //chip select low starts data conversion
mkelly10 9:d5fcdcb3c89d 49 cs = 0;
mkelly10 51:c5c40272ecc3 50
mkelly10 9:d5fcdcb3c89d 51 //the next thing is the input data word
mkelly10 9:d5fcdcb3c89d 52 //it is 4 bits and looks like this
mkelly10 9:d5fcdcb3c89d 53 // | start | single/diff | odd/sign | MSB first/LSB first |
mkelly10 9:d5fcdcb3c89d 54 // if you want single ended on channel 0 MSB first then input 0xD
mkelly10 9:d5fcdcb3c89d 55 // if you want single ended on channel 1 MSB first then input 0xF
mkelly10 9:d5fcdcb3c89d 56
mkelly10 9:d5fcdcb3c89d 57 // get channel 0
mkelly10 51:c5c40272ecc3 58 unsigned int byte = _spi.write((0x18)<<2);
mkelly10 9:d5fcdcb3c89d 59 //send a dummy byte to receive the data
mkelly10 9:d5fcdcb3c89d 60 unsigned int byte1 = _spi.write(0x0);
mkelly10 9:d5fcdcb3c89d 61 ch0_raw = byte1;
mkelly10 9:d5fcdcb3c89d 62 ch0_filt += (ch0_raw - ch0_filt)/CH0OVERSAMPLE;
mkelly10 9:d5fcdcb3c89d 63
mkelly10 9:d5fcdcb3c89d 64 cs = 1;
mkelly10 9:d5fcdcb3c89d 65 cs = 0;
mkelly10 9:d5fcdcb3c89d 66
mkelly10 51:c5c40272ecc3 67 byte = _spi.write((0x19)<<2);
mkelly10 9:d5fcdcb3c89d 68 //send a dummy byte to receive the data
mkelly10 9:d5fcdcb3c89d 69 byte1 = _spi.write(0x0);
mkelly10 9:d5fcdcb3c89d 70 ch1_raw = byte1;
mkelly10 9:d5fcdcb3c89d 71 ch1_filt += (ch1_raw - ch1_filt)/CH1OVERSAMPLE;
mkelly10 9:d5fcdcb3c89d 72
mkelly10 9:d5fcdcb3c89d 73 //switch chip select back to high
mkelly10 9:d5fcdcb3c89d 74 cs = 1;
mkelly10 51:c5c40272ecc3 75 cs = 0;
mkelly10 51:c5c40272ecc3 76
mkelly10 51:c5c40272ecc3 77 byte = _spi.write((0x1A)<<2);
mkelly10 51:c5c40272ecc3 78 //send a dummy byte to receive the data
mkelly10 51:c5c40272ecc3 79 byte1 = _spi.write(0x0);
mkelly10 51:c5c40272ecc3 80 ch2_raw = byte1;
mkelly10 51:c5c40272ecc3 81 ch2_filt += (ch2_raw - ch2_filt)/CH2OVERSAMPLE;
mkelly10 51:c5c40272ecc3 82
mkelly10 51:c5c40272ecc3 83 //switch chip select back to high
mkelly10 51:c5c40272ecc3 84 cs = 1;
mkelly10 51:c5c40272ecc3 85 cs = 0;
mkelly10 51:c5c40272ecc3 86
mkelly10 51:c5c40272ecc3 87 byte = _spi.write((0x1B)<<2);
mkelly10 51:c5c40272ecc3 88 //send a dummy byte to receive the data
mkelly10 51:c5c40272ecc3 89 byte1 = _spi.write(0x0);
mkelly10 51:c5c40272ecc3 90 ch3_raw = byte1;
mkelly10 51:c5c40272ecc3 91 ch3_filt += (ch3_raw - ch3_filt)/CH3OVERSAMPLE;
mkelly10 51:c5c40272ecc3 92
mkelly10 51:c5c40272ecc3 93 //switch chip select back to high
mkelly10 51:c5c40272ecc3 94 cs = 1;
mkelly10 51:c5c40272ecc3 95
mkelly10 51:c5c40272ecc3 96 cs = 0;
mkelly10 51:c5c40272ecc3 97
mkelly10 51:c5c40272ecc3 98 byte = _spi.write((0x1C)<<2);
mkelly10 51:c5c40272ecc3 99 //send a dummy byte to receive the data
mkelly10 51:c5c40272ecc3 100 byte1 = _spi.write(0x0);
mkelly10 51:c5c40272ecc3 101 ch4_raw = byte1;
mkelly10 51:c5c40272ecc3 102 ch4_filt += (ch4_raw - ch4_filt)/CH4OVERSAMPLE;
mkelly10 51:c5c40272ecc3 103
mkelly10 51:c5c40272ecc3 104 //switch chip select back to high
mkelly10 51:c5c40272ecc3 105 cs = 1;
mkelly10 51:c5c40272ecc3 106
mkelly10 51:c5c40272ecc3 107 cs = 0;
mkelly10 51:c5c40272ecc3 108
mkelly10 51:c5c40272ecc3 109 byte = _spi.write((0x1D)<<2);
mkelly10 51:c5c40272ecc3 110 //send a dummy byte to receive the data
mkelly10 51:c5c40272ecc3 111 byte1 = _spi.write(0x0);
mkelly10 51:c5c40272ecc3 112 ch5_raw = byte1;
mkelly10 51:c5c40272ecc3 113 ch5_filt += (ch5_raw - ch5_filt)/CH5OVERSAMPLE;
mkelly10 51:c5c40272ecc3 114
mkelly10 51:c5c40272ecc3 115 //switch chip select back to high
mkelly10 51:c5c40272ecc3 116 cs = 1;
mkelly10 51:c5c40272ecc3 117
mkelly10 51:c5c40272ecc3 118 cs = 0;
mkelly10 51:c5c40272ecc3 119
mkelly10 51:c5c40272ecc3 120 byte = _spi.write((0x1E)<<2);
mkelly10 51:c5c40272ecc3 121 //send a dummy byte to receive the data
mkelly10 51:c5c40272ecc3 122 byte1 = _spi.write(0x0);
mkelly10 51:c5c40272ecc3 123 ch6_raw = byte1;
mkelly10 51:c5c40272ecc3 124 ch6_filt += (ch6_raw - ch6_filt)/CH6OVERSAMPLE;
mkelly10 51:c5c40272ecc3 125
mkelly10 51:c5c40272ecc3 126 //switch chip select back to high
mkelly10 51:c5c40272ecc3 127 cs = 1;
mkelly10 51:c5c40272ecc3 128
mkelly10 51:c5c40272ecc3 129 cs = 0;
mkelly10 51:c5c40272ecc3 130
mkelly10 51:c5c40272ecc3 131 byte = _spi.write((0x1F)<<2);
mkelly10 51:c5c40272ecc3 132 //send a dummy byte to receive the data
mkelly10 51:c5c40272ecc3 133 byte1 = _spi.write(0x0);
mkelly10 51:c5c40272ecc3 134 ch7_raw = byte1;
mkelly10 51:c5c40272ecc3 135 ch7_filt += (ch7_raw - ch7_filt)/CH7OVERSAMPLE;
mkelly10 51:c5c40272ecc3 136
mkelly10 51:c5c40272ecc3 137 //switch chip select back to high
mkelly10 51:c5c40272ecc3 138 cs = 1;
mkelly10 51:c5c40272ecc3 139
mkelly10 9:d5fcdcb3c89d 140 return ;
mkelly10 9:d5fcdcb3c89d 141 }
mkelly10 9:d5fcdcb3c89d 142
danstrider 10:085ab7328054 143 int SpiADC::readCh0() {
mkelly10 9:d5fcdcb3c89d 144 return ch0_filt;
mkelly10 9:d5fcdcb3c89d 145 }
mkelly10 9:d5fcdcb3c89d 146
danstrider 10:085ab7328054 147 int SpiADC::readCh1() {
mkelly10 9:d5fcdcb3c89d 148 return ch1_filt;
mkelly10 51:c5c40272ecc3 149 }
mkelly10 51:c5c40272ecc3 150
mkelly10 51:c5c40272ecc3 151 int SpiADC::readCh2() {
mkelly10 51:c5c40272ecc3 152 return ch2_filt;
mkelly10 51:c5c40272ecc3 153 }
mkelly10 51:c5c40272ecc3 154
mkelly10 51:c5c40272ecc3 155 int SpiADC::readCh3() {
mkelly10 51:c5c40272ecc3 156 return ch3_filt;
mkelly10 51:c5c40272ecc3 157 }
mkelly10 51:c5c40272ecc3 158
mkelly10 51:c5c40272ecc3 159 int SpiADC::readCh4() {
mkelly10 51:c5c40272ecc3 160 return ch4_filt;
mkelly10 51:c5c40272ecc3 161 }
mkelly10 51:c5c40272ecc3 162
mkelly10 51:c5c40272ecc3 163 int SpiADC::readCh5() {
mkelly10 51:c5c40272ecc3 164 return ch5_filt;
mkelly10 51:c5c40272ecc3 165 }
mkelly10 51:c5c40272ecc3 166
mkelly10 51:c5c40272ecc3 167 int SpiADC::readCh6() {
mkelly10 51:c5c40272ecc3 168 return ch6_filt;
mkelly10 51:c5c40272ecc3 169 }
mkelly10 51:c5c40272ecc3 170
mkelly10 51:c5c40272ecc3 171 int SpiADC::readCh7() {
mkelly10 51:c5c40272ecc3 172 return ch7_filt;
tnhnrl 73:f6f378311c8d 173 }
tnhnrl 73:f6f378311c8d 174
tnhnrl 73:f6f378311c8d 175 int SpiADC::readRawCh0() {
tnhnrl 73:f6f378311c8d 176 return ch0_raw;
tnhnrl 73:f6f378311c8d 177 }
tnhnrl 73:f6f378311c8d 178
tnhnrl 73:f6f378311c8d 179 int SpiADC::readRawCh1() {
tnhnrl 73:f6f378311c8d 180 return ch1_raw;
tnhnrl 73:f6f378311c8d 181 }
tnhnrl 73:f6f378311c8d 182
tnhnrl 73:f6f378311c8d 183 int SpiADC::readRawCh2() {
tnhnrl 73:f6f378311c8d 184 return ch2_raw;
tnhnrl 73:f6f378311c8d 185 }
tnhnrl 73:f6f378311c8d 186
tnhnrl 73:f6f378311c8d 187 int SpiADC::readRawCh3() {
tnhnrl 73:f6f378311c8d 188 return ch3_raw;
tnhnrl 73:f6f378311c8d 189 }
tnhnrl 73:f6f378311c8d 190
tnhnrl 73:f6f378311c8d 191 int SpiADC::readRawCh4() {
tnhnrl 73:f6f378311c8d 192 return ch4_raw;
tnhnrl 73:f6f378311c8d 193 }
tnhnrl 73:f6f378311c8d 194
tnhnrl 73:f6f378311c8d 195 int SpiADC::readRawCh5() {
tnhnrl 73:f6f378311c8d 196 return ch5_raw;
tnhnrl 73:f6f378311c8d 197 }
tnhnrl 73:f6f378311c8d 198
tnhnrl 73:f6f378311c8d 199 int SpiADC::readRawCh6() {
tnhnrl 73:f6f378311c8d 200 return ch6_raw;
tnhnrl 73:f6f378311c8d 201 }
tnhnrl 73:f6f378311c8d 202
tnhnrl 73:f6f378311c8d 203 int SpiADC::readRawCh7() {
tnhnrl 73:f6f378311c8d 204 return ch7_raw;
tnhnrl 73:f6f378311c8d 205 }