program for external ADC ADS8320 Based on the program for the SCP1000. Still figuring out timing issues

Dependencies:   mbed

Committer:
marcelvandekamp
Date:
Fri Feb 18 13:46:46 2011 +0000
Revision:
0:918a2b064be6
V3

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marcelvandekamp 0:918a2b064be6 1
marcelvandekamp 0:918a2b064be6 2
marcelvandekamp 0:918a2b064be6 3 #include "ads8320.h"
marcelvandekamp 0:918a2b064be6 4
marcelvandekamp 0:918a2b064be6 5 ads8320::ads8320(PinName mosi, PinName miso, PinName sclk, PinName cs)
marcelvandekamp 0:918a2b064be6 6 : m_spi(mosi, miso, sclk)
marcelvandekamp 0:918a2b064be6 7 , m_cs(cs) {
marcelvandekamp 0:918a2b064be6 8 m_cs=1;
marcelvandekamp 0:918a2b064be6 9 m_spi.frequency(1000000); // the fastest of the sensor
marcelvandekamp 0:918a2b064be6 10 m_spi.format(8, 0); // duda son dos palabras de 8 bits?
marcelvandekamp 0:918a2b064be6 11 // wait(0.5);
marcelvandekamp 0:918a2b064be6 12 //------------------------------------------------
marcelvandekamp 0:918a2b064be6 13 // pc.printf("RESET\r\n");
marcelvandekamp 0:918a2b064be6 14 write_register(0x06,0x01);
marcelvandekamp 0:918a2b064be6 15 // wait(0.5);
marcelvandekamp 0:918a2b064be6 16
marcelvandekamp 0:918a2b064be6 17 // pc.printf("Initialize High Resolution Constant Reading Mode\r\n");
marcelvandekamp 0:918a2b064be6 18 write_register(0x03,0x0A);
marcelvandekamp 0:918a2b064be6 19 //wait(0.5);
marcelvandekamp 0:918a2b064be6 20 }
marcelvandekamp 0:918a2b064be6 21
marcelvandekamp 0:918a2b064be6 22
marcelvandekamp 0:918a2b064be6 23 unsigned int ads8320::readTemperature() { //was float
marcelvandekamp 0:918a2b064be6 24 unsigned int temp_in = read_register16(TEMP);
marcelvandekamp 0:918a2b064be6 25 // temp_in /= 20;
marcelvandekamp 0:918a2b064be6 26 unsigned int Ti = temp_in;
marcelvandekamp 0:918a2b064be6 27 return Ti; //return temp_in;
marcelvandekamp 0:918a2b064be6 28 }
marcelvandekamp 0:918a2b064be6 29
marcelvandekamp 0:918a2b064be6 30 void ads8320::write_register(char register_name, char register_value) {
marcelvandekamp 0:918a2b064be6 31 register_name <<= 2;
marcelvandekamp 0:918a2b064be6 32 register_name |= 0x02; //write command
marcelvandekamp 0:918a2b064be6 33 m_cs=0; //Select SPI device
marcelvandekamp 0:918a2b064be6 34 m_spi.write(register_name); //Send register location
marcelvandekamp 0:918a2b064be6 35 m_spi.write(register_value); //Send value to record into register
marcelvandekamp 0:918a2b064be6 36 m_cs=1;
marcelvandekamp 0:918a2b064be6 37 }
marcelvandekamp 0:918a2b064be6 38
marcelvandekamp 0:918a2b064be6 39 unsigned int ads8320::read_register16(char register_name) {
marcelvandekamp 0:918a2b064be6 40 register_name <<= 2;
marcelvandekamp 0:918a2b064be6 41 register_name &= 0xFC; //Read command
marcelvandekamp 0:918a2b064be6 42 m_cs=0; //Select SPI Device
marcelvandekamp 0:918a2b064be6 43 m_spi.write(register_name); //Write byte to device
marcelvandekamp 0:918a2b064be6 44 unsigned int in_byte1 = m_spi.write(0x00); //(was zonder unsigned)
marcelvandekamp 0:918a2b064be6 45 unsigned int in_byte2 = m_spi.write(0x00);
marcelvandekamp 0:918a2b064be6 46 m_cs=1;
marcelvandekamp 0:918a2b064be6 47 //float in_word= (in_byte1<<=8) | (in_byte2);
marcelvandekamp 0:918a2b064be6 48 unsigned int in_word= (in_byte1<<=8) | (in_byte2);
marcelvandekamp 0:918a2b064be6 49 return(in_word);
marcelvandekamp 0:918a2b064be6 50 }