Ir ao conteúdo
  • Cadastre-se

2 sensores interligado no PIC 18F4550 embutido na Placa mosaico


Posts recomendados

Utilizando 2 portas AN0 e AN1 quero conectar 2 sensores de presença , um em cada porta ! 

Consegui fazer a configuração das portas com ADCON0.. porém os sensores não estão funcionando juntos. ( os sensores funcionam bem)
Alguém pode ajudar ?

 

Abaixo meu código 

programação 2 sensores.txt

Link para o comentário
Compartilhar em outros sites

Não consegui entender sua forma de configurar o ADC.

Na configuração ADCON1 os bits 5 e 4 configuram o +REF e o -REF, escolheste usar Vdd e Vss.

Os bits 3-0 configuram quais as portas serão utilizadas como ADC, isto é, informam ao controle de barramento interno quais, dos possíveis ANs serão ligados ao barramento MUX que tem na entrada do ADC. Se pretende utilizar o AN0 e o AN1, olhando para a tabela do processador os bits 3-0 ficam 1101 Por ter escolhido trabalhar apenas com AN0 e AN1 e fazer uso da fonte como referências, a consequência é:

ADCON1 = 0b00001101 // 7 e 6 não usados, 5 seleciona Vss para Vref-, 4  seleciona Vdd para Vref+, 3-0 selecionam as entradas analógicas

Trataste a configuração do ADC de forma individual, o correto é de forma geral.

The ADCON0 register, shown in Register 21-1, controls the operation of the A/D module.

The ADCON1 register, shown in Register 21-2, configures the functions of the port pins.

The ADCON2 register, shown in Register 21-3, configures the A/D clock source, programmed acquisition time and justification.

Dessa forma usa-se o ADCON0 para chamada individual de cada entrada.

O ADCON1 monta a estrutura dos ANs que serão utilizados e os +Ref e -Ref que serão utilizados. Essa selecão tem efeito geral em todas as ANs.

O ADCON2 monta a velocidade de leitura e o alinhamento dos resultados. Tb tem efeito geral.

Conclusão: Programe o ADCON1 e ADCON2 uma única vez, é a configuração do que e da forma de como será utilizado o ADC.Essa montagem faz parte da inicialização do ADC.

ADCON0 é o controle individual sobre cada entrada de ADC.  Esse parâmetro faz parte da utilização do ADC que foi montado pelo ADCON1 e ADCON2, ele é quem será chamado cada vez que desejar disparar um início de conversão e leitura de resultado.

 

Link para o comentário
Compartilhar em outros sites

errinho..... apaguei!!

adicionado 11 minutos depois

Ative o interrupt on change das portas e use a função (ou procedure) interrupt() e trate o procedimento de acordo com o pino. Sensores de presença não requerem conversão adc.

Mais ou menos assim:

void Interrupt(void)

      {
       if (porta.0)==0 ( ou 1), dependendo de como configurou o IOC

           Trate aqui a interrupção (sinal vindo) do sensor  (n)

      endif}

       If (porta.1)==0 (ou 1,

           Trate aqui a interrupção do outro sensor

       endif}

end;

 

C não é o meu forte, mas desta forma, dá menos dor de cabeça tempo de processamento.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...