As principais caractersticas do conversor A/D disponvel no PIC18F4550 so as seguintes: 13 canais de entrada configurveis como entradas analgica no modelo de 40 pinos utilizado no KitUni; Resultado da converso obtido atravs de aproximaes sucessivas e carregado nos registradores ADRESH e ADRESL; A converso e realizada em um canal de cada vez; Conversor AD de 10-bits (0 1023); Seleo de referncia de tenso pela alimentao do microcontrolador ou referncia externa.
Circuitos Microprocessados I
Circuitos Microprocessados I
Circuitos Microprocessados I
GO/DONE: bit de status do conversor A/D Usando ADON = 1: 0 A/D disponvel 1 Converso A/D em andamento ADON: bit para habilitao do A/D 0 mdulo conversor A/D desabilitado 1 mdulo conversor A/D habilitado
Circuitos Microprocessados I
Circuitos Microprocessados I
Circuitos Microprocessados I
111 20 TAD
110 16 TAD 101 12 TAD 100 8 TAD
011 6 TAD
010 4 TAD 001 2 TAD 000 0 TAD
Circuitos Microprocessados I
100 FOSC/4
011 FRC (clock derivado do oscilador RC do A/D) 010 FOSC/32 001 FOSC/8
000 FOSC/2
Circuitos Microprocessados I
Outras configuraes
Alm das configuraes dos registradores de controle outras configuraes devem ser feitas para o correto funcionamento do A/D: Configurao das portas utilizados pelo conversor A/D como entradas; Habilitao da interrupo que ser gerada ao final da converso.
Circuitos Microprocessados I
Circuitos Microprocessados I
Resumo de implementao
Seguir os passos seguites para executar uma converso A/D : 1. Configurar o mdulo A/D: Configure os pinos analgicos, tenso de referncia e os entradas e sadas digitais (ADCON1) Selecione o canal de entrada do A/D (ADCON0)
Circuitos Microprocessados I
Circuitos Microprocessados I
Rotina de interrupo em C
//prottipo da funo de interrupo void InterruptHandlerHigh(); //---------------------------------------------------------------------------// High priority interrupt vector #pragma code InterruptVectorHigh = REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS void InterruptVectorHigh (void) { _asm goto InterruptHandlerHigh //jump to interrupt routine _endasm } //----------------------------------------------------------------------------
Circuitos Microprocessados I
{
PIR1bits.ADIF = 0;
Circuitos Microprocessados I
Circuitos Microprocessados I
Disparando o conversor
//Disparo da coverso ADCON0bits.GO = 1;
//Exibindo no Display
Medicao = VectorLeiturasAD[0]; VectorDS7SegValue[0] = Medicao/1000;
VectorDS7SegValue[1] = (Medicao%1000)/100;
VectorDS7SegValue[2] = ((Medicao%1000)%100)/10; VectorDS7SegValue[3] = ((Medicao%1000)%100)%10;
Circuitos Microprocessados I
Exerccio
1 - Elabore um programa em linguagem C que implemente a leitura do sinal analgico fornecido por um potencimetro conectado a entrada analgica do canal 0 (AN0). Exibir o valor lido diretamente no display de 7 segmentos justificado a direita (valor de 0 a 1023). 2 Implemente um mecanismo de calibrao com ajuste de ganho e offset para o valor analgico lido;
Circuitos Microprocessados I