Atmega (AVR) работа с АЦП (или создаём вольтметр)

АЦП или Аналого Цифровое Преобразование. Как ни странно, преобразует аналоговое значение напряжения в цифровое, с которым удобнее работать микроконтроллеру.

Далее читайте запись в формате PDF:
Смотреть или скачать PDF Atmega (AVR) работа с АЦП (или создаём вольтметр)

Код вольтметра на Си на Atmega8:

#include <avr io.h>
#include <avr interrupt.h>
 
//прерывание
ISR(ADC_vect)
{    
 unsigned int ADCdata, voltage_0, voltage, voltage_2, voltage_3;
 ADCdata = ADCW; // В ADCW хранится напряжение в двоичном коде
 voltage_0 = ADCdata * 48875 / 10000; // 5 вольт / 1023 = 4.8875
 voltage = voltage_0 % 10000 / 1000;  
 voltage_2 = voltage_0 % 1000 / 100;
 voltage_3 = voltage_0 % 100 / 10;
 
 
 PORTC = voltage;
 PORTD = voltage_2;
 PORTB = voltage_3;
 
 ADCSRA = ADCSRA | 0x40;// Регистр для начала нового преобразования 0b01000000
}
 
int main (void)
{
 DDRB = 0xFF;
 DDRD = 0xFF;
 DDRC = 0xFF;
 ADMUX = 0x00; // PA0
 ADCSRA = 0b11001110; 
 
 PORTB = 0x00;
 PORTD = 0x00;
 PORTC = 0x00;
  
 sei();
 while(1); 
}

Подаем напряжение на PA0. Затем преобразуем его в цифровое, и выдаем нужные значения в порты в двоичном коде. Целые в Port B, десятые в Port C и сотые в Port D.
То есть у нас 2,35 Вольта.

Добавить комментарий