From cd36ba7fc3783585d9622fccaffc678eb7564912 Mon Sep 17 00:00:00 2001 From: Paul Goeser Date: Fri, 10 Dec 2010 12:58:32 +0100 Subject: [PATCH] small fixes in mcp_adc --- firmware/Makefile | 5 ++++- firmware/avrbuild/Makefile.avrbuild | 2 -- firmware/mcp_adc.c | 12 ++++++------ 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/firmware/Makefile b/firmware/Makefile index 0abeb0f..a8fbe3f 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -1,7 +1,10 @@ DEFINES += -DF_CPU=16000000 CFLAGS += -save-temps +CFLAGS += -std=gnu99 # implements C99, for +# this removes dead code and does global linker optimization +#CFLAGS += -ffunction-sections -Wl,--gc-sections -Wl,--relax -OBJECTS = usbdrv/usbdrvasm.o usbdrv/usbdrv.o main.o display.o lcd/lcd.o +OBJECTS = usbdrv/usbdrvasm.o usbdrv/usbdrv.o main.o display.o lcd/lcd.o mcp_adc.o diff --git a/firmware/avrbuild/Makefile.avrbuild b/firmware/avrbuild/Makefile.avrbuild index 1909a4d..2203457 100644 --- a/firmware/avrbuild/Makefile.avrbuild +++ b/firmware/avrbuild/Makefile.avrbuild @@ -2,8 +2,6 @@ CFLAGS += -Wall -Os -I. -mmcu=atmega88 # further optimization: -# this removes dead code and does global linker optimization -CFLAGS += -ffunction-sections -Wl,--gc-sections -Wl,--relax #CFLAGS += --param inline-call-cost=2 CFLAGS += -fno-move-loop-invariants # suggestions from from v-usb CFLAGS += -fno-tree-scev-cprop diff --git a/firmware/mcp_adc.c b/firmware/mcp_adc.c index 0e8a58a..addc539 100644 --- a/firmware/mcp_adc.c +++ b/firmware/mcp_adc.c @@ -1,4 +1,4 @@ -#include +#include /* 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;