estou arriscando alguns testes com um PIC que tenho, porém, tenho tido alguns problemas com conceitos básicos como o conversor AD. Utilizo o mikroC.
Vou tentar resumir a história:
- 1° teste: Preparar a conversão manualmente, aguardar a conversão e utilizar os valores lidos utilizando potenciômetro em AN0 (Resultado: Funciona)
- Código: Selecionar todos
void main()
org 0x800
{
unsigned int valor ;
// INIT ADC
// AN0..AN2 analógicas[RA0..RA2]; VDD e VSS é ref de tensão - são 5V da alimentação
ADCON1 = 0b00001100;
// selecciona TAD=64TOSC; tempo sampling =12TAD; formato resultado right justified
ADCON2 = 0b10101110;
// enable converter module
ADCON0.ADON = 1;
TRISA = 0x03; // RA0..RA2 são input
TRISB = 0x00;
while(1)
{
ADCON0.CHS3 = 0; ADCON0.CHS2 = 0; ADCON0.CHS1 = 0; ADCON0.CHS0 = 0; // selecciona input AN0
// 0000 - AN0; 0001 - AN1; 0010 - AN2
ADCON0.GO_DONE=1;// dá inicio à conversão
while(ADCON0.GO_DONE) continue; // aguarda fim da conversão
PIR1.ADIF=0;
valor=ADRESH*256+ADRESL; // 0.... 1023
if (valor < 45)
{
PORTA.RA4 = 0; // Turn OFF LEDs on PORTA
PORTA.RA5 = 0; // Turn OFF LEDs on PORTA
}
else
{
PORTA.RA4 = 1; // Turn ON LEDs on PORTA
PORTA.RA5 = 1; // Turn ON LEDs on PORTA
}
}
}
- 2° teste: Preparar a conversão manualmente, aguardar a conversão e utilizar os valores lidos utilizando LM35 em AN1 (Resultado: NÃO Funciona)
Praticamente o mesmo código, somente alterando o input na primeira linha dentro do while:
- Código: Selecionar todos
ADCON0.CHS3 = 0; ADCON0.CHS2 = 0; ADCON0.CHS1 = 0; ADCON0.CHS0 = 1; // selecciona input AN1
Estou conectando o a saída do sensor LM35 direto na entrada AN1 do PIC 18F2550, isso pode ser um problema?
Espero ter sido claro.
Aguardo qualquer sugestão.
Obrigado desde já.
Atenciosamente,
Douglas