|
|
|
|
@ -1,4 +1,4 @@
|
|
|
|
|
#include <sys/types.h>
|
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
|
|
/* analog digital converter
|
|
|
|
|
* scratchpad
|
|
|
|
|
@ -23,20 +23,20 @@
|
|
|
|
|
|
|
|
|
|
void mcpadc_init(uint8_t mode)
|
|
|
|
|
{
|
|
|
|
|
i2c_write(ADC_ADDR, 1, &mode))
|
|
|
|
|
i2c_write(ADC_ADDR, 1, &mode);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint8_t mcpadc_has_new_data()
|
|
|
|
|
{
|
|
|
|
|
uint8_t r[4];
|
|
|
|
|
i2c_read(ADC_ADDR, 4, r)/* 4 bytes are only needed in 18 bit mode */
|
|
|
|
|
return r[3] & ADC_NEW_SAMPLE;
|
|
|
|
|
i2c_read(ADC_ADDR, 4, r);/* 4 bytes are only needed in 18 bit mode */
|
|
|
|
|
return(r[3] & ADC_NEW_SAMPLE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if ADC_ENABLE_18_BIT_MODE
|
|
|
|
|
int32_t mcpadc_get_data()
|
|
|
|
|
{
|
|
|
|
|
uint8_t r[4] = 0;
|
|
|
|
|
uint8_t r[4] = {0,0,0,0};
|
|
|
|
|
int32_t value = 0;
|
|
|
|
|
i2c_read(ADC_ADDR, 4, r);/* reading 4 bytes guarantees us one config byte */
|
|
|
|
|
if(r[0] & 0x80) {value = 0xffff;}
|
|
|
|
|
@ -50,7 +50,7 @@ int32_t mcpadc_get_data()
|
|
|
|
|
#else
|
|
|
|
|
int16_t mcpadc_get_data()
|
|
|
|
|
{
|
|
|
|
|
uint8_t r[2] = 0;
|
|
|
|
|
uint8_t r[2] = {0,0};
|
|
|
|
|
i2c_read(ADC_ADDR, 2, r);/* this will NOT work in 18 bit mode */
|
|
|
|
|
int16_t value = (r[0] << 8) | r[1];/*endianess ???*/
|
|
|
|
|
return r;
|
|
|
|
|
|