Microcontroladores 2 EL08D Turma M12
Transcript of Microcontroladores 2 EL08D Turma M12
Conversor Analógico-Digital
Microcontroladores 2EL08D
Turma M12
Prof. Gabriel KovalhukE-mail: [email protected]
Site: http://paginapessoal.utfpr.edu.br/kovalhuk
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Conversor Analógico-Digital
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Características
• Conversor de aproximação sucessiva de 10 bits (precisa de 2
bytes para armazenar o resultado);
• 6 entradas externas multiplexadas no ATMEGA328P na versão
DIP;
• 3 entradas internas, sendo uma delas ligada a um sensor de
temperatura (interno);
• Tempo de conversão entre 13us e 260us, permitindo conversões
de até 75kSPS;
• Tensão de entrada entre 0 e Vcc;
• Pode gerar uma interrupção quando a conversão terminou;
• Modo de conversão simples ou contínua;
AD
PS
0REFS1
AD
PS
2
AD
PS
1
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Diagrama em Blocos
INPUT
MUX
ADC0
ADC1
ADC2
ADC3
ADC4
ADC6*
ADC7*
BANDGAP
REFERENCE
TEMPERATURE
SENSOR
ADC5
GND
AREF
INTERNAL 1.1V
REFERENCE
AVCC
10 BIT DAC
MUX DECODER+
-
CONVERSION LOGIC
ADC CTRL & STATUS REGISTER
(ADCSRA)
AD
EN
AD
SC
AD
FR
AD
IF
PRESCALER
ADC DATA REGISTER
(ADCH/ADCL)
AD
C[9
:0]
MU
X0
MU
X1
MU
X2
MU
X3
AD
LA
RREFS0
ADC MULTIPLEXER SELECT
(ADMUX)
8-BIT DATA BUS
AD
IF
AD
IE
ADC MULTIPLEXER
OUTPUT
SAMPLE & HOLD
COMPARATOR
CHANNEL
SELECTIONADC CONVERSION
COMPLETE IRQ
PINO
SINAL INTERNO
BARRAMENTO
LEGENDA
* Os pinos ADC6 e ADC7 somente
estão disponíveis nas versões
TQFP e QFN do ATMEGA328P
Alterado de ATmega48A/PA/88A/PA/168A/PA/328/P (datasheet)
4 bits
8 bits
AD
PS
0REFS1
AD
PS
2
AD
PS
1
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Diagrama em Blocos
INPUT
MUX
ADC0
ADC1
ADC2
ADC3
ADC4
ADC6*
ADC7*
BANDGAP
REFERENCE
TEMPERATURE
SENSOR
ADC5
GND
AREF
INTERNAL 1.1V
REFERENCE
AVCC
10 BIT DAC
MUX DECODER+
-
CONVERSION LOGIC
ADC CTRL & STATUS REGISTER
(ADCSRA)
AD
EN
AD
SC
AD
FR
AD
IF
PRESCALER
ADC DATA REGISTER
(ADCH/ADCL)
AD
C[9
:0]
MU
X0
MU
X1
MU
X2
MU
X3
AD
LA
RREFS0
ADC MULTIPLEXER SELECT
(ADMUX)
8-BIT DATA BUS
AD
IF
AD
IE
ADC MULTIPLEXER
OUTPUT
SAMPLE & HOLD
COMPARATOR
CHANNEL
SELECTIONADC CONVERSION
COMPLETE IRQ
PINO
SINAL INTERNO
BARRAMENTO
LEGENDA
* Os pinos ADC6 e ADC7 somente
estão disponíveis nas versões
TQFP e QFN do ATMEGA328P
Alterado de ATmega48A/PA/88A/PA/168A/PA/328/P (datasheet)
4 bits
8 bits
Conversor por aproximação
sucessiva
AD
PS
0REFS1
AD
PS
2
AD
PS
1
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Diagrama em Blocos
INPUT
MUX
ADC0
ADC1
ADC2
ADC3
ADC4
ADC6*
ADC7*
BANDGAP
REFERENCE
TEMPERATURE
SENSOR
ADC5
GND
AREF
INTERNAL 1.1V
REFERENCE
AVCC
10 BIT DAC
MUX DECODER+
-
CONVERSION LOGIC
ADC CTRL & STATUS REGISTER
(ADCSRA)
AD
EN
AD
SC
AD
FR
AD
IF
PRESCALER
ADC DATA REGISTER
(ADCH/ADCL)
AD
C[9
:0]
MU
X0
MU
X1
MU
X2
MU
X3
AD
LA
RREFS0
ADC MULTIPLEXER SELECT
(ADMUX)
8-BIT DATA BUS
AD
IF
AD
IE
ADC MULTIPLEXER
OUTPUT
SAMPLE & HOLD
COMPARATOR
CHANNEL
SELECTIONADC CONVERSION
COMPLETE IRQ
PINO
SINAL INTERNO
BARRAMENTO
LEGENDA
* Os pinos ADC6 e ADC7 somente
estão disponíveis nas versões
TQFP e QFN do ATMEGA328P
Alterado de ATmega48A/PA/88A/PA/168A/PA/328/P (datasheet)
4 bits
8 bitsRegistrador de
configuração
Registrador de
dadosRegistrador de
configuração dos MUX
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Configurações
• Seleção das Entradas:
• A entrada analógica a ser convertida para digital é selecionada
pelos bits MUX3 a MUX0 do registrador ADCMUX;
• Para se mudar o canal de entrada, deve-se desabilitar o
conversor AD, zerando o bit ADEN do registrador ADCSRA.
MUX3:0 Entrada MUX3:0 Entrada
0000 ADC0 1000 Sensor de Temperatura
0001 ADC1 1110 Ref. Interna de 1,1v
0010 ADC2 1111 GND
0011 ADC3 Demais combinações dos bits MUX3:0 são reservadas
0100 ADC4
0101 ADC5
AD
PS
0REFS1
AD
PS
2
AD
PS
1
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Diagrama em Blocos
INPUT
MUX
ADC0
ADC1
ADC2
ADC3
ADC4
ADC6*
ADC7*
BANDGAP
REFERENCE
TEMPERATURE
SENSOR
ADC5
GND
AREF
INTERNAL 1.1V
REFERENCE
AVCC
10 BIT DAC
MUX DECODER+
-
CONVERSION LOGIC
ADC CTRL & STATUS REGISTER
(ADCSRA)
AD
EN
AD
SC
AD
FR
AD
IF
PRESCALER
ADC DATA REGISTER
(ADCH/ADCL)
AD
C[9
:0]
MU
X0
MU
X1
MU
X2
MU
X3
AD
LA
RREFS0
ADC MULTIPLEXER SELECT
(ADMUX)
8-BIT DATA BUS
AD
IF
AD
IE
ADC MULTIPLEXER
OUTPUT
SAMPLE & HOLD
COMPARATOR
CHANNEL
SELECTIONADC CONVERSION
COMPLETE IRQ
PINO
SINAL INTERNO
BARRAMENTO
LEGENDA
* Os pinos ADC6 e ADC7 somente
estão disponíveis nas versões
TQFP e QFN do ATMEGA328P
Alterado de ATmega48A/PA/88A/PA/168A/PA/328/P (datasheet)
4 bits
8 bits
En
trad
as e
xte
rnas
En
trad
as
inte
rnas
MUX de
seleção das
Entradas
0000
0001
0010
0011
0100
0101
1110
1111
1000
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Configurações
• Seleção da Tensão de Referência:
• Os bits REFS1 e REFS0 do registrador ADMUX selecionam a
tensão de referência do ADC;
• A tensão de referência determina a faixa de valores que serão
convertidos;
• O resultado da conversão é dado por: 𝑉𝐷𝐼𝐺𝐼𝑇𝐴𝐿 =𝑉𝑖∙1024
𝑉𝑅𝐸𝐹, onde
VDIGITAL é um valor entre 0 e 0x3FF
RESF1 RESF0 Tensão de Referência
0 0 Tensão de referência interna desativada
0 1 Tensão de referência AVcc
1 0 Reservado
1 1 Tensão de referência interna de 1,1v
AD
PS
0REFS1
AD
PS
2
AD
PS
1
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Diagrama em Blocos
INPUT
MUX
ADC0
ADC1
ADC2
ADC3
ADC4
ADC6*
ADC7*
BANDGAP
REFERENCE
TEMPERATURE
SENSOR
ADC5
GND
AREF
INTERNAL 1.1V
REFERENCE
AVCC 0
1
10 BIT DAC
MUX DECODER+
-
CONVERSION LOGIC
ADC CTRL & STATUS REGISTER
(ADCSRA)
AD
EN
AD
SC
AD
FR
AD
IF
PRESCALER
ADC DATA REGISTER
(ADCH/ADCL)
AD
C[9
:0]
MU
X0
MU
X1
MU
X2
MU
X3
AD
LA
RREFS0
ADC MULTIPLEXER SELECT
(ADMUX)
8-BIT DATA BUS
AD
IF
AD
IE
ADC MULTIPLEXER
OUTPUT
SAMPLE & HOLD
COMPARATOR
CHANNEL
SELECTIONADC CONVERSION
COMPLETE IRQ
PINO
SINAL INTERNO
BARRAMENTO
LEGENDA
* Os pinos ADC6 e ADC7 somente
estão disponíveis nas versões
TQFP e QFN do ATMEGA328P
Alterado de ATmega48A/PA/88A/PA/168A/PA/328/P (datasheet)
4 bits
8 bits
Tensões de
Referência
MUX de
seleção da
Tensão de
referência
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Configurações
• Alinhamento do Resultado:
• Como a resolução do conversor é de 10 bits, é necessário
utilizar dois registradores (ADCH e ADCL) para armazenar o
resultado, totalizando 16 bits;
• O ATMEGA328P permite alinhar o resultado à direita (bit
ADLAR = 0), neste caso os bits 15 a 10 serão lidos como 0 ou
alinhar o resultado à esquerda (bit ADLAR = 10), neste caso os
bits 5 a 0 serão lidos como 0;
• Quando se deseja um resultado de apenas 8 bits, usa-se o
alinhamento à esquerda e se faz a leitura apenas do
registrador ADCH;
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Alinhamento do Resultado no registrador ADC, de
acordo com o bit ADLAR:A
DL
AR
= 0
DA
DL
AR
= 0
LA
R =
0
ADCH/ADCL: ADC Data Register (0x79/0x78)
BIT 15 14 13 12 11 10 9 8
ADCH (0x79) - - - - - - ADC9 ADC8
Read/Write R R R R R R R R
Initial Value 0 0 0 0 0 0 0 0
BIT 7 6 5 4 3 2 1 0
ADCL (0x78) ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0
Read/Write R R R R R R R R
Initial Value 0 0 0 0 0 0 0 0
AD
LA
R =
1
ADCH/ADCL: ADC Data Register (0x79/0x78)
BIT 15 14 13 12 11 10 9 8
ADCH (0x79) ADC9 ADC8 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2
Read/Write R R R R R R R R
Initial Value 0 0 0 0 0 0 0 0
BIT 7 6 5 4 3 2 1 0
ADCL (0x78) ADC1 ADC0 - - - - - -
Read/Write R R R R R R R R
Initial Value 0 0 0 0 0 0 0 0
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Configurações
• Seleção do Clock:
• O clock do ADC é o mesmo clock da CPU, porém possui um
divisor de clock separado;
• O clock do ADC pode ser dividido por 2N, onde N é dados pelos
bits ADPS2: ADPS0 do registrador ADCSRA (Exceção para
N=0, onde a divisão será também por 2);
ADPS2 ADPS1 ADPS0Fator de
divisãoADPS2 ADPS1 ADPS0
Fator de
divisão
0 0 0 2 1 0 0 16
0 0 1 2 1 0 1 32
0 1 0 4 1 1 0 64
0 1 1 8 1 1 1 128
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Configurações
• Habilitando o ADC:
• Para habilitar o ADC, deve-se setar o bit ADEN do registrador
ADCSRA;
• Se este bit for zerado durante uma conversão, esta será
abortada;
• Iniciando uma conversão:
• O bit ADSC inicia (dispara) uma nova conversão e deve ser
setado somente no instante em que se deseja efetivamente
iniciar a conversão;
• Uma conversão pode ser iniciada por alguns sinais de trigger,
selecionados pelos bits ADTS2:0 do registrador ADCSRB;
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Configurações
• Indicação de conversão completada:
• O bit ADIF indica, quando setado, que uma conversão terminou
e que existe um valor válido no par de registradores ADCL e
ADCH (ADC Data Register);
• Se uma interrupção for gerada (se o bit ADIE estiver setado),
este bit (ADIF) é automaticamente resetado durante o
processo de interrupção. Se não for gerada uma interrupção
(se o bit ADIE estiver zerado), este bit (ADIF) deve ser zerado
por software escrevendo-se 1 nele.
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Configurações
• Leitura do Resultado:
• Como ATMEGA328P é um microcontrolador de 8 bits, a leitura
do resultado (de 16 bits) deve ser feita em duas etapas:
1. Primeiro deve ser lida a parte menos significativa do
resultado, que está no registrador ADCL;
2. Em seguida deve ser lida a parte mais significativa do
resultado , que está no registrador ADCH;
• IMPORTANTE: o registrador ADC fica bloqueado enquanto
não for feita a leitura do registrador ADCH. Assim, se uma nova
conversão ocorrer antes de se ler ao valor em ADCH, o valor
desta nova conversão é perdido;
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Configurações
• Leitura do Resultado:
• Em linguagem C é possível realizar a leitura do ADC com um
único comando e armazenando este valor em uma variável
unsigned int:
Resultado = ADC; // obtem o valor convertido (ADCH:ADCL)
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Registradores do Conversor AD do
ATMEGA328P
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Registradores do Conversor AD
• ADMUX – Registrador de seleção de entrada do ADC e da tensão
de referência:
• Bit 7:6 – REFS[1:0]: Bits de Seleção da Tensão de Referência
ADMUX – ADC Multiplexer Selection Register (0x7C)
BIT 7 6 5 4 3 2 1 0
Function (0x7C) REFS1 REFS0 ADLAR - MUX3 MUX2 MUX1 MUX0
Read/Write R/W R/W R/W R R/W R/W R;W R/W
Initial Value 0 0 0 0 0 0 0 0
REFS1 REFS0 Seleção da tensão de referência
0 0 Pino AREF *
0 1 Avcc **
1 0 Reservada
1 1 Tensão de referência interna de 1,1V **
* Neste caso, a tensão de referência interna é desligada.
** Nestes casos deve-se colocar um capacitor de 100nF entre o pino AREF e o GND.
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
• Bit 5 – ADLAR: Ajuste à esquerda do resultado do ADC
• Bits 3:0 – MUX3:0: Bits de seleção do canal analógico
ADLAR Ajuste do resultado
0 Resultado alinhado à direita
1 Resultado alinhado à esquerda
MUX 3:0 Entrada
0000 ADC0
0001 ADC1
0010 ADC2
0011 ADC3
0100 ADC4
0101 ADC5
0110 ADC6*
0111 ADC7*
1000 Sensor de temperatura
1001 - 1101 Reservado
1110 Tensão de referência interna de 1,1v
1111 GND (0v)
* Disponível somente nos encapsulamentos TQFP e QFN
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Registradores do Conversor AD
• ADCSRA – Registrador de Controle e Status A:
• Bit 7 – ADEN: Habilita o ADC:
• Bit 6 – ADSC: Inicio de Conversão:
Este bit deve ser setado para dar início a conversão. Este bit permanece em nível
lógico 1 enquanto a conversão estiver sendo realizada. Ele é resetado
automaticamente quando a conversão estiver terminada.
ADCSRA – ADC Control and Status Register A (0x7A)
BIT 7 6 5 4 3 2 1 0
Function (0x7A) ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0
Read/Write R/W R/W R/W R/W R/W R/W R;W R/W
Initial Value 0 0 0 0 0 0 0 0
ADEN Habilita o ADC
0 Desabilita o ADC. Se este bit for resetado durante uma conversão em
andamento, esta será abortada
1 Habilita o ADC.
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
• Bit 5 – ADATE: Habilita o auto trigger do ADC:
Ativa o modo de auto disparo do ADC. O ADC começará uma conversão na borda
positiva do sinal de disparo selecionado. A fonte de disparo é selecionada nos bits
ADTS2:0 do registrador ADCSRB.
• Bit 4 – ADIF: Flag de interrupção do ADC:
Quando uma conversão for completada, estes bit é setado e uma interrupção
ocorrerá se o bit ADIE e o bit I do registrador SREG estiverem setados.
• Bit 3 – ADIE: Habilita a interrupção do ADC:
ADIE Habilita a interrupção do ADC
0 Desabilita a interrupção do ADC.
1 Habilita a interrupção do ADC.
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
• Bit 2:0 – ADPS2:0: Bits de seleção de divisão de clock do ADC
ADPS2 ADPS1 ADPS0 Fator de Divisão do Clock
0 0 0 2
0 0 1 2
0 1 0 4
0 1 1 8
1 0 0 16
1 0 1 32
1 1 0 64
1 1 1 128
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Registradores do Conversor AD
• ADCSRB – Registrador de Controle e Status B:
• Bit 2:0 – ADTS: Bits de seleção do auto trigger do ADC
ADCSRB – ADC Control and Status Register B (0x7B)
BIT 7 6 5 4 3 2 1 0
Function (0x7B) - ACME - - - ADTS2 ADTS1 ADTS0
Read/Write R R/W R R R R/W R;W R/W
Initial Value 0 0 0 0 0 0 0 0
ADTS2 ADTS1 ADTS0 Seleção de trigger
0 0 0 Conversão contínua
0 0 1 Comparador analógico
0 1 0 Interrupção externa 0
0 1 1 Igualdade de comparação A do TC0
1 0 0 Estouro de contagem do TC0
1 0 1 Igualdade de comparação B do TC1
1 1 0 Estouro de contagem do TC1
1 1 1 Evento de captura do TC1
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Registradores do Conversor AD
• DIDR0 – Digital Input Disable Register 0:
• Bit 5:0 – ADC5D:0D: Bits para desabilitar individualmente as entradas digitais
Estes bits desabilitam individualmente as entradas digitais dos pinos do ADC.
Deve(m) estar ativo(s) sempre que o pino correspondente for utilizado como entrada
para o ADC, caso contrário deve(m) estar em zero.
DIDR0 – Digital Input Disable Register 0 (0x7E)
BIT 7 6 5 4 3 2 1 0
Function (0x7E) - - ADC5D ADC4D ADC3D ADC2D ADC1D ADC0D
Read/Write R/W R/W R/W R/W R/W R/W R;W R/W
Initial Value 0 0 0 0 0 0 0 0
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Registradores do Conversor AD
• ADCH/ADCL: Registrador de dados do ADCA
DL
AR
= 0
DA
DL
AR
= 0
LA
R =
0
ADCH/ADCL: ADC Data Register (0x79/0x78)
BIT 15 14 13 12 11 10 9 8
ADCH (0x79) - - - - - - ADC9 ADC8
Read/Write R R R R R R R R
Initial Value 0 0 0 0 0 0 0 0
BIT 7 6 5 4 3 2 1 0
ADCL (0x78) ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0
Read/Write R R R R R R R R
Initial Value 0 0 0 0 0 0 0 0
AD
LA
R =
1
ADCH/ADCL: ADC Data Register (0x79/0x78)
BIT 15 14 13 12 11 10 9 8
ADCH (0x79) ADC9 ADC8 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2
Read/Write R R R R R R R R
Initial Value 0 0 0 0 0 0 0 0
BIT 7 6 5 4 3 2 1 0
ADCL (0x78) ADC1 ADC0 - - - - - -
Read/Write R R R R R R R R
Initial Value 0 0 0 0 0 0 0 0
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
• Exemplo: Realizar a leitura do sensor de temperatura interno e
enviar o valor pela USART.
/**ADC01.c** Created: 09/09/2019 11:46:59* Author : Gabriel */
#define F_CPU 16000000UL#include <avr/io.h>#include <util/delay.h>#include <stdlib.h>
void inicializa_ADC(){
ADMUX = (1<<REFS1) + (1<<REFS0) // seleciona Vref de 1,1v+ (1<<MUX3); // seleciona sensor de temperatura
ADCSRA = (1<<ADEN) // habilita ADC+ (1<<ADPS2); // seleciona clock como fosc/16
}
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
void inicializa_USART(){
UCSR0A = 0;UCSR0B = (1 << RXEN0) // habilita recepção
+ (1 << TXEN0); // habilita transmissãoUCSR0C = (1 << UCSZ01) // configura dados de 8 bits
+ (1 << UCSZ00);UBRR0 = 103; // configura BAUDRATE em 9600
}
void tx_resultado(char *resultado){
uint8_t i=0; // aponta para o primeirocaracter
while(*(resultado+i)) // enquanto não for fim de string{
while((UCSR0A & (1 << UDRE0 ))==0); // espera tx ant. terminarUDR0 = *(resultado+i); // transmite i-esimo caracteri++; // aponta para próximo caracter
}}
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
int main(void){
int resADC; // variavel que recebera o valor convertidochar * sADC = “xxxxx”; // string que conterá o valor convertidoinicializa_USART();inicializa_ADC();
while (1){
_delay_us(10); //espera pela estabilização de VinADCSRA |= (1<<ADSC); // pulso de disparo da conversãowhile((ADCSRA & (1<<ADIF))==0); // espera conversao terminarADCSRA |= (1<<ADIF); // reseta flag de fim de conversãoresADC = ADC; // obtem o valor convertido (ADCH:ADCL)itoa(resADC,sADC,10); // converte resADC para stringtx_resultado(sADC); // transmite resultado
}}
Conversor Analógico-Digital
EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1
Atividade Prática:
• Construir um sistema para monitorar 3 entradas do ADC. Um
comando (1, 2 ou 3) deve ser enviado pela interface serial ao
ATMEGA328P, que realizará a conversão da referida entrada e
retornará o valor lido, pela serial, ao computador.
• Os resultados devem ser apresentados da seguinte maneira:
• Entrada 1: valores inteiros entre 0 e 100;
• Entrada 2: valores entre 0.00 e 1.00 com duas casas decimais;
• Entrada 3: valores entre -10.0 e +10.0 com uma casa decimal;