70 #define BAUD_RATE 2400
139 static int sign[2]={1,1}, avg[2], adc_cnt = 0;
140 static unsigned char mux[]={
142 _BV(ADLAR) | _BV(REFS0) |
IR_LEFT,
143 _BV(ADLAR) | _BV(REFS0) |
SWITCH,
144 _BV(ADLAR) | _BV(REFS0) |
BATTERIE | _BV(REFS1),
150 unsigned int sensor = ADCL | (ADCH << 8);
158 avg[adc_cnt] += (s-avg[adc_cnt])>>2;
162 if (sign[adc_cnt]*(s-avg[adc_cnt]) > 2)
167 sign[adc_cnt] = -sign [adc_cnt];
176 ADMUX = mux[adc_cnt];
177 adc_cnt=(adc_cnt+1) %
sizeof(mux);
235 #if defined(__AVR_ATmega168__)
237 TCCR2A = _BV(WGM20) | _BV(WGM21) | _BV(COM2A0) | _BV(COM2A1);
240 TIMSK2 |= _BV(TOIE2);
243 TCCR2 = _BV(WGM20) | _BV(WGM21) | _BV(COM20) | _BV(COM21) | _BV(CS20);
254 #if defined(__AVR_ATmega168__)
255 UBRR0L = (uint8_t)(F_CPU/(
BAUD_RATE*16L)-1);
257 UCSR0B = (1<<RXEN0) | (1<<TXEN0);
258 UCSR0C = (1<<UCSZ00) | (1<<UCSZ01);
262 UCSRB = (1<<RXEN)|(1<<TXEN);
263 UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
282 TCCR1A = _BV(WGM10) | _BV(COM1A1) | _BV(COM1B1);
309 DDRC &= ~ (_BV(PC0) | _BV(PC1));
327 ADCSRA = _BV(ADEN) | _BV(ADFR) | _BV(ADIE) | _BV(ADSC) | _BV(ADPS0) | _BV(ADPS1) | _BV(ADPS2);
370 #if defined(__AVR_ATmega168__)