Microcontroladores 2 EL08D Turma M12

30
Conversor Analógico-Digital Microcontroladores 2 EL08D Turma M12 Prof. Gabriel Kovalhuk E-mail: [email protected] Site: http://paginapessoal.utfpr.edu.br/kovalhuk EL08D – Microcontroladores 2 Prof. Gabriel Kovalhuk 2020/1

Transcript of Microcontroladores 2 EL08D Turma M12

Page 1: 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

Page 2: Microcontroladores 2 EL08D Turma M12

Conversor Analógico-Digital

EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1

Conversor Analógico-Digital

Page 3: Microcontroladores 2 EL08D Turma M12

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;

Page 4: Microcontroladores 2 EL08D Turma M12

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

Page 5: Microcontroladores 2 EL08D Turma M12

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

Page 6: Microcontroladores 2 EL08D Turma M12

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

Page 7: Microcontroladores 2 EL08D Turma M12

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

Page 8: Microcontroladores 2 EL08D Turma M12

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

Page 9: Microcontroladores 2 EL08D Turma M12

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

Page 10: Microcontroladores 2 EL08D Turma M12

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

Page 11: Microcontroladores 2 EL08D Turma M12

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;

Page 12: Microcontroladores 2 EL08D Turma M12

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

Page 13: Microcontroladores 2 EL08D Turma M12

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

Page 14: Microcontroladores 2 EL08D Turma M12

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;

Page 15: Microcontroladores 2 EL08D Turma M12

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.

Page 16: Microcontroladores 2 EL08D Turma M12

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;

Page 17: Microcontroladores 2 EL08D Turma M12

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)

Page 18: Microcontroladores 2 EL08D Turma M12

Conversor Analógico-Digital

EL08D – Microcontroladores 2Prof. Gabriel Kovalhuk 2020/1

Registradores do Conversor AD do

ATMEGA328P

Page 19: Microcontroladores 2 EL08D Turma M12

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.

Page 20: Microcontroladores 2 EL08D Turma M12

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

Page 21: Microcontroladores 2 EL08D Turma M12

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.

Page 22: Microcontroladores 2 EL08D Turma M12

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.

Page 23: Microcontroladores 2 EL08D Turma M12

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

Page 24: Microcontroladores 2 EL08D Turma M12

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

Page 25: Microcontroladores 2 EL08D Turma M12

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

Page 26: Microcontroladores 2 EL08D Turma M12

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

Page 27: Microcontroladores 2 EL08D Turma M12

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

}

Page 28: Microcontroladores 2 EL08D Turma M12

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

}}

Page 29: Microcontroladores 2 EL08D Turma M12

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

}}

Page 30: Microcontroladores 2 EL08D Turma M12

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;