#include #include #include #include #if !defined (__SIMPLE_ADC__) uint8_t _adc_bank; union bits32 adc_bits; #endif uint8_t _adc_ch; struct adc adc; uint8_t _adc_wdog; uint8_t _adc_wdog_flag; union bits32 adc_bits; void adc_init(uint8_t bank) { #if !defined (__SIMPLE_ADC__) uint8_t n; if (eeprom_load( bank, &adc.eeprom )) { for (n=0;n= adc.params[_adc_ch].max) { adc.channels[_adc_ch].value = -1; } else if (adc.params[_adc_ch].min | (adc.params[_adc_ch].max != -1)) { adc_bits.ui16[1] -= adc.params[_adc_ch].min; adc.channels[_adc_ch].value = (adc_bits.ui32) / (adc.params[_adc_ch].max - adc.params[_adc_ch].min); } else { adc.channels[_adc_ch].value = adc_bits.ui16[1]; }; #else adc.channels[_adc_ch].raw = ADC; #endif _adc_ch++; if (_adc_ch >= ADC_CHANNELS) _adc_ch = 0x00; ADMUX = (ADMUX & 0xE0) | _adc_ch; ADCSRA |= _BV(ADSC); _adc_wdog = 5; };