MPSP - Microchip PIC Serial Programmer

MPSP

O MPSP é um programador de microcontroladores da linha PIC© fabricados pela Microchip©. Além disso, permite leitura e gravação de memórias EEPROM seriais.

É baseado no programador JDM-2, criado por Jens Dyekjaer Madsen, e contém as alterações propostas por BT Kelly no programador JDM-B, além de outras características próprias.

Os sites dos projetos citados são:

JDM PIC Programmer 2 by Jens Dyekjaer Madsen.

JDM Programmer Modification by BT Kelly.

Características:
  • Conexão ao PC via porta serial (RS232);
  • Alimentação externa, permitindo gravação de PICs com memória EPROM / OTP e memórias EEPROM seriais; ou para uso com notebooks (cujas portas seriais fornecem correntes muito pequenas);
  • Totalmente compatível com o programador JDM, podendo ser usado com qualquer software que suporte esse programador;
  • Controle de VCC integrado ao controle de VPP (impede que o PIC execute o programa após sua gravação, impossibilitando novas gravações);
  • LED indicador de VCC/VPP ligado;
  • Possui conector para adaptadores externos (isso possibilita a conexão com PICs de diferentes encapsulamentos e pinagens, bastando utilizar um adaptador apropriado ou construir um para cada situação);
  • Suporta ICSP (In-Circuit Serial Programming), usando um conector próprio;
  • Tem todas as especificações de hardware abertas (Open Hardware), possibilitando a adição de novas funcionalidades ou a construção de acessórios e adaptadores;
  • Suporta softwares Open Source ou proprietários em vários Sistemas Operacionais.

Schematic


 

Histórico do Projeto:      [Voltar ao Índice]

A versão corrente do MPSP é 1.1.

Revisão na Versão 1.1 (junho/2012):

  • Adequados os adaptadores para compatibilizar com o programador PK2C (o antigo adaptador dip8_a2 do MPSP não era compatível com o PK2C);
  • Alterada seção Downloads para fornecer o link para os novos arquivos dos adaptadores.
     

Versão 1.1 (janeiro/2008):

  • Alterada pinagem do conector ICSP (J3) para corresponder aos gravadores oficiais da Microchip;
  • Alterada pinagem do conector J2, para permitir a inclusão da linha CS (usada para gravação de EEPROMs seriais)
    Importante: Isso torna os adaptadores da versão 1.0 incompatíveis com a versão 1.1 e vice-versa
    ;
  • Adicionados R7 e D9 para gerar a linha CS (5V);
  • Alterado adaptador dip8_a3 (para EEPROM Microwire 93Cxx):
    • Adicionado um jumper para selecionar modo 16bits (default) ou modo 8bits;
    • Removidos D1 e R1 (que já estão na placa principal do MPSP, nomeados como D9 e R7);
    • Alterada pinagem do adaptador para separar as linhas DataIN e DataOUT (para compatibilizar com outros programadores);
  • Adicionados novos adaptadores, para PICs 8 pinos, 14 pinos e dsPICs de 28 pinos;
  • Adicionados dois capacitores de 33pF e um resistor de 22R em todos adaptadores para PIC, para filtrar acoplamento RF entre as linhas PGC e PGD (que inviabilizava a gravação para alguns modelos mais velozes);
  • Revisão geral no layout das PCBs.

Versão 1.0 (julho/2007):

  • Lançamento inicial;
  • Criação do site do programador MPSP.

 

Dispositivos suportados:      [Voltar ao Índice]

O MPSP suporta 'virtualmente' qualquer dispositivo Microchip PIC das famílias 10x, 12x, 16x, 18x e dsPIC, desde que ele contenha memória Flash ou (E)PROM (não seja 'ROMLess') e seja suportado pelo software de programação.

Adicionalmente, o MPSP pode também gravar memórias EEPROM seriais, das famílias 24Cxx / 93Cxx / 59Cxx ou mesmo outras.
Veja a tabela de adaptadores para saber quais chips são completamente suportados pelo projeto MPSP.

Note que nem todos os dispositivos foram testados, pois as famílias PIC são muito grandes, e não tenho como adquirir todos esses chips. Se você testou algum dispositivo com o MPSP, sem obter sucesso, agradeço o feedback usando o formulário abaixo:

Dispositivo: (exemplo: PIC16F84A)
Adaptador:
Tipo de Erro:
Software utilizado:
Descrição do Erro:
Descrição do Software (versão ou outras informações):
Sistema Operacional:
Descrição do Sistema Operacional (versão ou outras informações):
Seu Nome:
Seu e-mail:

 

 

Adaptadores:      [Voltar ao Índice]

Para conectar o chip destino (target) no programador PK2C, existe o adaptador. Alguns adaptadores comuns são oferecidos pelo projeto, mas outros podem ser construídos (baseando-se na pinagem fornecida na tabela), para encapsulamentos diferentes (sempre consulte o datasheet do chip para isso).

Adapters

No link a seguir está a lista de adaptadores compatíveis com o MPSP (e também com o PK2C): Adaptadores para MPSP / PK2C.

Nota importante: São suportados pelo MPSP somente dispositivos que operam com 5V (dispositivos de 3.3V, por exemplo, não são suportados).


 

Softwares Suportados:      [Voltar ao Índice]

O MPSP suporta diversos softwares para programação (configurado como um JDM programmer), dentre os quais podem ser citados:

Software Site Sistema Operacional Licença
WinPic800 http://www.winpic800.com/ Microsoft Windows® Freeware
ICProg http://www.ic-prog.com/ Microsoft Windows® Freeware
PikLab http://piklab.sourceforge.net/ GNU/Linux® Open Source
Pikdev http://pikdev.free.fr/
Odyssey http://www.desert.cx/odyssey/
PicProg http://hyvatti.iki.fi/~jaakko/pic/picprog.html GNU/Linux® e Microsoft Windows®
PonyProg http://www.lancos.com/prog.html GNU/Linux® e Microsoft Windows®
WinPic http://www.freenet-homepage.de/dl4yhf/winpicpr.html Microsoft Windows®

Notas específicas sobre softwares:

ICProg:

Nenhuma inversão de pinos deve estar marcada no diálogo "Configurações de Hardware" do programador JDM. Se alguma das caixas de opção do painel "Comunicação" estiver marcada, as operações de leitura ou programação de dispositivos falharão.

Não habilite a opção "Ativar controle de VCC para JDM", na guia "Diversos" do diálogo "Opções", pois isso interfere na gravação de vários dispositivos;

Habilite a opção "Ativar MCLR como VCC" na guia "I2C" do diálogo "Opções" para que a gravação de memórias EEPROM da série 24xxx seja bem sucedida.


 

Descrição do Hardware:      [Voltar ao Índice]

Como dito na descrição, o MPSP é construído com base no programador JDM-2 de Jens Dyekjaer Madsen. Desta forma, é garantida a compatibilidade de protocolo com o JDM Programmer original. Uma descrição detalhada de funcionamento desse programador (em inglês) pode ser encontrada em JDM Functional Description.

De forma bastante sucinta, pode-se descrever o princípio de funcionamento do MPSP Programmer assim:

O conector J1 permite a conexão do programador MPSP com o microcomputador PC, através da porta serial (RS232). Para realizar esta conexão, pode ser usado um cabo serial padrão (tipo "extensor de mouse"), sem inversão entre os pinos.

Caso deseje construir o próprio cabo de conexão, siga a pinagem descrita na tabela abaixo (supondo que o PC tem uma porta serial com conector DB9 - caso contrário, se o conector for um DB25 a pinagem será diferente).

Os pinos não mostrados na tabela não são usados pelo MPSP, e poderão ser deixados desconectados.

Pinagem do cabo de conexão serial RS232 (DB9 para DB9, cabo blindado com 5 vias + malha):

Conector DB9 Macho
(lado do MPSP)
Conector DB9 Fêmea
(lado do PC)
Descrição
3 3 TxD (ou Trasmit Data)
4 4 DTR (Data Terminal Ready)
5 5 GND (Ground)
7 7 RTS (Request To Send)
8 8 CTS (Clear To Send)
Malha do cabo blindado Malha do cabo blindado Soldada ao corpo dos conectores.

O PC, através do software de programação, manipula as linhas da porta serial (RS232), de forma a produzir uma tensão DC de 13.3V no capacitor C2 (regulada através dos zeners D2 e D6). Esse capacitor C2 forma, junto com outros componentes, um "charge pump", sendo que a tensão sobre ele é "atualizada" continuamente pelos pulsos gerados na linha TxD da porta serial.

A linha TxD também permite o controle do VPP sobre o dispositivo a ser programado.

A linha RTS gera os pulsos de clock necessários para a gravação serial do dispositivo (PGC) e as linhas CTS e DTR são responsáveis pela escrita / leitura de dados seriais do dispositivo a ser programado (PGD).

Correspondência dos pinos da Porta Serial com os sinais gerados pelo JDM Programmer:

Pino (Porta Serial) Sinal gerado Descrição
TxD VPP_ENABLE Controle de VPP (Ativo em +12V). Também gera a tensão de 5V para alimentação dos chips através de pulsos alternados (+12V / -12V) em um "charge pump"
RTS PGC Linha de Clock (HI => +12V)
DTR PGD Linha de Dados - escrita no chip (HI => +12V)
CTS PGD Linha de Dados - leitura do chip (HI => +12V)

Um problema relatado por BT Kelly no site JDM Programmer Modification, na verdade é uma limitação do JDM Programmer: a linha VCC do chip (também chamada de VDD) não é controlada pelo programador, estando sempre alimentada. Com isso, alguns modelos de PIC rodam o programa recém gravado e impedem sua própria regravação. Isso é contornado na solução proposta por BT Kelly, que é implementada no MPSP Programmer através do transistor MOSFET Q3, do capacitor C6 e do resistor R6.

Essa modificação possibilita o controle da linha VDD simultaneamente com a linha VPP do dispositivo, evitando o bug descrito acima. O capacitor C6 e o resistor R6 não existem no site de BT Kelly; entretanto eles são imprescindíveis para estabilizar a linha VDD durante a gravação. Sem esses componentes, a linha de alimentação do chip torna-se instável, impossibilitando o sucesso de qualquer operação sobre o dispositivo.

O diodo zener D9 e o resistor R7 foram adicionados para implementar a linha CS (Chip Select), usada na gravação de EEPROM's Microwire (ativa em +5V).

O diodo D1 e o resistor R3 têm por função proteger o MPSP contra correntes excessivas (e inversão de polaridade) ao utilizar fonte de alimentação externa.

O resistor R5 foi adicionado para evitar excesso de corrente na porta serial do PC, o que poderia causar a diminuição das tensões fornecidas pela porta, inviabilizando a gravação do chip. Em alguns computadores (como notebooks), esse resistor pode interferir na operação do MPSP (se esse for o seu caso, veja: "Problemas Conhecidos").

O LED D8 foi adicionado para permitir a sinalização das linhas VDD/VPP, ou seja, ele acende quando o chip está sendo programado.

 

ICSP:      [Voltar ao Índice]

O conector J3 permite a gravação ICSP de dispositivos. Sua pinagem é a seguinte:

Pinagem do conector ICSP:

Pino Sinal Descrição
1 VPP Tensão de Programação do chip. Deve ser conectado ao pino ~MCLR / VP.
2 VDD Tensão de Alimentação do chip. Deve ser conectado ao pino VDD.
3 VSS GND ou "Terra" do chip. Deve ser conectado ao pino VSS.
4 PGD Linha de Dados do chip. Deve ser conectado ao pino PGD.
5 PGC Linha de Clock do chip. Deve ser conectado ao pino PGC.
6 N/C Não conectado (*pode ser obstruído para evitar inversão do conector).

Nota: Para usar a gravação ICSP, o circuito onde está o PIC deve ser corretamente isolado com resistores e diodos, como descrito no site do JDM Programmer, em JDM ICSP.

 

Fonte de Alimentação Externa:      [Voltar ao Índice]

O conector J4 permite a ligação de uma fonte de alimentação externa, para possibilitar uma maior corrente de VPP / VCC, no caso de se utilizar portas seriais de notebooks ou para a gravação de memórias EEPROM seriais ou microcontroladores com memória EPROM / OTP.

Apesar de opcional, é recomendável sempre utilizar a fonte de alimentação externa, pois problemas poderão ocorrer durante a gravação de algumas famílias de microcontroladores PIC ou de memórias EEPROM seriais. Veja "Problemas Conhecidos".

A fonte deve ter uma tensão de saída maior do que 13.3V, sendo recomendada uma fonte linear não-regulada (tipo "eliminador de pilha"), com saída de 12V x 500mA (sem carga, essas fontes fornecem uma tensão em torno de 15 a 17V).

Atenção: A utilização de fonte externa pode expor o PC ou os componentes internos do MPSP Programmer a correntes e tensões prejudiciais e até destrutivas! Muito cuidado na escolha da fonte de alimentação para esse propósito!

Nunca utilize fontes chaveadas ou com aterramento
, nem fontes com tensões muito elevadas (acima de 18V), sob pena de danificar o MPSP Programmer, o dispositivo conectado a ele e/ou o PC utilizado para comunicar com o programador!


 

Problemas Conhecidos:      [Voltar ao Índice]

Nesta seção estão descritos alguns dos problemas conhecidos do MPSP.

Além desta seção, convém consultar o site original do projeto do programador JDM (http://www.jdm.homepage.dk/newpic.htm) para obter outras informações sobre problemas que podem ser solucionados.

MPSP: Todas versões

Procure sempre utilizar uma fonte de alimentação externa (tipo "eliminador de pilha"), sem aterramento, conectada ao programador. Isso evitará problemas de "VCC sendo desligado" durante a leitura ou programação de PIC's ou memórias EEPROM seriais.

A mesma recomendação é válida para os casos da utilização de um notebook (que tem portas seriais bastante limitadas em termos de corrente e tensão fornecidas).

Alguns problemas reportados na gravação de PIC's das famílias 18Fxxx e 16F87x foram resolvidos ao se conectar uma fonte de alimentação externa ao MPSP.

MPSP 1.1 (versão corrente)

O resistor de 22R adicionado nos adaptadores para PIC pode causar problemas na gravação ou leitura do dispositivo, dependendo da família do chip e da velocidade do computador. Tente reduzir o valor até 0R (substituir o resistor por um jumper feito com fio) ou aumentar o valor até 100R. Valores menores aumentam a corrente que circula pelo pino PGD, enquanto que valores maiores aumentam a eficiência da filtragem de RF no pino (filtro RC).

O resistor de 220R (R5) na placa principal do MPSP poderá causar erros na gravação do dispositivo, se a porta serial do computador fornecer uma tensão muito baixa em seus pinos (em notebooks, por exemplo). Neste caso, tente reduzir o valor do resistor até 0R (substituir o resistor por um jumper feito com fio) ou utilizar uma fonte de alimentação externa (tipo "eliminador de pilha"), conforme descrito acima.


 

Downloads do projeto MPSP:      [Voltar ao Índice]

Aqui podem ser encontrados todos os downloads relativos a versão corrente do projeto MPSP (placa principal e adaptadores).

Todos os documentos estão em formato PDF (para salvar ao invés de visualizar, use o botão direito / "Salvar Link [ou Destino] Como..." e escolha a pasta / diretório onde deseja salvar o arquivo).

Note que no arquivo correspondente ao Layout PCB, está um desenho da placa final (layout + silk, vista do lado dos componentes), um desenho do layout (vista do lado das trilhas) e um desenho do silk screen com a máscara de componentes (vista do lado dos componentes).

Para confeccionar as placas, utilizei o método de transferência térmica citado por Ewaldo L.M. Mehl no site http://www.eletrica.ufpr.br/mehl/pci/poliester.html, mas qualquer outro método poderá ser usado, de acordo com sua preferência. 

Arquivos (versão corrente):
(atualizado em jun/2012)

ArquivoDescrição
Diagramas Esquemáticos Diagramas esquemáticos do MPSP (arquivo PDF, ~58KB)
Placas de Circuito Impresso (Layout PCB) Placas de circuito impresso do MPSP (arquivo PDF, ~58KB)
Lista de Componentes Lista de componentes do MPSP (arquivo PDF, ~45KB)
Adaptadores (MPSP e PK2C) Diagramas esquemáticos e placas de circuito impresso dos adaptadores,
compatíveis com os programadores MPSP e PK2C (atualizado em jun/2012)
 

Download do projeto completo (versão corrente):

Caso prefira fazer o download de um só arquivo contendo todos os diagramas esquemáticos, layouts de placas de circuito impresso e listas de componentes (exceto os adaptadores), use o link abaixo:

Arquivo Descrição
MPSP Programmer Projeto completo do MPSP (arquivo ZIP, ~106KB)

 

Versões anteriores:

É altamente recomendável utilizar a versão corrente do projeto MPSP, pois ela contém as últimas atualizações de hardware e correções de bugs. No entanto, aqui estão (por motivos de histórico) os downloads das versões anteriores do projeto (USE POR SUA CONTA E RISCO):

Versão Descrição Download
1.0 (jul/2007) MPSP Programmer 1.0 - Projeto completo MPSP 1.0 (arquivo ZIP, ~519KB)

 


 

Créditos:      [Voltar ao Índice]

Robson Martins
robson@robsonmartins.com
http://www.robsonmartins.com

Todos os autores e fabricantes aqui citados, com seus devidos créditos.

As marcas citadas podem ser registradas e são propriedade de seus fabricantes / detentores.

O conteúdo deste projeto / site pode ser livremente distribuído, desde que os nomes dos autores sejam mantidos. É proibida a comercialização ou apropriação de qualquer conteúdo aqui descrito.

 

Os autores dos projetos não se responsabilizam por danos pessoais ou a equipamentos, provocados por mau uso das informações aqui contidas ou por imperícia dos usuários.

Qualquer projeto que envolva componentes eletrônicos deve ser realizado somente por pessoas capacitadas e conscientes dos riscos de segurança envolvidos e de como preveni-los (como choques elétricos, incêndio, explosões, queimaduras, danos a equipamentos, etc.).

As informações aqui descritas são oferecidas sem nenhuma garantia e nem suporte técnico por parte dos autores e fabricantes citados, e devem ser usadas somente para fins educacionais/didáticos, sem nenhum compromisso com aplicações críticas (suporte de vida, por exemplo).

[Voltar ao Índice]