#include "muxer.h" #include /***************** * themor-sensors are channels 0-3 * * pt1000 is on channel 5 */ 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){ uint8_t selectbits = muxer_channel_to_selectbits(channel); PORTC |= _BV(3); // engage inhibit PORTC &= ~(0x07); //mask PORTC |= selectbits & 0x07; //set PORTC &= ~(_BV(3)); // disengage inhibit //TODO: delays, check everything, mask in register } uint8_t inline muxer_channel_to_selectbits(uint8_t channel){ static uint8_t table[] = {2,1,0,3}; if(channel>=4){ return 0; } return(table[channel]); }