Problema com PIC16F877A

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Problema com PIC16F877A

Mensagempor rflbeck » 02 Jun 2010 10:55

Olá para todos!

Sou novo no desenvolvimento de aplicações com PIC.
Estou tentando fazer funcionar um PIC16F877A com um cristal externo de 12MHz.

Eu pretendo fazer o PIC ler a informação de alguns sensores e mostrar em um LCD 16x2, mas por enquanto fiz um código pisca pisca de LED para testar o PIC. O projeto com o LCD eu ja tenho e simulando no proteus funciona direitinho.

Meu problema é que nada funciona quando ligo tudo na protoboard.

O circuito que eu fiz para testar esta da seguinte forma (Ligado em uma Protoboard):
Pinos 12 e 31 no terra, pinos 11 e 32 em +5V
O Cristal de 12Mhz esta ligado nas portas 13 e 14 do PIC, em cada saída do cristal há um capacitor de 22pF e o LED ligado na porta RA0 (pino 2)

Quando ligo o circuito, o LED pisca uma vez e apaga, depois disso não acontece mais nada.

Uma coisa curiosa é que se eu coloco o dedo no fio que liga o cristal ao PIC, o LED acende (algum fenômeno de eletronica que eu não faço idéia do que seja, pois meu conhecimento de eletronica é limitado).

Simulando isto no proteus novamente tudo acontece direitinho (logo o código deve estar certo).

Um teste que eu fiz foi usar um PIC16F628A com oscilador interno e funcionou tanto no proteus quanto na protoboard, então acredito que meu gravador também esteja funcionando.

Alguem tem idéia do que eu posso estar fazendo de errado?

GRato.
rflbeck
Bit
 
Mensagens: 6
Registrado em: 17 Mai 2010 16:32
Localização: Aqui mesmo

Mensagempor rafael.wachter » 02 Jun 2010 11:02

configuration bits: colocou como HS_OSC?
MCLR: colocou um botão? ligou direto no VCC?
Avatar do usuário
rafael.wachter
Nibble
 
Mensagens: 89
Registrado em: 19 Nov 2008 13:12
Localização: no RS tchê

Mensagempor rflbeck » 02 Jun 2010 11:16

Hmmm

Não estou com o código aqui, mas vou verificar.

Se não me engano eu coloquei XT_OSC e MCLR_OFF no configuration bits.

Vou confirmar...
rflbeck
Bit
 
Mensagens: 6
Registrado em: 17 Mai 2010 16:32
Localização: Aqui mesmo

Mensagempor tmarchesi2 » 02 Jun 2010 12:43

Ja passei por situações semelhantes:

- Tente colocar um capacitor de 100nf o mais próximo possível do pino de alimentação. Parace besteira mas faz diferença.

- Tente trocar o cristal por um outro de mesmo valor, ja tive problemas com cristal sendo novo fazendo papel de antena.

- Se você possuir um limpa contato, tente passar nesta região do protoboard (não confunda com WD40).

Abraço; Se funcionar posta pra gente o problema !
tmarchesi2
Nibble
 
Mensagens: 69
Registrado em: 23 Fev 2007 13:45

Mensagempor rafael.wachter » 02 Jun 2010 13:13

no 628A funcionou com oscilador interno.. blz com MCLR off... blz

mas no 877A, ele não tem oscilador interno e tbm não tem como tu desabilitar o MCLR, ou seja, se tu tah usando um cristal de 12MHz coloca HS_OSC (ateh 4MHz eh XT_OSC e acima de 4MHz eh HS_OSC) e o pino MCLR coloca ligado direto no VCC ou coloca um botão e um resistor de pull-up
Avatar do usuário
rafael.wachter
Nibble
 
Mensagens: 89
Registrado em: 19 Nov 2008 13:12
Localização: no RS tchê

Mensagempor Cleber » 02 Jun 2010 18:22

Cara pelo que andei olhando não tem como desligar o MCLR do 877, outra coisa coloca o cristal o mais proximo possivel dos pinos do pic.
Cleber
Bit
 
Mensagens: 10
Registrado em: 16 Jun 2008 11:06

Mensagempor Andre_Cruz » 03 Jun 2010 12:37

rflbeck,

Enfentei um problema parecido essa semana, os capacitores de 22pF estavem com pau !
Retire os capacitores do cristal da protobord, e teste !

Abraço

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

Mensagempor renatokodaira » 03 Jun 2010 13:30

As vezes o circuito oscilador a cristal nao funciona no protoboard (principalmente os mais porcarias) por causa de capacitancias parasitas entre os contatos. Esse parece ser o seu caso, pois funciona colocando o dedo. Jah nao eh a primeira vez que alguem reporta esse problema. O jeito eh montar em circuito impresso ou usar um clock externo (daqueles osciladores retangulares de 4 pinos de metal).
renatokodaira
Byte
 
Mensagens: 402
Registrado em: 11 Out 2006 15:15

Mensagempor rflbeck » 08 Jun 2010 00:38

rafael.wachter escreveu:no 628A funcionou com oscilador interno.. blz com MCLR off... blz

mas no 877A, ele não tem oscilador interno e tbm não tem como tu desabilitar o MCLR, ou seja, se tu tah usando um cristal de 12MHz coloca HS_OSC (ateh 4MHz eh XT_OSC e acima de 4MHz eh HS_OSC) e o pino MCLR coloca ligado direto no VCC ou coloca um botão e um resistor de pull-up


Boa noite para todos!

Bem, agradeço muito a ajuda de vocês e também peço desculpas pela demora da resposta, porém estes ultimos dias faltou tempo para eu dedicar-me ao meu projeto. Mas acabou de funcionar e eu ja vim postar aqui.

Enfim funcionou, eu alterei de XT_OSC para HS_OSC conforme a dica do nosso amigo e deu certo. Claro que não foi de primeira, tive que eliminar alguns fios com mal contato, trocar capacitores, fazer uma oração, etc...

E pra ajudar no meio do processo acabei queimando o PIC, ainda sim foi bom pois achei uma loja que vende mais barato.

Para encerrar, como eu havia dito sou iniciante, o que consegui ate agora foi piscar alguns LEDs, agora vou continuar com o projeto mesmo.

Obrigado a todos que ajudaram e espero contar com voces se aparecer mais algum problema.
rflbeck
Bit
 
Mensagens: 6
Registrado em: 17 Mai 2010 16:32
Localização: Aqui mesmo

Mensagempor rafael.wachter » 08 Jun 2010 09:03

estamos ae pra isso, ajudar :lol:
Avatar do usuário
rafael.wachter
Nibble
 
Mensagens: 89
Registrado em: 19 Nov 2008 13:12
Localização: no RS tchê

Continuando...

Mensagempor rflbeck » 08 Jun 2010 16:20

E ai galera!!

Bom, ja consegui bastante coisa, liguei meu LCD 16x2 no PIC, consegui fazer funcionar certinho, só tem uma coisa que ainda não esta certo.

Eu estou alternando o texto do display, seria para acontecer o seguinte, a cada segundo ele deveria trocar a mensagem "Texto1" e "Texto2", eu uso entre as trocas a função Delay_ms(1000); que seria para dar o tempo de 1 segundo, mas troca muito rápido, não chega a dar meio segundo.

O que eu devo fazer para ajustar isso?

Estou usando um Crystal de 12MHz, programando em MikroC, o clock que fica definido no mikroC influencia nisso? tenho que colocar o mesmo valor do crystal?

Há algum cálculo que preciso fazer?
rflbeck
Bit
 
Mensagens: 6
Registrado em: 17 Mai 2010 16:32
Localização: Aqui mesmo

Mensagempor Rodrigo.rb3s » 08 Jun 2010 17:03

rflbeck,

Aumenta o valor que vc está jogando em W antes de chamar a rotina delay se vc já estiver uzando 255 entao vai ter que criar uma outra rotina de atraso de tempo com uma variavel a mais, mas pode ser usada a mesma rotina de delay que o display de lcd usa pra ser inicializado, que funciona...
que linguagem voçe está usando assembly ou c?
byte
Avatar do usuário
Rodrigo.rb3s
Bit
 
Mensagens: 14
Registrado em: 05 Mai 2010 16:57

Mensagempor rflbeck » 09 Jun 2010 09:03

Rodrigo.rb3s escreveu:rflbeck,

Aumenta o valor que vc está jogando em W antes de chamar a rotina delay se vc já estiver uzando 255 entao vai ter que criar uma outra rotina de atraso de tempo com uma variavel a mais, mas pode ser usada a mesma rotina de delay que o display de lcd usa pra ser inicializado, que funciona...
que linguagem voçe está usando assembly ou c?


Estou programando em C.
Não sei o que quer dizer este "W" :mrgreen:
rflbeck
Bit
 
Mensagens: 6
Registrado em: 17 Mai 2010 16:32
Localização: Aqui mesmo

Mensagempor Sergio38br » 09 Jun 2010 09:38

Qual o valor do clk que vc colocou nas definições do projeto no mikroC, este usa o valor declarado para calcular os delays.

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

Mensagempor rflbeck » 09 Jun 2010 09:44

Sergio38br escreveu:Qual o valor do clk que vc colocou nas definições do projeto no mikroC, este usa o valor declarado para calcular os delays.

[ ]'s
Sergio


Opa!

Acho que resolveu, antes eu havia colocado 8MHz, agora eu coloquei 12MHz (o mesmo valor do Crystal), agora acho que esta funcionando.
rflbeck
Bit
 
Mensagens: 6
Registrado em: 17 Mai 2010 16:32
Localização: Aqui mesmo


Voltar para PIC

Quem está online

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

cron

x