HOME      PROJETOS      PROGRAMAÇÃO     

PROGRAMADOR ICSP PARA PORTA USB




INTRODUÇÃO

O projeto deste programador ICSP para porta USB que pode ser encontrado em seu site original usbpicprog.org, foi desenvolvido por Frans Schreuder e outros colaboradores como sendo um projeto de código aberto (open source), significando que pode ser baixado e usado livre de qualquer ônus. No site usbpicprog.org, Frans Schreuder exibe um pequeno vídeo explicativo sobre o projeto mas é falado em inglês e não há legendas.

Não vamos nos preocupar em traduzir o texto do site original mas vamos adaptar esse projeto para nossas necessidades, substituindo alguns componentes originais por componentes mais fáceis de encontrar em nosso mercado e tentar sanar alguns pontos que são nebulosos no site oficial, como a carga do bootloader, a carga do firmware e o jumper nos pinos 1 e 2 do conector PGC_SELF do esquema elétrico.





DOWNLOADS

Antes de continuar, será necessário fazer os downloads dos arquivos no site de origem http://usbpicprog.org. Na coluna da direita da tabela abaixo estão os links para os arquivos que devem ser baixados.

 
 Download do firmware
Isso vai baixar o arquivo "firmware-0.5.0.zip" 
  https://sourceforge.net/projects/usbpicprog/files/usbpicprog-firmware/ 
 Download do Softwarea do PC 
 Baixar a última versão (até o momento "UsbPicProg-x86-0.6.0.exe") .
Se sua máquina for 64 bits, baixe a versão AMD64.
 https://sourceforge.net/projects/usbpicprog/files/usbpicprog-software/ 
 Download do esquema eletrico   http://usbpicprog.org/images/usbpicprog-hardware-0.3.2.pdf 

Se os arquivos da tabela acima não forem encontrados, entre diretamente na página principal do site http://usbpicprog.org e procure por eles na sessão de downloads.





ESTRUTURA DO PROJETO

Conforme descrito no site usbpicprog.org, o projeto divide-se em tres partes:

Hardware

É uma placa de circuito que consiste apenas dos elementos necessários para conexão entre a porta USB do PC com os pino ICSP de programação dos microcontroladores alvos.

Firmware

É um programa que roda no microcontrolador da placa, um PIC18F2550, que usa o USB Framework da Microchip (não se preocupe com isso). O firmware, por sua vez, divide-se em Bootloader e o programa Firmware-0.5.0.

Software do PC

É uma aplicação que roda no PC e que se comunica com a placa programadora através da porta USB. Essa aplicação é baseada no wxWidgets (os gurus do Windows devem saber o que é isso, eu não...) e é responsável pelas operações de reconhecimento, leitura, gravação e apagamento realizadas no microcontrolador alvo.





MONTAGEM DO PROGRAMADOR

O hardware do projeto original foi desenhado no Kicad mas, para aqueles que gostam de usar o Eagle para montar seus PCBs, aqui forneceremos uma versão de projeto da mesma placa para download, com as substituiçoes de alguns componentes já realizadas.

Vamos montar o circuito conforme o esquema adaptado, que pode ser visto na figura abaixo, usando um microcontrolador PIC18F2550 que também pode ser substituido por um PIC18F4550 porém consumindo muito mais espaço no PCB e desperdiçando desnecessariamente um microcontrolador com muitas portas de I/O.

O desenho do circuito adaptado não é rigorosamente igual ao desenho do projeto original mas funcionou perfeitamente com os dois microcontroladores e sem nenhuma alteração no software do PC ou no firmware.




      

Clique na figura para ampliar


Os microcontroladores PIC exigem uma tensão de 12V para entrarem em estado de programação. Como o circuito do programador é alimentado pela porta USB do PC, que fornece apenas 5V, seria necessário uma fonte externa de 12V para fornecer a tensão de alimentação adequada. Porém, o circuito formado pelos diodos D1, D2, D3 pelos capacitores C8, C9, C10, pelos resistores R1, R12, pelo transistor Q4 e pelo diodo D4, aumenta a tensão de 5V,fornecida pela porta USB do PC, para 12V que podem ser utilizados como tensão de programação para um microcontrolador.

O transistor Q1, comandado pelo firmware através do PORTB<R3>, funciona como gatilho para disparar a tensão de programação sobre o microcontrolador alvo da programação.

O transistor Q2, comandado pelo firmware através do PORTB<R5>, funciona como Reset do microcontrolador alvo. Aparentemente isso é usado pela função "Executar alvo" do programa "usbpicprog.exe" do PC que gerencia a placa do programador.

O transistor T1, comandado pelo firmware através do PORTB<R2>, é usado para ligar a tensão que alimenta o microcontrolador alvo durante a fase de programação. A tensão de alimentação de 5V, fornecida no pino 4 do soquete ICSP do programador, somente estará disponível durante a fase de programação sendo desligada logo em seguida. Assim, para poder executar o programa gravado no microcontrolador alvo, usando a função "Executar alvo" do programa "usbpicprog.exe", é necessário que o circuito ao qual o microcontrolador alvo pertença, esteja alimentado por sua própria fonte. Disso podemos concluir que:


  1. Quando o microcontrolador alvo fizer parte de um circuito alimentado por uma fonte exclusiva, não será necessário conectá-lo ao pino 4 do soquete ICSP durante a programação pois ele já esta sendo alimentado por sua própria fonte.

  2. Quando o microcontrolador alvo estiver sendo programado fora de um circuito, ele deve ser alimentado pelo pino 4 do soquete ICSP do programador. Assim, para programar um microcontrolador sem que ele faça parte de um circuito, basta espetá-lo num protoboard vazio, conectar nele todos os pinos do soquete ICSP e acionar a programação. Posteriormente, retira-se o microcontrolador alvo do protoboard e se coloca no circuito que deverá usá-lo. Aqui fica uma sugetão para montar uma placa com soquete ZIF onde seriam espetados os microcontroladores a serem programados mas... isso é uma outra história.





Aspecto da montagem no PCB
<



ALTERAÇÕES NO HARDWARE

Em nossa versão modificada do projeto substituiremos os transistores MOSFET por transistores BIPOLARES, conforme dissemos anteriormente, porque os transistores bipolares podem ser mais facilmente encontrados nas lojas de componentes eletrônicos pela Internet. Aqueles que tiverem os componentes originais disponíveis, devem mantê-los. Os transistores BS170 podem ser substituido tranquilamente por transistores NPN do tipo BC337 ou equivalente. O trasistor TSM2301CX pode ser substituido por um PNP tipo BC327 ou equivalente. Muito cuidado com as posições desses transistores quando da soldagem na placa.

Devemos, também, acrescentar um resistor de 10K entre o pino 1 (MCLR/VPP) do microcontrolador e a alimentação (+5V), para evitar que esse pino fique conectado diretamente no +5V, conforme recomendado. O resistor tem a finalidade de evitar que, acidentalmente, a tensão de alimentação de 5V entre em colisão com a tensão de programação de 12V que, no caso, poderia danificar a porta USB.





INSTALAÇÃO DO BOOTLOADER

Antes de gravar o firmware no chip do programador, será necessário gravar nele o programa bootloader "boot1.0.hex" usando seu velho programador de porta serial.

Se você ainda não tem um programador de porta serial, tente montar aquele descrito neste site em  ICSP - In Circuit Serial Programmer . Também será necessário um programa que possa ser usado com o gravador de porta serial, como o IC-PROG.

Para programar o bootloader, conecte chip do programador (PIC18F2550) no gravador de porta serial através dos pinos de gravação ICSP. Execute o programa IC-PROG, abra o arquivo "boot1.0.hex" e clique na função "Programar". Não deve haver problemas nessa etapa.





INSTALAÇÃO DO FIRMWARE

Inserir na placa do programador, o PIC18F2550 gravado com o bootloader.

Retirar o jumper dos pinos 1 e 2 do soquete PGC_SELF para que o programador entre em modo de bootloader e, em seguida, conectar o cabo USB no conector da placa e na porta USB do PC.

Executar o programa usbpicprog.exe que deve reconhecer o programador.

No menu "Arquivo" ---> "Abrir", do programa "usbpicprog.exe", selecionar o arquivo "firmware-0.5.0.hex" fornecido com o pacote e acionar a função "Programar" para gravá-lo no PIC18F2550 da placa do programador.

Ao final da gravação, desconectar o programador da porta USB, insirir o jumper para ligar os pinos 1 e 2 do conector PCG_SELF.





JUMPER E MODO DE PROGRAMAÇÃO

No site original não fica bem claro qual a função do jumper entre os pinos 1 e 2 no soquete PGC_SELF mas ele funciona da seguinte maneira:

  1. Quando o jumper entre esses pinos não estiver presente, ao ligar o programador ele entra em estado de bootloader para poder atualizar seu próprio firmware.

  2. Quando os pinos 1 e 2 estiverem fechados pelo jumper, ao ligar o programador ele entra em modo normal, ou seja, o modo para gravar, ler e apagar microcontroladores alvo.





INSTALAÇÃO DO SOFTWARE

Executar o arquivo "UsbPicProg-x86-x.x.x.exe" baixado anteriormente. Esse arquivo vai instalar o programa "usbpicprog.exe" e os drivers de controle da placa do programador USB. O programa "usbpicprog.exe" será usado para executar as funções de leitura, gravação, apagamento e reconhecimento do microcontrolador alvo. Recomendo fazer um atalho para ele no seu Desktop.





WINDOWS 8.x - PROBLEMA NA INSTALAÇÃO DO DRIVER

No Windows 8, o usbpicprog pode ter alguma dificuldade em reconhecer o programador devido a problemas com instalação do driver. Isso acontece porque o Win8 requer, juntamente com o driver, um arquivo 'inf' devidamente certificado.

O usbpicprog 0.6.0 já vem com um instalador de driver para o Win8 mas ainda assim requer uma atenção especial para poder instalá-lo.

Note que, se você já tem o usbpicprog 0.5.0 instalado, seu driver é incompatível com o Win8 e deve ser substituido pelo usbpicprog 0.6.0.

Faça o download do usbpicprog 0.6.0 e instale essa versão.

De boot na máquina, conecte o programador na porta USB e inicie o programa usbpicprog 0.6.0. Se mesmo assim o usbpicprog 0.6.0 não conseguir detectar o programador, faça o seguinte:

Faça download do programa libwdi-zadig-driver-installer.exe.

Desconecte o programador da porta USB e execute esse programa. Deverá aparecer a janela abaixo:





Clique em "Install Driver" para instalar o driver.

Conecte o programador na porta USB.

Inicie o programa usbpicprog. O programador deverá ser reconhecido.







Índice dos circuitos




H P S P I N

Desde 04 de Março de 2010

Atualização: 28 de Mar de 2024