Ir ao conteúdo

Ajuda PIC-16F627A - Comparador


ItaloAndrade

Posts recomendados

Postado

Caros amigos, gostaria de saber se vocês poderiam me ajudar a solucionar meu problema, o mardito se trata do Comparador do PIC.

O que eu quero fazer ? Usar o comparador para realizar a comparação de 2 LDR´s e assim jogar no PIC depois no Driver. Porém eu nunca tive nenhuma experiencia com o Comparador do PIC, eu sei que devo usar o nº4 mais não faço ideia de como funciona, como eu configuro os valores, se ele já vem configurado e basta somente ativar. Alguem teria alguma informação que me ajudaria ? Linguagem - Assembly

:lol:

Obrigado!

Postado
Caros amigos, gostaria de saber se vocês poderiam me ajudar a solucionar meu problema, o mardito se trata do Comparador do PIC.

O que eu quero fazer ? Usar o comparador para realizar a comparação de 2 LDR´s e assim jogar no PIC depois no Driver. Porém eu nunca tive nenhuma experiencia com o Comparador do PIC, eu sei que devo usar o nº4 mais não faço ideia de como funciona, como eu configuro os valores, se ele já vem configurado e basta somente ativar. Alguem teria alguma informação que me ajudaria ? Linguagem - Assembly

:lol:

Obrigado!

Não é uma tarefa complicada, mas pra dar uma explicação aqui vai ser um pouco longo o percurso, sugiro baixar o pdf com o manual do 627, ele é bem simples e muito explicativo, mas basicamente é o seguinte, o 627 tem dois comparadores analógicos, duas entradas programáveis (pinos RA0 e RA3), você pode escolher entre uma referência interna, que você pode programar o valor, ou selecionar um dos pinos para ser a referência.

Postado
Não é uma tarefa complicada, mas pra dar uma explicação aqui vai ser um pouco longo o percurso, sugiro baixar o pdf com o manual do 627, ele é bem simples e muito explicativo, mas basicamente é o seguinte, o 627 tem dois comparadores analógicos, duas entradas programáveis (pinos RA0 e RA3), você pode escolher entre uma referência interna, que você pode programar o valor, ou selecionar um dos pinos para ser a referência.

Certo, essa parte da refêrencia eu ainda estou meio confuso, eu já tinha visto isso, e já li o datasheet do produto, porém é meio complicado a parte da programação, e no caso o pic tem 8 tipos de comparadores, eu escolhi o numero 4 (somente 1 comparador).

Alguém tem um exemplo de algum programa em assembly ?

Postado
Caros amigos, gostaria de saber se vocês poderiam me ajudar a solucionar meu problema, o mardito se trata do Comparador do PIC.

O que eu quero fazer ? Usar o comparador para realizar a comparação de 2 LDR´s e assim jogar no PIC depois no Driver. Porém eu nunca tive nenhuma experiencia com o Comparador do PIC, eu sei que devo usar o nº4 mais não faço ideia de como funciona, como eu configuro os valores, se ele já vem configurado e basta somente ativar. Alguem teria alguma informação que me ajudaria ? Linguagem - Assembly

:lol:

Obrigado!

Olá, muito obrigado.

#INCLUDE <P16F627A.INC> ; diretriz para definir microcontrolador

__CONFIG _PWRTE_ON & _MCLRE_ON & _INTOSC_OSC_NOCLKOUT & _WDT_OFF & _LVP_OFF & _CP_OFF

#DEFINE BANK0 BCF STATUS, RP0; muda para o banco de registradores zero

#DEFINE BANK1 BSF STATUS, RP0; muda para o banco de registradores um

#DEFINE BOTAOD PORTA,0 ; define pino RA2 como botao de entrada 1

#DEFINE BOTAOE PORTA,1 ; define pino RA1 como botao de entrada 2

#DEFINE A0_A3_A1_A3 0xfff04 ; será usado para configurar setup_comparator quando encontrar vrcon e cmcon

CBLOCK 0X20

DELAY

DELAY1

DELAY2

ENDC

ORG 0X00 ; inicia o programa na linha zero

GOTO INICIO; salta para o inicio do programa

TEMPO

MOVLW 0X01

MOVWF DELAY2

TEMPO1

MOVLW 0XFF

MOVWF DELAY1

TEMPO2

MOVLW 0XFF

MOVWF DELAY

TEMPO3

DECFSZ DELAY

GOTO TEMPO3

DECFSZ DELAY1

GOTO TEMPO2

DECFSZ DELAY2

GOTO TEMPO1

RETURN

INICIO

BANK1;salta para banco de memória 1

MOVLW B'00000011'; move código para work

MOVWF TRISA ; definindo pinos de entrada

MOVLW B'00000000'; move código para work

MOVWF TRISB ; definindo pinos de saída

MOVLW B'10000000'; move código para work

MOVWF OPTION_REG ; desligar resistores de pull-up

MOVLW B'00000000'; move código para work

MOVWF INTCON ; desligar todas as interrupções

BANK0

MOVLW B’00000101’ ;movendo dados de configuração para Work

MOVWF CMCON ; movendo os dados de configuração do work para o Selecionador de Comparador CMCON

CM2:CM0=101 ; escolhendo o comparador

SETUP_COMPARATOR(A0_VR_A1_VR) ;Colocando A0 e A1 com tensão de referência interna

SETUP_VREF’1’

MOVLW B’1010000’ ;configura a temsão de referência colocando como faixa alta e selecionando a formula

MOVWF VRCON ; moveu para VRCON o valor que estava no WORK acima.

SETUP_VREF(VREF_HIGH | 15) ; programou como chegar no valor ‘a equação usada’ e o valor de referência que aparentemente vai de 0 á 15

CLRF PORTA ;

CLRF PORTB ;

PRINCIPAL

BTFSC BOTAOD ;

GOTO TESTE

GOTO MOTORE

TESTE

BTFSC BOTAOE

GOTO PRINCIPAL

GOTO MOTORD

GOTO PRINCIPAL

MOTORD

MOVLW B'00001000'

MOVWF PORTB

CALL TEMPO

MOVLW B'00000100'

MOVWF PORTB

CALL TEMPO

MOVLW B'00000010'

MOVWF PORTB

CALL TEMPO

MOVLW B'00000001'

MOVWF PORTB

CALL TEMPO

GOTO MOTORD

MOTORE

MOVLW B'00000001'

MOVWF PORTB

CALL TEMPO

MOVLW B'00000010'

MOVWF PORTB

CALL TEMPO

MOVLW B'00000100'

MOVWF PORTB

CALL TEMPO

MOVLW B'00001000'

MOVWF PORTB

CALL TEMPO

GOTO MOTORE

END

Este é o meu programa, consegui no minimo definir o que eu quero, porém a parte do COMPARADOR que está em vermelha é onde surgem minha coméia de dúvidas. Não sei qual é a ordem que devem ser usados, e nem se está faltando algo mais para configurar, também não sei qual a tensão max. para a referência pois utilizarei valores de 8V~16V, e a referência no estado alto é aparentemente 3V.

  • 3 semanas depois...
Postado
Olá, muito obrigado.

#INCLUDE <P16F627A.INC> ; diretriz para definir microcontrolador

__CONFIG _PWRTE_ON & _MCLRE_ON & _INTOSC_OSC_NOCLKOUT & _WDT_OFF & _LVP_OFF & _CP_OFF

#DEFINE BANK0 BCF STATUS, RP0; muda para o banco de registradores zero

#DEFINE BANK1 BSF STATUS, RP0; muda para o banco de registradores um

#DEFINE BOTAOD PORTA,0 ; define pino RA2 como botao de entrada 1

#DEFINE BOTAOE PORTA,1 ; define pino RA1 como botao de entrada 2

#DEFINE A0_A3_A1_A3 0xfff04 ; será usado para configurar setup_comparator quando encontrar vrcon e cmcon

CBLOCK 0X20

DELAY

DELAY1

DELAY2

ENDC

ORG 0X00 ; inicia o programa na linha zero

GOTO INICIO; salta para o inicio do programa

TEMPO

MOVLW 0X01

MOVWF DELAY2

TEMPO1

MOVLW 0XFF

MOVWF DELAY1

TEMPO2

MOVLW 0XFF

MOVWF DELAY

TEMPO3

DECFSZ DELAY

GOTO TEMPO3

DECFSZ DELAY1

GOTO TEMPO2

DECFSZ DELAY2

GOTO TEMPO1

RETURN

INICIO

BANK1;salta para banco de memória 1

MOVLW B'00000011'; move código para work

MOVWF TRISA ; definindo pinos de entrada

MOVLW B'00000000'; move código para work

MOVWF TRISB ; definindo pinos de saída

MOVLW B'10000000'; move código para work

MOVWF OPTION_REG ; desligar resistores de pull-up

MOVLW B'00000000'; move código para work

MOVWF INTCON ; desligar todas as interrupções

BANK0

MOVLW B’00000101’ ;movendo dados de configuração para Work

MOVWF CMCON ; movendo os dados de configuração do work para o Selecionador de Comparador CMCON

CM2:CM0=101 ; escolhendo o comparador

SETUP_COMPARATOR(A0_VR_A1_VR) ;Colocando A0 e A1 com tensão de referência interna

SETUP_VREF’1’

MOVLW B’1010000’ ;configura a temsão de referência colocando como faixa alta e selecionando a formula

MOVWF VRCON ; moveu para VRCON o valor que estava no WORK acima.

SETUP_VREF(VREF_HIGH | 15) ; programou como chegar no valor ‘a equação usada’ e o valor de referência que aparentemente vai de 0 á 15

CLRF PORTA ;

CLRF PORTB ;

PRINCIPAL

BTFSC BOTAOD ;

GOTO TESTE

GOTO MOTORE

TESTE

BTFSC BOTAOE

GOTO PRINCIPAL

GOTO MOTORD

GOTO PRINCIPAL

MOTORD

MOVLW B'00001000'

MOVWF PORTB

CALL TEMPO

MOVLW B'00000100'

MOVWF PORTB

CALL TEMPO

MOVLW B'00000010'

MOVWF PORTB

CALL TEMPO

MOVLW B'00000001'

MOVWF PORTB

CALL TEMPO

GOTO MOTORD

MOTORE

MOVLW B'00000001'

MOVWF PORTB

CALL TEMPO

MOVLW B'00000010'

MOVWF PORTB

CALL TEMPO

MOVLW B'00000100'

MOVWF PORTB

CALL TEMPO

MOVLW B'00001000'

MOVWF PORTB

CALL TEMPO

GOTO MOTORE

END

Este é o meu programa, consegui no minimo definir o que eu quero, porém a parte do COMPARADOR que está em vermelha é onde surgem minha coméia de dúvidas. Não sei qual é a ordem que devem ser usados, e nem se está faltando algo mais para configurar, também não sei qual a tensão max. para a referência pois utilizarei valores de 8V~16V, e a referência no estado alto é aparentemente 3V.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...