moved r from stack to bss

master
Nidan 15 years ago
parent cd36ba7fc3
commit db6925147b

@ -21,6 +21,8 @@
#define ADC_ADDR 0xD0 /* or 0x68 */ #define ADC_ADDR 0xD0 /* or 0x68 */
uint8_t r[4];
void mcpadc_init(uint8_t mode) void mcpadc_init(uint8_t mode)
{ {
i2c_write(ADC_ADDR, 1, &mode); i2c_write(ADC_ADDR, 1, &mode);
@ -28,7 +30,6 @@ void mcpadc_init(uint8_t mode)
uint8_t mcpadc_has_new_data() 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 */ i2c_read(ADC_ADDR, 4, r);/* 4 bytes are only needed in 18 bit mode */
return(r[3] & ADC_NEW_SAMPLE); return(r[3] & ADC_NEW_SAMPLE);
} }
@ -36,7 +37,6 @@ uint8_t mcpadc_has_new_data()
#if ADC_ENABLE_18_BIT_MODE #if ADC_ENABLE_18_BIT_MODE
int32_t mcpadc_get_data() int32_t mcpadc_get_data()
{ {
uint8_t r[4] = {0,0,0,0};
int32_t value = 0; int32_t value = 0;
i2c_read(ADC_ADDR, 4, r);/* reading 4 bytes guarantees us one config byte */ i2c_read(ADC_ADDR, 4, r);/* reading 4 bytes guarantees us one config byte */
if(r[0] & 0x80) {value = 0xffff;} if(r[0] & 0x80) {value = 0xffff;}
@ -50,7 +50,6 @@ int32_t mcpadc_get_data()
#else #else
int16_t mcpadc_get_data() int16_t mcpadc_get_data()
{ {
uint8_t r[2] = {0,0};
i2c_read(ADC_ADDR, 2, r);/* this will NOT work in 18 bit mode */ i2c_read(ADC_ADDR, 2, r);/* this will NOT work in 18 bit mode */
int16_t value = (r[0] << 8) | r[1];/*endianess ???*/ int16_t value = (r[0] << 8) | r[1];/*endianess ???*/
return r; return r;
@ -59,7 +58,6 @@ int16_t mcpadc_get_data()
void mcpadc_start_conv() void mcpadc_start_conv()
{ {
uint8_t r[4];
i2c_read(ADC_ADDR, 4, r); i2c_read(ADC_ADDR, 4, r);
r[3] |= ADC_NEW_SAMPLE; r[3] |= ADC_NEW_SAMPLE;
i2c_write(ADC_ADDR, 1, &(r[3])); i2c_write(ADC_ADDR, 1, &(r[3]));

Loading…
Cancel
Save