Página 1 de 2

PIC16F628A - Ajuda - O microcontrolador não faz nada...

MensagemEnviado: 09 Jun 2010 03:42
por nolfolk
Olá, pessoal. Sou novo no fórum, tudo bem ?

Estou com um (grande?) problema com o microcontrolador PIC 16F628A, eu programo ele mas ele não da resposta alguma.

Vou colocar aqui meu código fonte e meu esquema (protoboard):

O objetivo é simples: acender dois led's.
Estou usando MPLab IDE 8.46 para programar e simular e IC-Prog 1.05D para gravar.

[code]
; INCLUDE OBRIGATORIO
#INCLUDE <P16F628A.INC>

; CONFIGURACOES
__CONFIG _BOREN_ON&_CP_ON&_DATA_CP_OFF&_PWRTE_ON&_WDT_OFF&_LVP_OFF&_MCLRE_ON&_XT_OSC

; BANCOS DE MEMORIA
#DEFINE BANCO_0 BCF STATUS,RP0 ; BANCO DE MEMORIA 0
#DEFINE BANCO_1 BSF STATUS,RP0 ; BANCO DE MEMORIA 1

; CONSTANTES DE SAIDA
#DEFINE LED PORTA,0 ; LED
#DEFINE LED2 PORTB,0 ; LED

; RESET
ORG 0x00
GOTO INICIO

; INTERRUPCOES
ORG 0x04
RETFIE ; RETORNA AO PONTO INTERROMPIDO

INICIO
BANCO_1
MOVLW B'00000000'
MOVWF TRISA ; SETA PORTA COMO OUTPUT
MOVWF TRISB ; SETA PORTB COMO OUTPUT
MOVLW B'10000000'
MOVWF OPTION_REG
MOVLW B'00000000'
MOVWF INTCON
BANCO_0
MOVLW B'00000111'
MOVWF CMCON ; CONFIGURA RA3:RA0 COMO I/O
CLRF PORTA
CLRF PORTB

MAIN
BSF LED ; ACENDE O LED
BSF LED2 ; ACENDE O LED
GOTO MAIN
END
[/code]

E o esquema: http://img199.imageshack.us/i/lilod.png/

Por favor, me ajudem, estou nisso a semana inteira e não consigo "ir pra frente"... Não sei se é problema no meu microcontrolador, mas eu comprei ele essa semana, está novinho!

Ah, as vezes (mas não sempre) ele da erro na gravação com o IC-Prog, dizendo que tem erro em 000h, mas aih eu mando ele gravar denovo e ele nao da erro algum...
Eu acho que uma hora eu gravei como sendo outro modelo de PIC, gravei como sendo o 16F648A, será que tem algum problema quanto a isso ?

Obrigado.

MensagemEnviado: 09 Jun 2010 08:10
por Andre_Cruz
nolfolk,

Em seu esquema o LED esta ligado diretamente no pino do PIC, não sei se você não colocou no esquema ou se não montou, coloque um resistor de 330 Ohms para limitar a corrente.

Para teste, retire o LED do PORTA e teste o nível lógico com o multímetro, para ver se os pinos estão mudando, mas não esta acionando o LED pela falta do resistor para limitar a corrente.

Abraço

André Cruz

MensagemEnviado: 09 Jun 2010 10:05
por nolfolk
André Cruz,

Eu tenho que usar um resistor ? Mas por que ? eu ja liguei o led diretamente nas minhas pilhas e funciona bem :) não entendo por que teria que limitar a corrente :S

tentei fazer isso, o nivel lógico permanece em 0 :(

MensagemEnviado: 09 Jun 2010 10:09
por Sergio38br
A corrente maxima de alguns pinos do pic podem chegar a 25 mA, se vc não limitar a corrente pode danificar o pic, veja no dataxit os olimites máximos..

[ ]'s
Sergio

MensagemEnviado: 09 Jun 2010 15:08
por RobL
Coloque o resistor em série com o led, conforme te falaram.
Tem certeza que o lado do catodo (lado do plástico plano junto ao lide) do seu led está ligado a referência (zero volts). Se estiver invertido não acende.

Para um primeiro teste, não use o cristal.
Use o oscilador interno do PIC.
Veja lá no manual para mudar para oscilador interno.
O problema pode estar nas capacitâncias do seu protoboard com seu cristal .

Falta também um capacitor cerâmico de 100nF x 50V bem junto ao Vdd para Vss (em cima dos pinos do PIC ). Coloque um também no pino do Reset para o zero (Vss).
Junto a Vdd e Vss aplique também um C eletrolítico de pelo menos 10uF. Qualquer valor acima disto está bom para seu teste, mas tem que ter.
Sem esses detalhes não funciona.

MensagemEnviado: 10 Jun 2010 21:33
por nolfolk
Deixa pra la, acho que eu quebrei meu microcontrolador...
Eu tento gravar nele e agora só da a mensagem "Verificação falhou no endereço 0000h" .... ;//

Valeu pela ajuda, pessoal, mas agora acho que só vou ter dinheiro pra comprar um microcontrolador novo mes que vem ;/

MensagemEnviado: 10 Jun 2010 22:00
por nolfolk
Opa! erro meu! eu mudei _CP_ON pra _CP_OFF e ele gravou certinho =DDDD

Code Protection sux ? XD

Vou testar na protoboard, agora :D:D:D

MensagemEnviado: 11 Jun 2010 00:13
por nolfolk
Tentei isso:

[code]
; INCLUDE OBRIGATORIO
#INCLUDE <P16F628A.INC>

; CONFIGURACOES
__CONFIG _BOREN_ON&_CP_OFF&_DATA_CP_OFF&_PWRTE_ON&_WDT_OFF&_LVP_OFF&_MCLRE_OFF&_INTRC_OSC_NOCLKOUT

; BANCOS DE MEMORIA
#DEFINE BANCO_0 BCF STATUS,RP0 ; BANCO DE MEMORIA 0
#DEFINE BANCO_1 BSF STATUS,RP0 ; BANCO DE MEMORIA 1

; CONSTANTES DE SAIDA
#DEFINE LED PORTA,0 ; LED

; RESET
ORG 0x00
GOTO INICIO

; INTERRUPCOES
ORG 0x04
RETFIE ; RETORNA AO PONTO INTERROMPIDO

INICIO
BANCO_1
MOVLW B'00000000'
MOVWF TRISA ; SETA PORTA COMO OUTPUT
MOVLW B'00000000'
MOVWF INTCON ; DESLIGA CHAVE GERAL DE INTERRUPCAO
BANCO_0
MOVLW B'00000111'
MOVWF CMCON ; CONFIGURA RA3:RA0 COMO I/O
CLRF PORTA

MAIN
BSF LED ; ACENDE O LED
GOTO MAIN

END
[/code]

http://img824.imageshack.us/i/test002.png/

Sem sucesso ://
Alguma sugestão ? :/

MensagemEnviado: 11 Jun 2010 02:16
por nolfolk
Acabo de perceber:

Se eu gravo as coisas no MCU e logo depois eu leio elas, elas vêm diferente!
Por exemplo, o Oscilador que era IntRC I\O vem LP, MCRL foi OFF e veio ON, CP foi OFF e veio ON, CPD idem...

Estou usando o IC-Prog 1.05D pra 16F628A, alguém sabe alguma limitação dele, ou meu PIC deve estar estragado mesmo ?

MensagemEnviado: 11 Jun 2010 09:57
por morais
nolfolk escreveu:Opa! erro meu! eu mudei _CP_ON pra _CP_OFF e ele gravou certinho =DDDD

Code Protection sux ? XD

Vou testar na protoboard, agora :D:D:D


caro nolfok, se vc acidentalmente gravou o chip usando o CP_ON provavelmente nao tera mais acesso ao chip pois esse FUSE é uma proteçao contra leituras e gravaçoes (CP= code protect ou proteçao de codigo) no caso do icprog ele sempre lê codigos protegidos mostrando apenas zeros.

MensagemEnviado: 11 Jun 2010 10:21
por nolfolk
Não tem mais volta, então ? :( maldita opção, vou comprar o 16F84A na proxima vez, ele nao tem essas palhaçadas ¬¬""

MensagemEnviado: 11 Jun 2010 10:41
por morais
só não esqueça o fuse CP ligado o 16f84a tambem tem, se nao me engano isso existe em todos os microsC's !

MensagemEnviado: 11 Jun 2010 15:46
por RobL
Não.
Voce pode gravar a flash até 100.000 vezes.
Tanto faz estar com CP on ou off.
Antes de gravar todo gravador, antes limpa a flash.
Se o seu não faz isso, limpe antes a flash e depois grave.
Ao ler a flash desgravada estará tudo em 0xFF.
Não tem nada estragado ai.
Pode usar seu chip.
Tenha certeza que seu gravador está funcionando.
A distância do cabo ao chip deve ser a menor possível.
Pode estar tendo problema com capacitâncias em seu protobord.
Improvise seu chip em um soquete de 18 pin soldado ao seu gravador. Depois aplique-o no protoboard.
Não conheço o seu gravador.

NOTA 1: Todo chip com a letra F é regravável.
NOTA 2: Desaconselhável usar 16F84 é um retrocesso. Use pelo menos o F628A ou algo mais novo.

MensagemEnviado: 11 Jun 2010 19:07
por morais
certo robl
me disseram q o chip ficava inutilizavel.
entao o CP protege apenas contra leitura do codigo q esta gravado, mas nao impede o apagamento, entao o nolfolk nao esta apagando antes de regravar, por isso dá erro na verificaçao!

MensagemEnviado: 12 Jun 2010 18:22
por renatokodaira
Arrume outro programador de PIC. Provavelmente voce tah usando um gravador JDM com o programa ICPROG. Pelo o que voce descreveu, eles nao estao gravando nada no PIC. As vezes acontece isso, voce soh consegue gravar uma vez com essa dupla de programaçao por causa de uma sequencia errada de entrada de modo de gravaçao do ICPROG (Vdd antes do Vpp).
Tente baixar o WINPIC800 e usar ele pra gravar o PIC. Se nao funcionar, compre um ICD2 ou PICKIT2. O seu 16F828A muito provavelmente estah ok, voce apenas nao consegue gravar nele. Se acionou o CP (code protection) nao tem problema, ele soh protege contra leitura da memoria e nao impede que voce regrave outro programa por cima (eh apenas para evitar pirataria do seu firmware).