/** Модуль функций АЦП
 * adc.h
 *
 *
 *  Created on: 22.07.2010
 *      Author: ARV
 */
#include <avr_helper.h>

#ifndef ADC_H_
#define ADC_H_

/// Значение напряжения*10 питания ниже которого считаем что села батарейка (разряжена до минимума)
#define BATTERY_LOW		25

/// Значение напряжения*10 питания выше которого батарея не может зарядится (заряжена до максимума)
#define BATTERY_HIGHT	42

/// Значение напряжения*10 питания ниже которого требуется ее зарадка
#define BATTERY_LOW_NOTIFICATION	28

/// Величина добавляемая к результатам перевода в вольты значений с АЦП (может быть отрицательной)
// делал поправку ориентируюсь на свой мультиметр MY-68
#define ADC_RESULT_ADJUSTMENT	-2

// состояние регистра ADMUX для измерения уровня заряда батареи
//источник опорного напряжения - AVCC with external capacitor at AREF pin,  Channel Selection=VBG
#define ADMUX_BATTERY_METER (_BV(REFS0)|_BV(MUX3)|_BV(MUX2)|_BV(MUX1))

// величина напряжения для канала ADC_BANDGAP, помноженое на 10
#define ADC_BANDGAP_VALUE	13

// автоматическая инициализация модуля
extern void adc_init(void);
extern void adc_powerdown();
extern int8_t get_adc_status();
extern uint8_t start_adc(uint8_t channel);
extern int16_t get_adc_result(void);
extern uint8_t get_battery_low(void);
extern uint16_t get_battery_voltage(void);
extern uint16_t get_battery_adc(void);

#endif /* ADC_H_ */
