/* ============================================================
Curso de Arduino
Conversão AD a partir dos registradores do Atmega328p
Compilador: Arduino IDE 1.8.4
MCU: Atmega328p
Autor: Eng. Wagner Rambo
Data: Julho de 2020
============================================================ */
// ============================================================
// --- Protótipo das Funções ---
int ad_conv(); //função para conversão AD - pg 251
// ============================================================
// --- Configurações Iniciais ---
void setup()
{
Serial.begin(9600); //inicializa comunicação serial em 9600 baud rate
ADCSRA = 0x93; //liga conversão AD, fator de divisão de 8 -pg263
ADMUX = 0x43; //tensão de ref. de 5V, canal A3 - pg262
} //end setup
// ============================================================
// --- Loop Infinito ---
void loop()
{
Serial.println(ad_conv());
delay(250);
} //end loop
// ============================================================
// --- Configurações Iniciais ---
int ad_conv()
{
static int analogH, analogL, analog; //variáveis locais para valores ADC
ADCSRA |= (1<<ADSC); //inicia conversão ad
while(!(ADCSRA &= ~(1<<ADIF))); //aguarda conversão ad completar
ADCSRA |= (1<<ADIF); //limpa ADIF com transição LOW para HIGH
analogL = ADCL; //armazena o byte menos significativo
analogH = ADCH; //armazena o byte mais significativo
analog = (analogH<<8) | analogL; //calcula para valor de 10 bits
return analog; //retorna resultado da conversão
} //end ad_conv