um executavel bem menor!Voce pode estudar todos os arquivos utilizados pelo Arduino navegando na pasta Cores que e uma subpasta encontrada no diretorio de instalacao do Arduino. No Windows 7, devemos encontrar essa pasta no seguinte caminho:C:\Program Files\Arduino\hardware\arduino\avr\cores\arduinoLa teremos cabecalhos como o Arduino.h, wiring.h etc. Nos arquivos de implementacao (que nos interessam nesse post), podemos encontrar os comandos de iniciacao da parte analogica do Arduino no arquivo wiring.c e a funcao analogRead() em si, no arquivo wiring_analog.c.O que e ADC?ADC e uma sigla em ingles para Conversor Analogico Digital. Quando utilizamos funcoes como a analogRead() para fazer a leitura de uma porta analogica, convertemos tensao analogica em um valor digital, baseado em limites de referencia. Os chips ATMega oferecem algumas solucoes de niveis de referencia para converter os valores analogicos em digitais.Para verificar essas opcoes que temos nos microcontroladores da Atmel, precisamos verificar os registradores que configuram esses circuitos internos de ADC.Manipularemos dois registradores para configurar o ADC de um ATMega, sendo eles o ADCSRA e o ADMUX. O primeiro e o registrador de controle e status, ja o ultimo e o registrador responsavel pela configuracao do demuxer.Primeiro precisamos configurar o ADCSRA para ligar o circuito que faz a amostragem da leitura e tambem ativar esse circuito. Para configurar um registrador, atuamos sobre os bits, ligando ou desligando eles. Vejamos o registrador ADCSRA na imagem abaixo:Os bits desse registradores sao:Bit 7 - ADEN: Ativacao do ADCEscrevendo o valor 1 (ativando) nesse bit, ativamos o circuito do ADC do ATMega. Escrevendo o valor 0 (desativando), desligamos.Bit 6 - ADSC: Inicia Conversao ADCNo modo simples de conversao, ativamos esse bit para iniciar cada conversao. No modo Free Running, ativamos esse bit para iniciar a primeira conversao.Bit 5 - ADFR: Seletor do Modo Free RunningQuando ativado esse bit, ligamos o modo Free Running, em que o circuito de ADC amostra e atualiza os registradores de dados constantemente.Bit 4 - ADIF: Flag de InterrupcaoQuando o circuito ADC completa um ciclo de amostragem e os registradores de dados sao atualizados, esse bit e ativado, indicando que o processo terminou. Se o registrador ADIE (e tambem o bit I do SREG) estiver ativo, o ADIF e desativado automaticamente e a funcao de interrupcao de hardware executada.Bit 3 - ADIE: Ativacao da Interrupcao do ADCAtivando este bit e tambem o bit I do SREG, ligamos a interrupcao do ADC.Bit 2,1,0 - ADPS2, ADPS1, ADPS0: Seletor do ADC PrescalerEstes bits determinam o fator de divisao do cristal e o clock do ADC, conforme tabela abaixo:Para configurar o ADC, vamos utilizar os bits 7, 2, 1 e 0. Vamos utilizar o bit 7 ADEN para ativar o ADC do microcontrolador, mas antes temos que usar os bits ADPS0, ADPS1 e ADPS2, conforme tabela acima para configurar a taxa do prescaler, dependendo do cristal que utilizaremos no ATMega.Precisamos de uma frequencia de amostragem entre 50Khz a 200Khz, entao pegamos o valor do cristal e dividimos pelo prescaler. O valor do resultado tem que ficar dentro dessa faixa, conforme equacao a seguir:Frequencia do Comparador ADC = Frequencia do Cristal / PrescalerSe estamos usando