Open Programmer 0.11.4 – Programador de PIC

Open Programmer - Programador Open Source USB para Microntroladores PIC, EEPROMS Microware, Microntroladores ATMEL

Conheça o Open Programmer — Programador Open Source USB para Microntroladores PIC PIC10-12-16-18-24, dsPIC30-33, EEPROMs tipo 24xxxx (I2C), 25xxx (SPI), 93xx6 (MicroWire), DS24xx (OneWire), 11xxx (UNIO), alguns micro ATMEL micros, comunica com dispositvos I₂C & SPI genéricos. Software para Linux e Windows, incluindo código-fonte do Software e firmware do gravador!

Dica do amigo Roger, deste Multi programador USB, compatível com microcontroladores e PIC e muitos outros dispositivos.

Sobre o Programador – Open Programmer

  • Totalmente gratuito e de código aberto  (incluindo o firmware)
  • Programa PIC10-12-16-18-24, dsPIC30-33, EEPROMs tipo 24xxxx (I₂C), 25xxx (SPI), 93xx6 (MicroWire), DS24xx (OneWire), 11xxx (UNIO), alguns micro ATMEL micros, comunica com dispositvos I₂C & SPI genéricos.
  • PPode funcionar como depurador ICD
  • Interface USB 2.0 Full Speed, HID classe (mesmo como teclados, mouses, etc.)
  •  Auto-alimentado via USB
  • Não precisa de drivers
  • Construção baseada em componentes fáceis de encontrar no mercado.
  • Hardware de alta velocidade e confiança (grava um 18F2550 em 15s, 8s no Linux)
  • Não satura sua CPU e não trava quando executado junto com outros programas.
  • Software de controle de código aberto para Linux e Windows
  • Não é outro clone do PICkit

Nos últimos anos, as interfaces seriais e paralelas quase desapareceram, entusiastas de eletrônica ainda encontram dificuldade para programar seus microcontroladores; programadores dos tempos antigos não funcionam mais; soluções comuns incluem o uso de adaptadores USB para serial (que não aceitam acesso direto, mas apenas as chamadas de API lentos), ou chips de interface, como FTDIxxxx, que aparecem substancialmente como interfaces seriais e exigem drivers personalizados ou proprietários.
Então, porque não usar controladores PIC e sua interface USB nativa?
Após pesquisar um pouco eu não poderia encontrar um programador USB, que era em simultâneo, fonte funcional, livre e aberto, então eu decidi projetar um. Open source significa que todas as fontes e esquemas são dadas gratuitamente, com os direitos de modificar e liberá-los.

Interface gráfica do Open Programmer para Windows (v0.8.0)

OpenProg é um aplicativo C++ escrito com o Visual C + + 6 e MFC.
Usá-lo é simples: basta ligar o programador, inicie o aplicativo, selecione o dispositivo, carregar um arquivo hex e ler ou escrever; funciona com o XP, o bloatware V, 7.
Na guia “Dispositivo” é possível modificar algumas opções de programação, tais como identificação e gravação de calibração, uso de eeprom, etc.; apenas as configurações compatíveis com o dispositivo atual será usado.
O “I₂C/SPI” guia é útil para comunicar com dispositivos genéricos I₂C e SPI, em caso de I₂C é sempre necessário especificar o byte de controle (e endereço, se não for zero); pouco RW é feita automaticamente.
Não inclui um instalador já que não há nenhuma biblioteca e o executável é muito pequena.
Ele aceita arquivos hex8 e hex32, e também do binário no caso de memória serial.
Os idiomas suportados são atualmente Inglês e Italiano, para adicionar outros idiomas é necessário para gerar o arquivo languages.rc (do guia “Opções”) e para modificá-lo, o nome do idioma é antes de as strings respectivas entre colchetes [].
Utilizando o “Hardware Test” função e um voltímetro é possível verificar se o circuito está funcionando.
Em caso de problemas ou apenas por curiosidade, é possível salvar todos os dados trocados com o programador selecionar “salvar arquivo de log” da guia “Opções”.

GTK interface gráfica do Open Programmer para Windows e Linux (v0.8.0)

Finalmente, após anos de espera, uma interface gráfica para Linux! Ele é construído usando as bibliotecas GTK e parece mais ou menos como o outro.
A partir da versão 0.7.10 inclui um depurador ICD, trabalhando mais ou menos como pdb, além disso, ele suporta arquivos COFF.
Para usá-lo no Windows, é necessário instalar a GTK Runtime Environment.

Lista Dispositivos suportados pelo Open Programmer na versão atual

o circuito principal e algumas placas de expansão (28-40p PIC, 8-20p PIC com ZIF, 3.3V PIC16-18, 3.3V PIC24-30-33, EEPROM, ATMEL)

O programador foi testado com um pequeno número de dispositivos (os que o autor possuía e mais alguns testado por outros usuários) indicado em negrito, os outros dispositivos são suportados, mas não testado, no entanto, considerando que para cada família pelo menos um dispositivo foi verificado, todos deles deve funcionar sem problemas.
Por favor, deixe-me saber se você verificar a operação com os dispositivos testados.
Também contactar-me se você precisar de outros algoritmos ou entes do novo código por si mesmo.
Tome nota:
PICs da série LF são utilizados exatamente como os F;
Dispositivos Atmel AVR com sufixos vários são agrupados sempre que o algoritmo de programação é exatamente o mesmo, por exemplo. ATmega8 e ATmega8A;
Memórias EEPROM compreendem todas as versões com VDDmax = 5V, por exemplo. 242LC56, 24AA256, etc;
Memórias 93x usam 2 diferentes algoritmos, para a série 93S e para todos os outros, indicados por 93x (93xA tem 8bit).

Dispositivos suportados para leitura e escrita
10F200, 10F202, 10F204, 10F206, 10F220, 10F222,
12C508, 12C508A, 12F508, 12C509, 12C509A, 12F509, 12F510, 12F519, 12F609, 12F615, 12F617, 12F629, 12F635, 12F675, 12F683,
12F1501,12F1822, 12F1840,
16F505, 16F506, 16F526, 16F54, 16F610, 16F616, 16F627, 16F627A, 16F628, 16F628A, 16F630, 16F631, 16F636, 16F639, 16F648A, 16F676, 16F677, 16F684, 16F685, 16F687, 16F688, 16F689, 16F690, 16F707, 16F716, 16F72, 16F720, 16F721, 16F722, 16F722A, 16F723, 16F723A, 16F724, 16F726, 16F727, 16F73, 16F737, 16F74, 16F747, 16F76, 16F767, 16F77, 16F777, 16F785, 16F818, 16F819, 16F83, 16F83A, 16C83, 16C83A, 16F84, 16C84, 16F84A, 16C84A, 16F87, 16F870, 16F871, 16F872, 16F873, 16F873A, 16F874, 16F874A, 16F876, 16F876A, 16F877, 16F877A, 16F88, 16F882, 16F883, 16F884, 16F886, 16F887, 16F913, 16F914, 16F916, 16F917, 16F946,
16F1503, 16F1507, 16F1508, 16F1509, 16F1516, 16F1517, 16F1518, 16F1519, 16F1526, 16F1527, 16F1823, 16F1824, 16F1825, 16F1826, 16F1827, 16F1828, 16F1829, 16F1847, 16LF1902, 16LF1903, 16LF1904, 16LF1906, 16LF1907, 16F1933, 16F1934, 16F1936, 16F1937, 16F1938, 16F1939, 16F1946, 16F1947,
18F242, 18F248, 18F252, 18F258, 18F442, 18F448, 18F452, 18F458, 18F1220, 18F1230, 18F1320, 18F1330, 18F13K22, 18F13K50, 18F14K22, 18F14K50, 18F2220, 18F2221, 18F2320, 18F23K20, 18F23K22, 18F2321, 18F2331, 18F2410, 18F24J10, 18F24J11, 18F2420, 18F24K20, 18F24K22, 18F2423, 18F2431, 18F2439, 18F2450, 18F24J50, 18F2455, 18F2458, 18F2480, 18F2510, 18F25J10, 18F25J11, 18F2515, 18F2520, 18F25K20, 18F25K22, 18F2523, 18F2525, 18F2539, 18F2550, 18F25J50, 18F2553, 18F2580, 18F2585, 18F2610, 18F26J11, 18F26J13, 18F2620, 18F26K20, 18F26K22, 18F26J50, 18F26J53, 18F2680, 18F2682, 18F2685, 18F27J13, 18F27J53, 18F4220, 18F4221, 18F4320, 18F43K20, 18F43K22, 18F4321, 18F4331, 18F4410, 18F44J10, 18F44J11, 18F4420, 18F44K20, 18F44K22, 18F4423, 18F4431, 18F4439, 18F4450, 18F44J50, 18F4455, 18F4458, 18F4480, 18F4510, 18F45J10, 18F45J11, 18F4515, 18F4520, 18F45K20, 18F45K22, 18F4523, 18F4525, 18F4539, 18F4550, 18F45J50, 18F4553, 18F4580, 18F4585, 18F4610, 18F46J11, 18F46J13, 18F4620, 18F46K20, 18F46K22, 18F46J50, 18F46J53, 18F4680, 18F4682, 18F4685, 18F47J13, 18F47J53, 18F66J60, 18F66J65, 18F67J60, 18F8520, 18F8722, 18F86J60, 18F86J65, 18F87J60, 18F96J60, 18F96J65, 18F97J60,
24F04KA200, 24F04KA201, 24F08KA101, 24F08KA102, 24F16KA101, 24F16KA102, 24FJ16GA002, 24FJ16GA004, 24FJ32GA002, 24FJ32GA004, 24FJ48GA002, 24FJ48GA004, 24FJ64GA002, 24FJ64GA004, 24FJ64GA006, 24FJ64GA008, 24FJ64GA010, 24FJ96GA006, 24FJ96GA008, 24FJ96GA010, 24FJ128GA006, 24FJ128GA008, 24FJ128GA010, 24FJ32GA102, 24FJ32GA104, 24FJ32GB002, 24FJ32GB004, 24FJ64GA102, 24FJ64GA104, 24FJ64GB002, 24FJ64GB004, 24FJ64GB106, 24FJ64GB108, 24FJ64GB110, 24FJ128GA106, 24FJ128GB106, 24FJ128GA108, 24FJ128GB108, 24FJ128GA110, 24FJ128GB110, 24FJ192GA106, 24FJ192GB106, 24FJ192GA108, 24FJ192GB108, 24FJ192GA110, 24FJ192GB110, 24FJ256GA106, 24FJ256GB106, 24FJ256GA108, 24FJ256GB108, 24FJ256GA110, 24FJ256GB110, 24HJ12GP201, 24HJ12GP202, 24HJ16GP304, 24HJ32GP202, 24HJ32GP204, 24HJ32GP302, 24HJ32GP304, 24HJ64GP202, 24HJ64GP204, 24HJ64GP206, 24HJ64GP210, 24HJ64GP502, 24HJ64GP504, 24HJ64GP506, 24HJ64GP510, 24HJ128GP202, 24HJ128GP204, 24HJ128GP206, 24HJ128GP210, 24HJ128GP306, 24HJ128GP310, 24HJ128GP502, 24HJ128GP504, 24HJ128GP506, 24HJ128GP510, 24HJ256GP206, 24HJ256GP210, 24HJ256GP610,
30F1010, 30F2010, 30F2011, 30F2020, 30F2023, 30F2012, 30F3010, 30F3011, 30F3012, 30F3013, 30F3014, 30F4011, 30F4012, 30F4013, 30F5011, 30F5013, 30F5015, 30F5016, 30F6010, 30F6011, 30F6012, 30F6013, 30F6014, 30F6015,
33FJ06GS101, 33FJ06GS102, 33FJ06GS202, 33FJ12GP201, 33FJ12GP202, 33FJ12MC201, 33FJ12MC202, 33FJ16GP304, 33FJ16GS402, 33FJ16GS404, 33FJ16GS502, 33FJ16GS504, 33FJ16MC304, 33FJ32GP202, 33FJ32GP204, 33FJ32GP302, 33FJ32GP304, 33FJ32GS406, 33FJ32GS606, 33FJ32GS608, 33FJ32GS610, 33FJ32MC202, 33FJ32MC204, 33FJ32MC302, 33FJ32MC304, 33FJ64GP202, 33FJ64GP204, 33FJ64GP206, 33FJ64GP306, 33FJ64GP310, 33FJ64GP706, 33FJ64GP708, 33FJ64GP710, 33FJ64GP802, 33FJ64GP804, 33FJ64GS406, 33FJ64GS606, 33FJ64GS608, 33FJ64GS610, 33FJ64MC202, 33FJ64MC204, 33FJ64MC506, 33FJ64MC508, 33FJ64MC510, 33FJ64MC706, 33FJ64MC710, 33FJ64MC802, 33FJ64MC804, 33FJ128GP202, 33FJ128GP204, 33FJ128GP206, 33FJ128GP306, 33FJ128GP310, 33FJ128GP706, 33FJ128GP708, 33FJ128GP710, 33FJ128GP802, 33FJ128GP804, 33FJ128MC202, 33FJ128MC204, 33FJ128MC506, 33FJ128MC510, 33FJ128MC706, 33FJ128MC708, 33FJ128MC710, 33FJ128MC802, 33FJ128MC804, 33FJ256GP506, 33FJ256GP510, 33FJ256GP710, 33FJ256MC510, 33FJ256MC710,
2400, 2401, 2402, 2404, 2408, 2416, 2432, 2464, 24128, 24256, 24512, 241024, 241025,
25010, 25020, 25040, 25080, 25160, 25320, 25640, 25128, 25256, 25512, 251024, 251005, 252005, 254005, 258005, 251605, 25X10, 25X20, 25X40, 25X80,
93S46, 93×46, 93x46A, 93S56, 93×56, 93x56A, 93S66, 93×66, 93x66A, 93×76, 93x76A, 93×86, 93x86A,
AT90S1200, AT90S2313, AT90S8515, AT90S8535, ATmega48, ATmega8, ATmega88, ATmega8515, ATmega8535, ATmega16, ATmega164A, ATmega168, ATmega32, ATmega324A, ATmega328, ATmega64, ATmega644A, ATmega1284,
ATtiny12, ATtiny13, ATtiny24, ATtiny26, ATtiny261, ATtiny2313, ATtiny44, ATtiny48, ATtiny461, ATtiny4313, ATtiny84, ATtiny88, ATtiny861,
DS2430,DS2431,DS2433,DS28EC20,DS1820,
11010,11020,11040,11080,11160

Dispositivos suportados somente para leitura:
12C671, 12C672, 12CE673, 12CE674

Importante!
Não utilize dispositivos 3.3V sem as placas de expansão de 3,3 V, caso contrário, podem ocorrer danos permanentes, o software verifica que adaptadores estão presentes antes de começar a programar, mas, obviamente, você precisa selecionar o dispositivo adequado, os dispositivos de 3.3V são:
16F1xxx,18FxxJxx,18FxxKxx,24Fxxx,24Hxxx,33Fxxx.
Também não coloque nenhum 24F-33F no soquete 30F, que funciona em 5V.

O circuito (v1.7)

Esquema

O projeto é baseado em  28 18F2550 DIP de 28 Pinos, mas apenas cerca de um terço da memória e 0% de eeprom foi usado, por isso caberá confortavelmente na pequena 2455.
O 2458 e 2553 tem um de ADC de 12 bits, portanto, apenas a recompilação é necessária.
Com algumas modificações o código foi adptado para o 2450. Já que este modelo não tem o módulo MSSP eu usei uma implementação de software de I2C e SPI, que também não tem o segundo canal de PWM, portanto, não pode gerar o clock para chips Atmel (para aqueles que são configurados com clock externo), neste caso RB3 pode ser usado para ligar um oscilador externo (o qual deve ser inserido numa placa de expansão modificado Atmel).
A utilização dos dispositivos correspondentes de 40 pinos 40 (4450, 4455, 4458, 4550, 4553) requer a modificação da PCB.
A fim de implementar um periférico USB com um micro PIC temos poucos componentes: o microcontrolador principal, um cristal de quartzo, alguns capacitores, e um conector USB tipo B, exatamente como está escrito nas notas de aplicação de Microchip.
Para conseguir programar dispositivos PIC precisamos duas linhas digitais Clock e Data, e duas tensões de alimentação, VCC e VPP, controladas através de três transistores; VPP vem a partir de um regulador de tensão de ativação formado por Q4, L1, D3.

Download dos arquivos do gravador Open Programmer

Esquemas e Placa de circuito impresso: complete archive.
Firmware: Projeto completo MPLAB ou firmware Compilado (.hex)  ou uma versão para 18F2450 (com funcionalidade reduzida, veja o circuito).
OP (Linha de comando para Linux & Windows)
OpenProg (windows): somente executável;   Código fonte (Visual Studio 6 workspace)
opgui (GTK GUI para Linux & Windows): Código fonte ou aplicação
OpenProg e Opgui user’s guide
Octave scripts

Para informações adicionais visite o site do desenvolvedor!

O que achou deste artigo?

Clique em uma estrela para avaliá-lo!

Classificação média 4.9 / 5. Total de votos 13

Sem votos até agora! Seja o primeiro a avaliar este post.

Sobre o Autor
Autor do blog Te1.com.br. Técnico em Eletrônica Industrial pela Escola Técnica de Brasília, Tecnólogo em Sistemas para Internet pela Unianhanguera. Interessado em eletrônica, montagens, pesquisas, informática e tecnologia em geral.
Compartilhe:
Comentar via Facebook

35 comentários em “Open Programmer 0.11.4 – Programador de PIC”

      • Ola Toni, desculpe-me por não explicar com mais detalhes, primeiramente, eu tenho uma imensa vontade de aprender logica, criar pequenos projetos de comando para circuitos analógicos, estes eu domino bem, desenvolvo e até comercializo, como por exemplo um que tem o nome criado por mim: SUPER 360ALL, é Leitor e gravador de dados na placa de xbox 360 todos s modelos, isso para desbloquear a proteção permitindo a reprodução de jogos gravados em mídias comuns (roxa). Essa minha ferramenta tem três chaves mecânica H H que fazem chaveamentos de um Leitor SD MMC genérico e um Leitor S.P.I  JR PROGRAMMER, os dois encontrados já prontos, no mercado de peças, e adaptados por mim para o uso nos xbox 360, (detalhes no meu site: http://www.cursos-wr.com). Mas o que quero é, ir mais fundo, desenvolver projetos com software, aprender sobre: PICs, Vejo que no seu site tem um belo trabalho seu, rico em informações sobre circuitos logico e tudo grátis, mas eu gostaria de ter informações tipo: o que devo aprender primeiro para entrar na área e desenvolver pequenos projetos que por exemplo:substitua as partes mecânicas como as chaves seletoras da minha ferramenta etc. sei que existe chaves analógica de estado solido, preciso saber como usa-la para fazer chaveamento de sinais (dados) aprender sobre os diversos tipos de portas e qual usar para um determinado projeto. Acho que são muitas coisas mas queria começar com o básico da parte logica, ficarei grato se puder contar com a sua ajuda, me coloco a disposição para ajudar também no que eu puder. Obrigado. Mario. Lúcio.

      • Olá Mario
        Verifiquei em seu site a ferramenta!
        Se quer aprender sobre microcontroladores, sugiro que comece com eletrônica digital e lógica de programação. Não é nada difícil, só dedicar e alcançará seus objetivos!
        Sobre trabalho com consoles, tem um amigo no Facebook que também está trabalhador nesta área, inclusive investindo em equipamentos para BGA!
        Quem sabe não podem compartilhar informações!

      • Obrigado Toni, pela resposta, você pode me indicar um curso de eletrônica digital? encontro curso completo na net? Quanto a compartilhar sobre técnicas aplicadas em games com seu amigo do face, como eu disse estou a disposição para o que precisar. meu face é: mlpvip@msn.com Mario Lúcio de Paula e page: WR Projetos. Obrigado. Mario.

  1. toni boa noite eu estou buscando um projeto que me permita pegar chips de impressoras que já estejam usados e sem contagem de impressão  e regravar seus dados e reutilizar os mesmos sempre que for recarregar os cartuchos da minha impressora scx 3200, D 104k sabe se tem um projeto que me permita fazer isso.

    Responder
  2. Olá Toni!
    Estou querendo montar um gravador de pic e gostaria de ter a sua opnião, se é este gravador ou o USBPICPROG que dá suporte em gravação a um maior número de PIC?

    Vejo que este tem a placa principal e várias placas de expansão.
    Não há nada que substitua a placa de expansão utilizando por exemplo o soquete zif 40 pinos?

    O USBPICPROG usa na sua placa de expansão soquete zif 40 pinos?

    Responder
  3.  boa-tarde toni como diz  Fritz e para quem e lego no assunto precisa de ajuda eu lir todos os comentarios  creio que entendi quase tudo mais não entendi quais os dados que eu vou colocar dentro deste ci pic ex. eu como tecnico copio es dados de uma  eprom para outra do tipo 24xx mais onde eu acho os dados para esse pic por favor  vc ou alguns colega podem mim informa onde posso encontro ou quais os algarismo  que devo colocar neste pic obrigado   

    Responder
  4. Olá, fiquei interessado em montar este gravador de PIC, gostaria de terinar o pouco que aprendi em programação, porem não tenho nenhum gravador e para gravar o firmeware hex no 18F2550 eu precisaria de um gravador prévio certo??? Caso sim, teria algum gracador mais rudimentar que poderia montar sem necessitar a gravação de um PIC?

    Responder
  5. Boa noite toni, gostaria de saber se esse projeto precisa do uso de uma memória em serie com o pic, pois o PIC 18F2550 já tem EPROM interna e sobre os componentes das outras placas pois só tem os componentes do gravador.

    Responder
  6. Prezado Toni,

        Parabéns pelo site!

        Pode parecer besteira, mas creio que minha dúvida é a mesma de muitos!

        Ao fazer um Programador de Chips como este, como fazer para gravar o firmware nicial do chip responsável por todo o gravador? Neste caso, como gravar o firmware do circuito no PIC 18F2550?

        Nota: tomando como base que eu não tenho qualquer gravador de PICs até o momento.

        Desde já, agradeço!

        Fritz

    Responder
    • Olá Fritz
      Obrigado pelo feedback!
      Isso, sim é um dúvida de todos com certeza!
      Nesse caso utilizamos um gravador para porta serial ou paralela, que pode ser montado até mesmo na protoboard e servirá para a função!
      Veja este

      Responder

Deixe um comentário

Sair da versão mobile