From 10e2ab9277aa92da666934b9505b573a8cdbc3ce Mon Sep 17 00:00:00 2001 From: Dario Ernst Date: Mon, 25 Jul 2011 21:19:39 +0200 Subject: [PATCH] cleaned old offsetcode, made new --- firmware/slavechip/Makefile | 2 +- firmware/slavechip/main.c | 37 ++++++++++++++----------------- firmware/slavechip/main.h | 2 -- firmware/slavechip/muxer.c | 22 ------------------ firmware/slavechip/muxer.h | 5 ----- firmware/slavechip/spi_pointers.c | 5 ++++- 6 files changed, 22 insertions(+), 51 deletions(-) diff --git a/firmware/slavechip/Makefile b/firmware/slavechip/Makefile index 0307efb..7df9d46 100644 --- a/firmware/slavechip/Makefile +++ b/firmware/slavechip/Makefile @@ -8,7 +8,7 @@ CFLAGS += -ffunction-sections -Wl,--gc-sections -Wl,--relax COMPILE = avr-gcc $(CFLAGS) $(DEFINES) -OBJECTS = main.o mcp_adc.o i2c_simple.o softtimer.o spi_proto.o spi.o spi_pointers.o muxer.o debug.o filter.o ringbuf_small.o +OBJECTS = main.o mcp_adc.o i2c_simple.o softtimer.o spi_proto.o spi.o spi_pointers.o muxer.o debug.o filter.o ringbuf_small.o offset.o # symbolic targets: all: firmware.hex diff --git a/firmware/slavechip/main.c b/firmware/slavechip/main.c index 0fd4dfb..cd9a032 100644 --- a/firmware/slavechip/main.c +++ b/firmware/slavechip/main.c @@ -5,12 +5,12 @@ #include "mcp_adc.h" #include "debug.h" #include "filter.h" +#include "offset.h" #include #include #include - uint16_t timertmp; uint16_t temperatures[4]; @@ -21,9 +21,6 @@ uint16_t temperatures[4]; * - multiplexer: * C3: inhibit * C0-C2: muxer select - * - offset measurement - * D0-D3 offset compensation - * * * amp 0 is on muxer channel 2 */ @@ -39,7 +36,6 @@ void hardinit() { spi_init(); muxer_init(); - offset_measure_init(); i2c_init(); @@ -65,6 +61,8 @@ int __attribute__((noreturn)) main(void) { int16_t data; for(;;){ printf("====== loop iteration\n"); + + // measure temps 5*2 times for(uint8_t i=0; i<5; i++) { @@ -82,22 +80,21 @@ int __attribute__((noreturn)) main(void) { } } - printf("====== now measuring offsets\n"); // measure 2 offsets - for(uint8_t active_sensor=0; active_sensor<2; active_sensor++) { // only measuring two offsets atm - printf("=== active sensor: %i\n",active_sensor); - muxer_set(active_sensor); - offset_measure_start(active_sensor); - while(!mcpadc_has_new_data()) _delay_ms(10); - mcpadc_get_data(); // first data after switch to trash - while(!mcpadc_has_new_data()) _delay_ms(10); - - data = mcpadc_get_data(); - printf("retrieved offset data %i\n", data); - // TODO: what to do with the offset? - - offset_measure_stop(); - } + for(uint8_t active_sensor=0; active_sensor<2; active_sensor++) + if(offset_measure[active_sensor]) { + printf("=== measuring offset, sensor: %i\n",active_sensor); + muxer_set(active_sensor); + while(!mcpadc_has_new_data()) _delay_ms(10); + mcpadc_get_data(); // first data after switch to trash + while(!mcpadc_has_new_data()) _delay_ms(10); + + offset_val[active_sensor] = mcpadc_get_data(); + + while(offset_measure[active_sensor]) { + offset_val[active_sensor] += mcpadc_get_data(); + } + } // measure ambient printf("====== now measuring ambient\n"); diff --git a/firmware/slavechip/main.h b/firmware/slavechip/main.h index 3344c5c..3df4080 100644 --- a/firmware/slavechip/main.h +++ b/firmware/slavechip/main.h @@ -14,7 +14,5 @@ #include "softtimer.h" #include "debug.h" -extern uint16_t timertmp; -extern uint16_t temperatures[]; #endif //__MAIN_H diff --git a/firmware/slavechip/muxer.c b/firmware/slavechip/muxer.c index 8671753..6f6ee06 100644 --- a/firmware/slavechip/muxer.c +++ b/firmware/slavechip/muxer.c @@ -11,8 +11,6 @@ void muxer_init(){ DDRC |= (_BV(0)|_BV(1)|_BV(2)|_BV(3)); // conf as outputs PORTC |= _BV(3); // inhibit - // for good measure call the offset init, calling it twice doesn't hurt - offset_measure_init(); } void muxer_set(uint8_t channel){ @@ -32,23 +30,3 @@ uint8_t inline muxer_channel_to_selectbits(uint8_t channel){ } return(table[channel]); } - -void offset_measure_init(){ - DDRD |= 0x0f; // first 4 pins as output -// PORTD = 0x00; // turn everything off -} - -void offset_measure_start(uint8_t channel){ - if(channel > 3){ - return; - } - PORTD |= (1<