[RESOLVIDO] PROBLEMAS COM A CONFIGURAÇÃO DO PIC16F76 /876

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

[RESOLVIDO] PROBLEMAS COM A CONFIGURAÇÃO DO PIC16F76 /876

Mensagempor Rodrigo.rb3s » 25 Mai 2010 07:44

Bom dia a todos, estou montando um projeto pra apresentar 2 sensores (LDR) em funcionamento usando tambem um LM393, mas quando peço pra o pic testar o BTFSS PORTA,1 se está em 1 o programa não faz nada (eu deixo o pino do pic sem tenção nenhuma e quando altera a luminosodade do LDR o pino do conparador vai pra 1 (5,0V) mas o pic não identifica, o que pode estar acontesendo?
e não consigo reservar 2 bytes para as variaveis se eu colocar
DELAY RES 2 na frente da variavel o MP LAB da erro de compilação. se alguem tiver alguma dica ajudaria muito, pois já não tenho muito tempo pra entregar o projeto final na facu...

aqui vai o programa...


; PROJETO DE APRESENTAÇÃO DE SENSORES
; REV00 01/05/2010 ESCRITO POR: RODRIGO BONFANTE



;******************************************************************************************
;Objetivo: DEMONSTRAR O FUNCIONAMENTO DE SENSORES ATUANDO EM UM PROCESSO E MOSTRAR ESTATOS DO PROCESSO
;
;-----------------------------------DIRETRIZES-----------------------------------

INCLUDE "P16F76.INC"
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_OFF & _XT_OSC
ERRORLEVEL -302
;*************************************************************************
;LOCAL PARA DEFINIR CONSTANTES
;
; LOCAL PARA DEFINIR VARAVEIS
;
CBLOCK H'20'
TEMP1
TEMP2
TMPLCDREGISTER RES 2
MSDELAYCOUNTER RES 2
ENDC
;************************************************************
ORG 0X00
GOTO INICIO
ORG 0X04
NOP
GOTO INICIO
RETFIE
;
; PORT B'76543210'
;
INICIO
BCF STATUS, RP0
BCF STATUS, RP1 ; muda pra banco 1
CLRF PORTA
BSF STATUS, RP0
MOVLW B'00000111'
MOVWF ADCON1
MOVLW B'00111111'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
MOVLW B'00000000'
MOVWF TRISC
CLRF STATUS ; volta pra banco 0
;
;*************************************************************************
; COMEÇO DO PROGRAMA
;*************************************************************************
CLRF PORTA
CLRF PORTB
CLRF PORTC
GOTO BOTAO1
;
BOTAO1
BTFSC PORTA,0
GOTO BOTAO1
CALL LIGADO
BSF PORTC,4
BSF PORTC,5
BSF PORTC,6
MOVLW H'10'
CALL MSDELAY
GOTO DESLIGA
GOTO SENSOR1
;
SENSOR1
BTFSS PORTA,1
GOTO SENSOR2
BSF PORTB,0
GOTO SENSOR2
;
SENSOR2
BTFSS PORTA,2
GOTO SENSOR1
BSF PORTB,1
GOTO PROCESSO
;
SENSOR3
BTFSS PORTA,3
GOTO PROCESSO
BCF PORTB,1
GOTO DESLIGA
;
DESLIGAR
BTFSC PORTA,0
GOTO SENSOR2
GOTO DESLIGA
;
PROCESSO
BCF PORTC,0
MOVLW H'255'
CALL MSDELAY
BSF PORTC,0
CALL MSDELAY
GOTO SENSOR3
;
DESLIGA
BTFSC PORTA,0
GOTO SENSOR1
CLRF PORTC
BCF PORTB,1
CALL DESLIGADO
GOTO BOTAO1
END[/img]
Editado pela última vez por Rodrigo.rb3s em 18 Jun 2010 11:05, em um total de 8 vezes.
byte
Avatar do usuário
Rodrigo.rb3s
Bit
 
Mensagens: 14
Registrado em: 05 Mai 2010 16:57

Mensagempor Andre_Cruz » 25 Mai 2010 07:59

Bom dia Rodrigo,

Véio, de uma olhada no datasheet do pic, você precisa configurar os registrador do modulo comparador, o CMCON, o ADCON1 você configurou, configure o registrador CMCON que é pra funcionar.

Abraço
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor Rodrigo.rb3s » 25 Mai 2010 13:29

Andre_Cruz escreveu:Bom dia Rodrigo,

Véio, de uma olhada no datasheet do pic, você precisa configurar os registrador do modulo comparador, o CMCON, o ADCON1 você configurou, configure o registrador CMCON que é pra funcionar.

Abraço


Andre..
nesse PIC16F76 bão tem esse registrador CMCON, tem CCP1CON que faz parte dos COMPARE/PWM/CAPTURE, dexei todos em 0 mas tambem não rezolve...

fora esse problema tem esse,

se eu por o RES 2 depois de uma variavel pra reservar dois bytes pra variavel o MPLAB não compila...
byte
Avatar do usuário
Rodrigo.rb3s
Bit
 
Mensagens: 14
Registrado em: 05 Mai 2010 16:57

Mensagempor Andre_Cruz » 25 Mai 2010 23:25

Rodrigo,

Desculpa, eu imaginei que você estivesse usando o comparador interno, o 16F76 realmente não tem comparador interno.

Mas analizando seu código, você tem a saída de um comparador ligado ao PORTA,0 ou RA0, seu erro esta na configuração do PORTA, no registrador TRISA, quando você move B'00000000' para TRISA você configura o PORTA todo como saída, para usar o RA0 como entrada você deve mover B'00000001' para TRISA.

Código: Selecionar todos
   MOVLW         B'00000001'
   MOVWF         TRISA                        ;CONFIGURA RA0 COMO ENTRADA


Assim o BTFSC PORTA,0 vai funcionar !

O PIC trabalha com variavéis de 8 bits, ou seja vai de 0 a 255, para trabalhar com 16 bits ou mais é preciso fazer na unha, por exemplo VAR_LOW e VAR_HIGH, LOW armazena a parte baixa de 0 a 255 e HIGH a parte alta de 255 a 65535, cada vez que VAR_LOW estoura ou ocorre o overflow você incrementa a VAR_HIGH !

Abraço !

André Cruz
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor Rodrigo.rb3s » 26 Mai 2010 08:04

André,

já acertei o PORTA como como todo entrada (é o que eu quero que o pic faça)

mas se eu por um resistor de 10k para os pinos RA0, RA1, RA2 RA3 ir a 5V e por uma chave do tipo tactil (TACT SWITCH) usar o comando
BTFSC PORTA,0
GOTO LOOP
BSF PORTC,4

o programafunciona normalmente,

mas quando eu retiro os resistores e ligo os pinos RA1, RA2 na saida de um AMP-OP onde a tensão inicial é '0' e depois de acionar o sensor a tensão é 5 o programa não faz nada..

BTFSS PORTA,1
GOTO SENSOR2
BSF PORTC,3
CALL DESLIGADO
GOTO SENSOR2
;
SENSOR 2
BTFSS PORTA,2
GOTO LOOP
BSF PORTC,6
CALL DESLIGADO
END

é isso que eu não entendo o porque, e não consigo resolver
BTFSS É PRA TESTAR SE ESTÁ EM '1' (5V) e pular a proxima instrução certo?
alguns pinos eu deixei COM 5v '1' RA0, RA1, RA2, RA3, e outros pinos com '0' 0V ligados a saida de um AMP-OP
RA4, RA5, RA6 os pinos do PORTB vou usar um LCD 20x2 E PORTC eu vou usar como saida pra acionar reles e led´s.
já verifiquei varias vezes a PCI mas não encontrei erros...

se alguem mais se interessar a configuração desse PIC16F76 é igual a do PIC16F876 - PIC16F873
byte
Avatar do usuário
Rodrigo.rb3s
Bit
 
Mensagens: 14
Registrado em: 05 Mai 2010 16:57

Mensagempor Sergio38br » 26 Mai 2010 08:12

teste colocando um resistor em pulldown neste pino.

[ ]'s
Sergio
Avatar do usuário
Sergio38br
Word
 
Mensagens: 759
Registrado em: 22 Nov 2007 13:39
Localização: São Paulo - SP

Mensagempor Andre_Cruz » 26 Mai 2010 08:15

Rodrigo,

A instrução BTFSS (Testa o bit e salta se igual a 1).

Código: Selecionar todos
BTFSS   PORTA,0
GOTO    PINO_0V
GOTO    PINO_5V


A instrução BTFSC (Testa o bit e salta se zerada).

Código: Selecionar todos
BTFSC   PORTA,0
GOTO    PINO_5V
GOTO    PINO_0V


Se acionando com botão, o PIC muda de estado, o problema pode ser com o comparador, senão me engano o LM393 precisa de um resistor de pull-up (Do +5V para o pino de saída do comparador).
Da uma confirida no datasheet do LM393.

Qualquer da um toque.

Abraço

André Cruz
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor Pask » 27 Mai 2010 21:34

Você está usando alimentação simétrica para o LM393 ? Verifique com um multímetro se o pino de saída do seu comparador realmente está indo a zero.
Pask
Word
 
Mensagens: 600
Registrado em: 22 Dez 2006 19:19

Mensagempor Rodrigo.rb3s » 28 Mai 2010 08:33

Pask escreveu:Você está usando alimentação simétrica para o LM393 ? Verifique com um multímetro se o pino de saída do seu comparador realmente está indo a zero.


não, eu estou usando a mesma fonte do microcontrolador, e quando eu altero a luminosidade no LDR a saida sai de '0' e vai pra '1' mas no microcontrolador não acontece nada.
SENSOR1

BTFSS PORTA,3
GOTO LOOP
BSF PORTC,5
CALL PROCESSO_EM_ANDAMENTO
GOTO SENSOR2


SENSOR2
BTFSS PORTA,4
GOTO $-1
BCF PORTC,5
CALL FINALIZADO
GOTO LOOP


o programa só testa o primeiro botão e mostra a mennsagem ligado,
depois ele deveria executar o teste acima, mas mesmo jogando a tenção 5V no pino do pic ele não faz nada.
byte
Avatar do usuário
Rodrigo.rb3s
Bit
 
Mensagens: 14
Registrado em: 05 Mai 2010 16:57

Mensagempor Pask » 28 Mai 2010 08:41

Bem. Vc já experimentou fazer o teste desses pinos usando um botão ligado do pino para a massa?
Veja como o PIC se comporta quando vc usa um botão para forçar o nível lógico zero nos pinos do PORTA.

Se funcionar com o botão, eu sugiro que você ligue os pinos de saída do comparador a um arranjo com transistores, de tal forma que, quando o comparador for 5V, o transistor fique cortado e um resistor de pull-up force o pino do PIC em 1. Quando o comparador for 0V, o transistor conduza e force o pino do PIC em 0.
Pask
Word
 
Mensagens: 600
Registrado em: 22 Dez 2006 19:19

Mensagempor MOR_AL » 28 Mai 2010 09:12

Olá Rodrigo.
Você está usando um resistor da saída do LM393 até o +5V?
Esse comparador tem saída em coletor aberto, precisa do resistor. Use um de 1k que deve funcionar.
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor Rodrigo.rb3s » 31 Mai 2010 10:31

MOR_AL escreveu:Olá Rodrigo.
Você está usando um resistor da saída do LM393 até o +5V?
Esse comparador tem saída em coletor aberto, precisa do resistor. Use um de 1k que deve funcionar.
MOR_AL


não funciona, mesmo colocando um resistor de 10k para 5V PORTA do PIC16F76
fica em 0V...
PORTB E PORTC funcionan corretamente.

Voltando pra onde eu ainda não deveria ter saido..
PIC16F84A
e começar os testes tudo de novo...

Obrigado pela ajuda de todos, mas vou tentar com o 16f84a
porque já não tenho muito tempo pra terminar esse Projeto...[Desktop]PROJETO SENSORES REV00[/img]
Editado pela última vez por Rodrigo.rb3s em 04 Jun 2010 11:14, em um total de 1 vez.
byte
Avatar do usuário
Rodrigo.rb3s
Bit
 
Mensagens: 14
Registrado em: 05 Mai 2010 16:57

Mensagempor Eliomarjj » 01 Jun 2010 18:37

Boa noite jovem, experimente colocar depois do teste do pino de entrada um delay de estabilização do pino para saber se ele realmente foi para nível 1 e lembre-se que o pic utiliza a expressão "Read, Modify and Write
" em todos os ports.
Eliomarjj
Bit
 
Mensagens: 23
Registrado em: 27 Jan 2010 12:01

Mensagempor Rodrigo.rb3s » 08 Jun 2010 07:24

Eliomarjj escreveu:Boa noite jovem, experimente colocar depois do teste do pino de entrada um delay de estabilização do pino para saber se ele realmente foi para nível 1 e lembre-se que o pic utiliza a expressão "Read, Modify and Write
" em todos os ports.


Dias depois....

caro colegas amantes da eletronica ou profissionais da eletronica, eu queria que o pic executa-se alguma função se o nivel do PORTA for pra 1 ou pra zero e acionar um rele que está no portb atraves de um transistor mas nesse pic parece que nada funciona quando uso o PORTA.

Depois de muito insistir, percebi que quando gravo o programa acima citado e ligo o pic, com resistores de 10k pra 5V no PORTA (pull up) e testo com multimetro os pinos do PORTA do PIC 16F76 os pinos continuam em zero. E se eu gravar esse programa teste " que achei no for" abaixo, o programa funciona normalmente, mas tambem não usa o PORTA;



;SEQUENCIAL DE LEDS PIC16F76



#INCLUDE <P16F76.INC>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_OFF & _XT_OSC
ERRORLEVEL -302
CBLOCK H'20'
TEMP1
TEMP2
ENDC
ORG 0x00
GOTO INICIO
ORG 0x04
RETFIE
INICIO
CLRF STATUS
CLRF PORTA
BSF STATUS,RP0
MOVLW B'11111111'
MOVWF TRISA
CLRF STATUS
CLRF PORTB
BSF STATUS,RP0
MOVLW B'00000000'
MOVWF TRISB
CLRF STATUS
CLRF PORTC
BSF STATUS,RP0
MOVLW B'00000000'
MOVWF TRISC
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF STATUS
MAIN
MOVLW B'00000000'
MOVWF PORTC
CALL TEMPA
MOVLW B'00000001'
MOVWF PORTC
CALL TEMPA
MOVLW B'00000010'
MOVWF PORTC
CALL TEMPA
MOVLW B'00000100'
MOVWF PORTC
CALL TEMPA
MOVLW B'00001000'
MOVWF PORTC
CALL TEMPA
MOVLW B'00010000'
MOVWF PORTC
CALL TEMPA
MOVLW B'00100000'
MOVWF PORTC
CALL TEMPA
MOVLW B'01000000'
MOVWF PORTC
CALL TEMPA
MOVLW B'10000000'
MOVWF PORTC
CALL TEMPA
GOTO MAIN
TEMPA
MOVLW H'FF'
MOVWF TEMP1
MOVLW H'2E'
MOVWF TEMP2
LOOP1
DECFSZ TEMP1,1
GOTO LOOP1
DECFSZ TEMP2,1
GOTO LOOP1
RETURN
END by "nagkiller, 2010"

ainda não achei o problema já fiz de tudo o que sugeriram, será que pode ser a pci, " eu usei a ferramenta copper pour do PCAD pra completar o espaço vazio das trilhas com o terra" será que pode ser esse o problema? como faço pra postar o leyaut da pci?
byte
Avatar do usuário
Rodrigo.rb3s
Bit
 
Mensagens: 14
Registrado em: 05 Mai 2010 16:57

Mensagempor fabim » 08 Jun 2010 09:08

amigo, esse pic tem comparador analogico no porta ?

Se sim, pois esta usando os bits baixos é necessario desligar os comparadores.
O registrador é o CMCON e é necessario por default escrever 7 nele.

MOVLW 0x07;
MOVWF CMCON;

Se você não o fizer, o pic sempre enxerga o pino como 0...
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x