From 0b8d418ed57db39c20e12fb3e92b3a39283c45d4 Mon Sep 17 00:00:00 2001 From: Dario Ernst Date: Wed, 26 Jan 2011 22:27:10 +0100 Subject: [PATCH] muxer started --- firmware/shared/spi.c | 2 +- firmware/slavechip/Makefile | 2 +- firmware/slavechip/main.c | 14 ++++++++++++++ firmware/slavechip/muxer.c | 16 ++++++++++++++++ firmware/slavechip/muxer.h | 6 ++++++ 5 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 firmware/slavechip/muxer.c create mode 100644 firmware/slavechip/muxer.h diff --git a/firmware/shared/spi.c b/firmware/shared/spi.c index 0e3954a..2077c82 100644 --- a/firmware/shared/spi.c +++ b/firmware/shared/spi.c @@ -8,7 +8,7 @@ #include "main.h" -#include +#include "spi.h" /* SPI framework. * diff --git a/firmware/slavechip/Makefile b/firmware/slavechip/Makefile index aff2bd3..29f0cb2 100644 --- a/firmware/slavechip/Makefile +++ b/firmware/slavechip/Makefile @@ -2,7 +2,7 @@ include ../Makefile.inc COMPILE = avr-gcc $(CFLAGS) $(DEFINES) -OBJECTS = main.o mcp_adc.o i2c_simple.o softtimer.o spi_proto.o spi.o spi_pointers.o +OBJECTS = main.o mcp_adc.o i2c_simple.o softtimer.o spi_proto.o spi.o spi_pointers.o muxer.o # symbolic targets: all: firmware.hex diff --git a/firmware/slavechip/main.c b/firmware/slavechip/main.c index 358adc5..cd2a450 100644 --- a/firmware/slavechip/main.c +++ b/firmware/slavechip/main.c @@ -1,5 +1,6 @@ #include "main.h" #include "spi.h" +#include "muxer.h" uint8_t foo; uint16_t bar; @@ -8,6 +9,17 @@ void baz() { foo++; } +/* pinout + * - i2c: + * C5 + * C4 + * - multiplexer: + * C3: inhibit + * C0-C2: muxer select + * + * + * amp 0 is on muxer channel 2 + */ void hardinit() { /* initializes the hardware */ @@ -19,6 +31,8 @@ void hardinit() { spi_init(); + muxer_init(); + sei(); } diff --git a/firmware/slavechip/muxer.c b/firmware/slavechip/muxer.c new file mode 100644 index 0000000..53fecd4 --- /dev/null +++ b/firmware/slavechip/muxer.c @@ -0,0 +1,16 @@ +#include "muxer.h" +#include + +void muxer_init(){ + DDRC |= (_BV(0)|_BV(1)|_BV(2)|_BV(3)); // conf as outputs + PORTC |= _BV(3); // inhibit +} + +void muxer_set(uint8_t channel){ + PORTC |= _BV(3); // engage inhibit + PORTC &= ~(0x07); //mask + PORTC |= channel & 0x07; //set + PORTC &= ~(_BV(3)); // disengage inhibit + //TODO: delays, check everything, mask in register +} + diff --git a/firmware/slavechip/muxer.h b/firmware/slavechip/muxer.h new file mode 100644 index 0000000..82d04b3 --- /dev/null +++ b/firmware/slavechip/muxer.h @@ -0,0 +1,6 @@ +//TODO:guards + +#include + +void muxer_init(); +void muxer_set(uint8_t channel);