1. Introdução
O conversor é um dos periféricos mais importantes que foram incorporados aos microcontroladores nas últimas décadas. Eles permitem "trazer" o mundo analógico para dentro do mundo digital dos microcontroladores, sendo usados nas mais diversas aplicações, tais como, instrumentação industrial e biomédica, audio etc.
O KL25Z possui um ADC (Analogic to Digital Converter) de 16 bits do tipo SAR, multiplexado em até 16 canais (mas nem todos acessíveis ao mesmo tempo). Este ADC também permite o uso no modo single-ended (canais independentes) ou no modo diferencial, ou seja, pode converter um valor de tensão entre dois pinos.
2. Configuração
A configuração do ADC começa pela adição do componente ADC ao projeto, como mostra a fig. 1.
Figura 1. Adicionando o ADC.
Fonte: Elaborado pelo autor.
Com o componente adicionado, abra as configurações do mesmo, clicando duas vezes sobre ele. A fig. 2 mostra as configurações básicas para o ADC, dentre elas as mais importantes são: o tempo de conversão (conversion time), resolução do ADC (A/D resolution) e canais (A/D channels). O tempo de conversão é de 2,25 us, no modo de alta velocidade e o canal selecionado é o ADC0, no pino PTE20.
Figura 2. Configurações do ADC.
Fonte: Elaborado pelo autor.
Este ADC pode efetuar uma conversão para todos os canais cadastrados, porém neste tutorial está foi usado apenas 1(um). Para efetuar uma conversão é necessário chamar o método Measure(). Este método tem um parâmetro de entrada que diz ao programa se deve esperar a conversão ser completada, mantendo programa parado neste ponto. Se o valor deste parâmetro for TRUE, o método tranca a execução do programa até o término da conversão. Como não foi habilitada a interrupção do ADC, o usuário deve usar o parâmetro como TRUE. Após executar este método, deve ser executado o método AD1_GetValue(), para ler o valor da conversão. O valor da conversão é retornado por referência para uma variável passada na chamada da função, como no código abaixo.
CÓDIGO
AD1_Measure(TRUE); //faz a conversão
AD1_GetValue16(&valor);//ler o valor convertido
Em breve postarei novos exemplos com ADC.
Bons projetos!!