Página 1 de 2

Como programar PIC em 3.3V?

MensagemEnviado: 20 Out 2011 23:25
por uilter
Olá pessoal!

Estou com problema na minha monografia que não sei onde mais pesquisar.
Estou tentando gravar com o ICD2BR um microcontrolador PIC18F46K22.

A tensão de operação da minha placa é de 3.3V.
Eu não consigo gravar o PIC em 3.3V.

Meu programa esta em C e eu uso o compilador C18.

Ele chega a conectar o PIC só que na hora de grava ele apresenta o seguintes erros.

Código: Selecionar todos
Connecting to MPLAB ICD 2
...Connected
Setting Vdd source to target
ICDWarn0020: Invalid target device id (expected=0x2A0, read=0x0)
...Reading ICD Product ID
Running ICD Self Test
...Passed
MPLAB ICD 2 ready for next operation
Programming Target...
ICDWarn0052: MPLAB ICD 2 cannot validate a target device. Please make sure that the target device is connected and properly powered. Select "OK" to continue, or "CANCEL" to abort the operation
...Validating configuration fields
...Erasing Part
...Programming Program Memory (0x0 - 0xFF)
Verifying...
ICDWarn0052: MPLAB ICD 2 cannot validate a target device. Please make sure that the target device is connected and properly powered. Select "OK" to continue, or "CANCEL" to abort the operation
...Program Memory
ICD0161: Verify failed (MemType = Program, Address = 0x0, Expected Val = 0xEF63, Val Read = 0x0)
ICD0275:  Programming failed.
MPLAB ICD 2 ready for next operation


Antes de conectar o ICD2BR a minha placa ou ligar eu desmarquei a opção "Power Targe circuit from MPLAB ICD 2". Que fica nas opções do ICD2 na aba POWER.


Esse é um programa de teste apenas para ver se funciona a gravação.
Apenas um botão que ao apertar inverte o estado do LED na porta RD2

Código: Selecionar todos
#include<p18f46k22.h>

#pragma config FOSC = HSMP      //Cristal de 8Mhz
#pragma config WDTEN = OFF
#pragma config PWRTEN = ON
#pragma config BOREN = SBORDIS
#pragma config PBADEN = OFF
#pragma config MCLRE = EXTMCLR
#pragma config LVP = ON


void main()
{
   ADCON1 = 0x0F;         
   TRISD = 0xFF;
   TRISC = 0x00;
   
   while(1)
   {
      if(!PORTCbits.RC2 == 0)
      {
         PORTDbits.RD2 = !PORTDbits.RD2; //inverte o LED
      }
   }
}


As conexões do ICD2BR com a placa eu segui como mostra no manual do próprio ICD2BR na página 48 inclusive os valores dos resistores.

Se alguém já programou algum outro modelo de PIC em 3.3V é sempre bem vinda a ajuda também! Acredito que o processo seja parecido.


Muito obrigado desde já!
Abraço

MensagemEnviado: 21 Out 2011 11:47
por ÁgioFelipe
O ICD2 não tah detectando o PIC na sua placa.
Como é essa sua placa? Foi vc que fez? Ela tem alimentação própria?

MensagemEnviado: 21 Out 2011 18:29
por rona123
O ICD2 não tem fonte adequada a programação de dispositivos de 3,3V. A saida é alimentar o target com fonte externa como voce faz.

Mesmo assim ele não está conseguindo identificar o dispositivo. Pode ser que voce tenha alguma coisa nas linhas PGC e PGD que estejam matando os sinais de verificação.

Tambem pode ser que o dispositivos ou o programador estejam com defeito. Tente conectar seu ICD2 a outro dispositivo e veja se ele reconhece. Os buffer do ICD2 podem estar com defeito.

MensagemEnviado: 21 Out 2011 18:41
por uilter
ÁgioFelipe escreveu:O ICD2 não tah detectando o PIC na sua placa.
Como é essa sua placa? Foi vc que fez? Ela tem alimentação própria?


Foi eu quem fiz. Estou seguindo as ligações do ICD2BR como diz o manual na página 48.

rona123 escreveu:O ICD2 não tem fonte adequada a programação de dispositivos de 3,3V. A saida é alimentar o target com fonte externa como voce faz.

Mesmo assim ele não está conseguindo identificar o dispositivo. Pode ser que voce tenha alguma coisa nas linhas PGC e PGD que estejam matando os sinais de verificação.

Tambem pode ser que o dispositivos ou o programador estejam com defeito. Tente conectar seu ICD2 a outro dispositivo e veja se ele reconhece. Os buffer do ICD2 podem estar com defeito.


A minha placa tem alimentação externa em 3.3V

Essa mesma alimentação da placa eu utilizo no ICD2BR nos pinos 2 (GND) e 3 (VCC).

O ICD2BR não esta queimado pois consigo programar e degubar com o PIC18F4520. (apenas em 5V)

Alguém sabe os procedimentos para programar o PIC18F4520 em 3.3V? Pq se eu conseguir posso fazer a substituição por ele.

MensagemEnviado: 22 Out 2011 11:36
por ÁgioFelipe
Posta o esquemático da sua placa, fica melhor. É placa mesmo ou Protoboard?

MensagemEnviado: 22 Out 2011 15:53
por uilter
ÁgioFelipe escreveu:Posta o esquemático da sua placa, fica melhor. É placa mesmo ou Protoboard?


Vou fazer e posto o esquemático assim que puder. Até mais.

Esquemático

MensagemEnviado: 24 Out 2011 14:25
por uilter
Imagem

Bem como eu disse o programa teste não condiz com o esquemático.
Apenas fiz o programa teste para verificar em um protoboard se está tudo OK.

MensagemEnviado: 24 Out 2011 19:56
por rona123
Uilter

Seu processador está OK?

Normalmente os dispositivos de 3,3V são mais sensiveis a tensões mais altas. Basta esquecer de mudar o device no MPLAB, para o ICD2 detonar o CI com o VPP. (Isso já aconteceu comigo em situação de reescrever o codigo para outro dispositivo, que parece ser seu caso)

[]'s rona123

MensagemEnviado: 24 Out 2011 20:03
por uilter
rona123 escreveu:Uilter

Seu processador está OK?

Normalmente os dispositivos de 3,3V são mais sensiveis a tensões mais altas. Basta esquecer de mudar o device no MPLAB, para o ICD2 detonar o CI com o VPP. (Isso já aconteceu comigo em situação de reescrever o codigo para outro dispositivo, que parece ser seu caso)

[]'s rona123


O Microcontrolador está ok.
Eu troquei ele por mais 2 que tenho aqui e os outros programaram em 5V normalmente.

ICD2BR tbm esta OK pois eu testei com outros microcontroladores.

MensagemEnviado: 24 Out 2011 20:06
por B-EAGLE
certa vez vi uma adaptação que tinha que ser feita na placa do ICD2BR pra poder gravar algum uC, só não lembro qual, seria bom entrar em contato com o suporte da Mosaico pra ver se não tem nada a fazer...

MensagemEnviado: 24 Out 2011 20:16
por _blackmore_
Não sei se lhe ajuda, pois toda vez que penso ter que usar, eu encontrou um caminho para não usar ...


http://www.mosaico.com.br/Midias/Docume ... rev_13.pdf


página 46.

MensagemEnviado: 25 Out 2011 08:47
por rona123
Uilter

Faço a programação normal com as ligações de PGD e PGC direcionadas aos pinos indicados no Datasheet. A única resalva é a alimentação que deve ser de 3,3V. O VPP deve ser desativado pelo programador e isso acontesse quando se faz a seleção do dispositivo no MPLAB (basta ver a tela de setting do ICD2).

A página apontada pelo colega _BlacKmore_ mostra os resistores de isolação da linhas de programação e o resistor de reset quando é necessário. Os resistores de isolação permitem o uso das portas do uC sem comprometimento da programação/depuração ICSP (depende dos valores).

Note que voce deve confirmar a funcionalidade com outro dispostivo igual ou de 3,3V. Caso tenha apenas um e ele esteja queimado voce ficará em um impasse sem solução. Veja tambem o datasheet desse dispositivo para confirmar a sensibilidade a tensões mais alta e procure relembrar seus procedimentos para avaliar se existiu alguma situação que possa ter danificado o chip. Tenho aqui o PIC18F24J50 e gravo e debugo sem dificuldades seguindo os detalhes descritos sem nenhum arranjo ou circuito adicional.

Abraço
rona123

MensagemEnviado: 25 Out 2011 14:42
por uilter
rona123 escreveu:Uilter

Faço a programação normal com as ligações de PGD e PGC direcionadas aos pinos indicados no Datasheet. A única resalva é a alimentação que deve ser de 3,3V. O VPP deve ser desativado pelo programador e isso acontesse quando se faz a seleção do dispositivo no MPLAB (basta ver a tela de setting do ICD2).

A página apontada pelo colega _BlacKmore_ mostra os resistores de isolação da linhas de programação e o resistor de reset quando é necessário. Os resistores de isolação permitem o uso das portas do uC sem comprometimento da programação/depuração ICSP (depende dos valores).

Note que voce deve confirmar a funcionalidade com outro dispostivo igual ou de 3,3V. Caso tenha apenas um e ele esteja queimado voce ficará em um impasse sem solução. Veja tambem o datasheet desse dispositivo para confirmar a sensibilidade a tensões mais alta e procure relembrar seus procedimentos para avaliar se existiu alguma situação que possa ter danificado o chip. Tenho aqui o PIC18F24J50 e gravo e debugo sem dificuldades seguindo os detalhes descritos sem nenhum arranjo ou circuito adicional.

Abraço
rona123



_BlacKmore_ escreveu:Não sei se lhe ajuda, pois toda vez que penso ter que usar, eu encontrou um caminho para não usar ...


http://www.mosaico.com.br/Midias/Docume ... rev_13.pdf


página 46.


Todos os cuidados com os resitores e ligações do ICD2BR ao meu projeto eu fiz seguindo o manual do ICD2BR.
Só que esse manual que o colega _BlacKmore_ postou eu não tinha conhecimento. Verifiquei os microcontroladores que o ICD2bR tem suporte e o PIC18F46K22 não esta na lista.

Acredito que antes de comprar o PIC eu tenha olhado a lista do ICD2 e não do ICD2BR.

Ontem depois de ver que ele não suportava eu fiquei tentando programar o PIC18F4520 em LVP tanto no ICD2bR quanto no PICKIT2. Só que mesmo assim não consegui.

Resolvi programar ele em 5V e modificar os registradores BORV para 2.85V e desativar o LVP. Logo após programá-lo eu coloquei em meu controle que opera em 3.3V e funcionou.

Só que programar o PIC18F4520 diretamente em 3.3V ainda não consegui.
No caso do PIC18F4520 existe o pino RB3/PGM que deve ser conectado ao ICSP do ICD, certo?

Essa vai ser a minha solução pois o tempo está muito curto para a entrega do meu projeto e não tenho verba para comprar um ICD melhor. hehe

MensagemEnviado: 25 Out 2011 16:14
por rona123
Uilter

Abri a tela do MPLAB 8.73 e o PIC18F46K22 é programado e depurado pelo ICD2.

Sei que aparecem falhas no programa, mas julgo ser pouco provável.

Não tenho esse chip e até gostaria de experimentar, mas estamos meio longe. Se não, lhe convidaria para visitar meu lab e fazer alguns testes.

[]'s rona123

MensagemEnviado: 26 Out 2011 00:24
por B-EAGLE
bom, como estou na mesma cidade do colega, dá pra fazermos um teste com meu ICD2 caseiro, que está guerreiro com seus 4-5 anos de uso....

se quiser podemos marcar um dia.

falow