Modbus_1_Deva4ki/device_adc.c

37 lines
1003 B
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "device_adc.h"
uint16_t value = 0;
char high_adc = 0, low_adc = 0;
ISR(ADC_vect)
{
low_adc = ADCL;
high_adc = ADCH;
value = (high_adc << 8) | low_adc;
}
void adc_init(void)
{
// Опорное напряжение на входе AREF
ADMUX &= ~REFS0_MASK;
// Выравнивание результата вправо
ADMUX &= ~ADLAR_MASK;
// Коммутация выбранного входа с АЦП (ADC0)
ADMUX &= ~(MUX3_MASK | MUX2_MASK | MUX1_MASK | MUX0_MASK);
// Разерешение работы АЦП
ADCSRA |= ADEN_MASK;
// Запуск работы АЦП
ADCSRA |= ADSC_MASK;
// Предделитель частоты (128)
ADCSRA |= ADPS2_MASK | ADPS1_MASK | ADPS0_MASK;
// Разрешение прерывания от АЦП
ADCSRA |= ADIE_MASK;
// Непрерывный режим работы АЦП
ADCSRA |= ADATE_MASK;
sei();
}
uint16_t get_adc_value(void)
{
return value;
}