HOME      PROJETOS      PROGRAMAÇÃO     

PROGRAMADOR ICSP - In Circuit Serial Programmer

Este programador permite programar um microcontrolador sem removê-lo do circuito.

Para montar o programador, siga o esquema elétrico abaixo ou então faça o download do arquivo Programador_ICSP_SF.zip com o projeto do circuito desenvolvido no Eagle.

Antes de iniciarmos, devemos avisar que o circuito deste programador usa a tensão fornecida pela porta serial (RS232) do PC, geralmente 25V, para gerar a tensão requerida de 13V que coloca o microcontrolador em estado de programação porém, as portas seriais de alguns PCs não fornecem tensão suficiente para isso. Se a porta serial de seu PC não fornece tensão suficiente, aconselhamos a montagem do cirtuito "Programador ICSP Com Fonte" que possui alimentação própria para conseguir colocar o microcontrolador no estado de programação.




POR QUE DESENVOLVER ESTE PROJETO?

Este projeto foi desenvolvido quando começamos a ter problemas para gravar microcontroladores da família 18F com o gravador McFlash, em particular o PIC18F4520. O McFlash não está preparado para gravar microcontroladores da família 18F. Seria necessário comprar um outro ou então tentar atualizar o software que reside no PIC16F628A desse gravador. Já sabiamos que na internet existem muitos projetos para construção de gravadores ICSP e então resolvemos adotar este que estamos publicando aqui.




O QUE É UM PROGRAMADOR ICSP?

O programador ICSP é um circuito que permite programar um microcontrolador usando a porta serial do PC e um programa especial para essa função. Esse mecanismo chama-se "In Circuit Serial Programming" ou abreviadamente ICSP.

São programadores de baixo custo, construidos com poucos componentes e não necessitam de alimentação externa, características que fazem com que o projeto seja de fácil execução.

O programador ICSP se comunica com o microcontrolador através da porta serial do PC (RS232), usando um programa desenvolvido especialmente para essa finalidade, como o IC-PROG.COM que deve ser baixado e instalado em seu computador.

Abaixo temos o esquema elétrico do programador ICSP onde os transistores servem apenas para chaveamento e podem ser substituidos por outros equivalentes.

Os componentes do circuito são comuns e podem ser encontrados facilmente em lojas de eletrônica, em sites da internet, recuperados de aparelhos velhos (rádios, gravadores, etc) ou na sua velha caixa de bagulhos.

Atenção redobrada deve ser dada na soldagem dos pinos do conector DB9 pois a maioria das confusões são geradas nessas conexões.

ESQUEMA ELÉTRICO

Clique na Imagem Para Ampliar




COMO O PIC É GRAVADO NO CIRCUITO SEM SER RETIRADO?

Todo microcontrolador PIC possui portas para programação "In Circuit", isto é, essas portas permitem programar o microcontrolador sem necessidade de removê-lo do circuito, levá-lo ao programador, fazer a programação, retirá-lo do programador e recolocá-lo no circuito novamente. Geralmente essas operações são aborrecidas e acabam danificando os pinos do microcontrolador.

Nos microcontroladores PIC, as portas de programação são sempre identificadas com os nomes VPP, PGD, e PGC, onde

VPP, é o pino que receberá a tensão de 13V para o microcontrolador entrar em modo de programação.

PGD, é o pino que receberá serialmente os bits do programa que será gravado no microcontrolador.

PGC é o sinal de clock enviado pelo programador para serializar os bits de dados.

VDD fornece 5v no caso de ser necessário programar o microcontrolador fora do circuito.

SE O MICROCONTROLADOR ESTIVER NUM CIRCUITO QUE JÁ POSSUI ALIMENTAÇÃO, O PINO VDD NÃO DEVERÁ SER USADO.

Para saber a posição dos pinos VPP, PGD, e PGC será necessário consultar o data sheet de cada microcontrolador.




RECOMENDAÇÕES DE USO PARA ESTE PROGRAMADOR ICSP

Antes de começar a programar seus microcontroladores com ICSP, devemos avisar que o pino VPP do microcontrolador nunca deve ficar ligado diretamente ao VDD como mostrado em muitos circuitos encontrados na internet. Durante a programação esse pino receberá do programador ICSP uma voltagem de aproximadamente 13V para colocar o microcontrolador em estado de programação, por isso, atenção para os seguintes casos:

1 - Se o pino VPP estiver ligado diretamente ao +5V, o programador ou o microcontrolador poderão ser destruidos. Assim, em qualquer projeto, o pino VPP sempre deverá ser ligado ao +5V através de um resistor de no mínimo 1K (recomendamos 10K), conforme a figura abaixo.

2 - Quando se deseja usar os pinos de programação PGD e PGC para outros fins, eles devem ser isolados do programador através de resistores de no mínimo 1K, conforme a figura abaixo, senão o programador não conseguirá enviar o programa ao microcontrolador.

3 Se o projeto incluir uma switch para dar RESET no microcontrolador, nunca pressionar esse botão durante a programação pois a tensão de programação (VPP de +13V) será desviada diretamente para o Ground causando um curto e... adeus porta serial do PC. Veja a figura abaixo.














COMENTÁRIOS SOBRE A MONTAGEM

CABO SERIAL DB9

O cabo serial DB9, que liga o programador ICSP a porta serial do PC (RS232), utiliza os sinais CTS, RTS, DTS, GND, TX e RX. Alguns cabos, como o do programador McFlash, não possuem todos esses sinais e assim não servem para esse projeto. É bom adiquirir ou montar um cabo que forneça todos os sinais.

O CIRCUITO DO PROGRAMADOR

O circuito é muito simples e pode ser construido em algumas horas. Faça o download do arquivo Programador_ICSP_SF.zip com o projeto do circuito desenvolvido no Eagle.

CONEXÃO COM O PIC

Para conectar o programador ICSP com a placa onde reside o microcontrolador a ser programado, pode-se construir um cabo com conectores do tipo MODU que facilitam o trabalho na hora de programar e mantêm as coisas mais organizadas. Leia mais sobre Conectores Modu.

O conector tem 6 conexões:

  1. VPP/MCLR - VPP/Master Clear do microcontrolador
  2. VDD - Alimentação (+5V) (Vermelho)
  3. GND - Ground (negativo)
  4. PGD - Program Data do microcontrolador
  5. PGC - Program Clock do microcontrolador

PROGRAMADOR E O CABO

A figura ao lado mostra o programador e o cabo na posição em que este deve encaixar nos pinos de saída do circuito. Notar que as pontas soltas do cabo devem ser conectadas nos respectivos pinos do microcontrolador. O fio vermelho é a alimentação (+5v).












O PROGRAMA ICPROG

O programador ICSP funciona em conjunto com o programa ICPROG que é grátis e pode ser baixado do site IC-PROG.COM.

O programa ICPROG não é uma interface de programação. Ele permite somente realizar a gravação do microcontrolador sem que seja necessário removê-lo do circuito em que esta instalado.

Para escrever, compilar, debugar e gerar o arquivo executável do programa, deve-se usar a IDE MPLAB da Microchip.

O programa ICPROG deve ser instalado e configurado conforme instruções do programa instalador baixado do site IC-PROG.COM.

Após a instalação, inicie o programa e faça a configuração abrindo o menu "Settings"->"Hardware" e escolha "JDM Programmer" na lista "Programmer".

Selecione "Direct I/O" em "Settings"->"Interface" e uma porta serial em "Settings"->"Ports" deixando o resto das opções em branco.

MUITA ATENÇÃO ANTES DE GRAVAR O MICROCONTROLADOR:
Não esquecer de selecionar o modelo do microcontrolador no menu "Settings"->"Devices".
Se isso não for feito vai dar a maior confusão na hora de gravar o programa no microcontrolador, sem contar os erros na hora de executar o programa.

Antes gravar o programa no microcontrolador, configure a porta serial do PC com as características abaixo:

 BAUDRATE   9600 
 Bits   8 
 Parity   0 
 Stop bits   1 
 Flow control   none 

Conecte uma ponta do cabo serial no PC e a outra no gravador ICSP.

Conecte o cabinho, construido com os conectores MODU, de um lado ao programador ICSP e do outro lado ao PIC que será gravado.

Abra o menu "Files"->"Open files" e selecione um arquivo com extensão ".HEX" que foi gerado pela compilação no MPLAB. Ao abrir o arquivo, o código hexadecimal do programa aparecerá na tela (geralmente na aba "Buffer1").

Ligue a alimentação do circuito, clique no botão com um Raio ou selecione "Commands"->"Program all" no menu do programa.

Durante a gravação, o LED do programador deverá acender e apagar algumas vezes indicando que a gravação esta sendo realizada.

A alimentação do circuito, no qual o PIC esta instalado, deve estar ligada antes de iniciar a programação.

Quando a gravação terminar, o programa começará a ser executado automaticamente. Se isso não acontecer, retire o conector do programador do circuito, desligue e ligue a limentação da fonte novamente. Se mesmo assim o programa não executar, confira todas as conexões do circuito e tente gravar novamente. Uma das causas do programa não executar automaticamente após a gravação se deve ao tipo configuração do pino MCLR feita pelos parâmetros do Config Bits do microcontrolador. Se nesses parâmetros foi usada a opção _MCLR_OFF o programa pode não executar automaticamente. Tente mudar o parâmetro para _MCLR_ON e recompilar o programa.






RESULTADOS

Com esse programador fui capaz de gravar, sem problemas, microcontrolador da família 16F como PIC16F73, PIC16F628A, PIC16F877A e da família 18F como PIC18F4520 e PIC18F4550.



Índice dos circuitos




H P S P I N

Desde 04 de Março de 2010

Atualização: 19 de Mar de 2024