Página 1 de 2
PIC me deixando louco.

Enviado:
27 Jul 2007 08:43
por icaro51
Pessoal montei uma plaquinha com um pic16f877a e estou ficando louco com isso.
O ICD2 reconhece o pic, le o seu conteudo (antigo) mas nao grava o novo, eu acho que o cristal nao esta oscilando, mas alguem sabe se o cristal precisa oscilar para o ICD2 gravar o PIC?
O negocio e o seguinte, logo que montei a placa tava funcionando, ai parou, achei que tivesse algum curto nas trilhas, entao eu deu umas cortadas e ele voltou a funcionar, depois de um tempo parou outra vez, no desespero eu troquei os capacitores do cristas de 20pf para 15pf, voltou a funcionar, parou, ai lembrei dos capacitores de desacoplamento, coloquei um de 100nF direto nas pernas do pic, voltou a funcionar, parou, coloquei mais um de 100nF na outra alimentacao, voltou, parou e agora nao volta mais...
Alguem me da alguma dica enquanto eu ainda tenho cabelo
Infelizmente nao tenho osciloscopio para ver se o pic ta oscilando
O PIC parece estar ok pq o ICD2 reconhece ele, le ele so nao grava, na hora de gravar quando ele vai verificar a gravacao encontra os dados da ultima gravacao.
Desde ja agradeco,
Icaro

Enviado:
27 Jul 2007 08:54
por fabim
ICARO. O problema é que o cristal do pic a ser gravado não pode estar oscilando no momento da gravação com o ICD.
Montei o ICD uma ves só por curiosidade de saber se o problema era no meu gravador ou coisa do tipo.. Mais não..
Os 16F628,874,876,877 no momento da gravação para que eles não deem pau, é so desligar o cristal do circuito.
Abraços
Fabim

Enviado:
27 Jul 2007 09:04
por icaro51
nao funcionou, tirei o cristal do circuito e continua tudo na mesma


Enviado:
27 Jul 2007 09:11
por icaro51
refiz a solda dos capacitores de 100nF de desacoplamento e voltou a funcionar. Qual o melhor valor para esse capacitor?
Uma outra coisa, estou pensando em refazer essa placa pois esta parando muito frequetimente, tenho uma duvida, preciso ligar os dois vdd e vss do pic ou so um deles e suficiente? Se so um for suficiente posso usar um de cada lado? Porque o pic tem, por exemplo nao lembro agora, os pinos 13vdd 14vss 30vdd 31vss posso usar do um dos vdd e so um dos vss em qualquer combinacao?

Enviado:
27 Jul 2007 09:20
por fabim
bom. eu sempre interliguei os dois..
ex.
VDD1 com VDD2 e VSS1 Com VSS2.
Se eu alimentar o uC pelo VDD1 eu coloco o cap de 100Nf entre VDD e VSS 2 e no VDD1 e VSS1 eu coloco um capacitorzinho de 1...10uF.
Nunca deu problema.
Abraços
Fabim

Enviado:
27 Jul 2007 10:05
por proex
oi fabim, o oscilador do PIC TEM QUE ESTAR FUNCIONANDO para que o chip seja gravado pelo ICD. Existe até uma tela de mensagem de erro que aparece quando isso acontece.
O Oscilador deve ser configurado como XT para clock externo de até 4Mhz e HS para clock acima de 4Mhz.
Deve haver um resistor de 4k7 no pino 1, para o +VCC. A tensao do PIC deve estar em 5V.
O recurso de LOW VOLTAGE PROGRAM deve estar DESABILITADO.
Vc esta usando o ICD original da Microchip?
Ja que esta usando o ICD, tente debugar seu programa atraves dele, e nao apenas gravar.
Veja se em seu programa nao há algum erro fazendo com que o ponteiro de programa se perca durante a execuçao.

Enviado:
27 Jul 2007 10:14
por icaro51
Estou usando o ICD2 original da microchip, estou usando um resistor de 10k no pino 1 ao vdd como manda o manual.
O problema nao esta no programa, esta com 99% de certeza no oscilador, eu coloco o capacitor de 100nF no vdd e vcc e ele funciona por um tempo, depois de uns 10 min para, se eu refaco a solta volta mais um poquinho.
As vezes o pic grava, ai quando eu tento outra vez e nao grava eu checo o que ele tem na memoria e continua la o programa antigo, mas nao funciona, se eu encontro a ponta do multimetro no osc1 ele comeca a funcionar, quando eu tiro... para....

Enviado:
27 Jul 2007 10:16
por icaro51
Ahhh tentei debugar tb, quando o pic esta funcionando o debug funcina legal, agora quando para para tudo, tanto o gravador quanto o debug.
As configuracoes devem estar certas pq hora funcina hora nao e as configuracoes sao as mesma, em outro pic no protoboard o prog funciona...

Enviado:
27 Jul 2007 10:18
por scheleder
Qual o valor do Xtal que VC esta usando?
Não está overclockando?
Senão me parece um caso do osmar, osmarcontato.
Pode ser também erro de programa, no MPLAB roda?
esperimenta deixar rodando uns tres minutos ou mais no mplab, de repente esta parando em uma int...

Enviado:
27 Jul 2007 10:28
por icaro51
Estou usando um cristar de 4Mhz e dois cap de 15pF
O programa esta Ok pq eu testei ele em outro pic no protoboard e funciona legal, o problema e com o pic do board que nao grava (na maioria das vezes).
Nao acredito que seja problema de osmar pq eu ja chequei todos as conecoes com o multimetro e ta tudo legal, ja refiz as soldas, ja "cavoquei" entre as trilhas e esse vai e vem de funciona e para nao para.
Acho que deve ser alguma coisa no "desenho" do pcb, fiz uma "cama" para o cristal que eu nunca faco com o terra ja cortei ela fora agora mas a saida e entrada do terra ficaram quadrada (perto do cristal).
Nao sei minhas desculpas estao se acabando


Enviado:
27 Jul 2007 10:32
por icaro51
Olha se o bagulho nao e estranho,
Primeiro o ICD2 reconhece o pic, verifica e tudo ok
depois ele grava e quando vai verificar encontra os valores do programa antigo, esse valor no end 0x1F era 0x1001 no programa antigo, no novo e 0x1507


Enviado:
27 Jul 2007 11:16
por painho
icaro51 estou usando os fuse assim
#include <16F877A.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz)
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#use delay(clock=20000000)
o clock comum de 2 pinos e com cap de 33pF para o gnd o sendo o cristal o mais perto do pic e um delay antes de fazer alguma coisa
void main(){
delay_ms(500);
setFuse();
loop();
}

Enviado:
27 Jul 2007 11:43
por icaro51
Estou programando em asm, a maioria dos fuses estao como eu coloquei so alguns que eu desconheco, o que eu coloquei:
__CONFIG _CP_OFF & _WDT_OFF & _HS_OSC & _PWRTE_OFF & _LVP_OFF & _DEBUG_OFF & _CPD_OFF
Ja tentei alterar alguns mas nada aconteceu...
No desespero arranquei o cristal e os capacitores e coloquei um oscilador ceramico de 4mhz... resultado... agora nada acontece mesmo... de jeito nenhum.
Dor de cabeça

Enviado:
27 Jul 2007 11:59
por Vonnilmam
Prezado icaro51.
Eu acho que o problema do seu circuito esta no proprio pic, ele deve estar com defeito..isso que voce relatou já aconteceu com um cliente, o pic era novo e não aceitava a gravação nos bits de configuração, simplismente troquei o pic por outro....se voce testou outro pic no lugar e funcionou corretamente, então troque o pic...
Outra coisa, tanto faz se o cristal estiver ou não no circuito juntamente ao pic para ser gravado....eu faço gravações incircuit sem o cristal do pic e funciona normalmente...
ate..

Enviado:
27 Jul 2007 13:56
por zielpunkt
O que é que está conectado nos pinos utilizados para ICSP? Vc alimenta apenas o micro na hora de gravar ou também outros circuitos que estão pendurados no +5 dele? Pode ser por ai...
É isso.