Open Programmer – Programador Open Source USB para Microntroladores PIC, EEPROMS Microware, Microntroladores ATMEL, dispositivos I2C/SPI e outros
Autor: José Neto | Publicado: 2012-11-16T16:42:00-02:00




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 I2C &amp; 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&nbsp; (incluindo o firmware)
Programa 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 I2C &amp; SPI genéricos.
PPode funcionar como depurador ICD
Interface USB 2.0 Full Speed, HID classe (mesmo como teclados, mouses, etc)
&nbsp;Auto-alimentado via USB
Não precisa de drivers
Construção baseado 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?
Depois de pesquisar um pouco eu não poderia encontrar um programador USB, que era ao mesmo tempo 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 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 “I2C/SPI” guia é útil para comunicar com dispositivos genéricos I2C e SPI, em caso de I2C é 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órias série.
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 as strings respectivas entre colchetes [].
Utilizando o “Hardware Test” função e um voltímetro é possível verificar que 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 para Windows e Linux (v0.8.0)



Finalmente, depois de 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&nbsp;GTK Runtime Environment.

Lista Dispositivos suportados 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,&nbsp;10F206, 10F220, 10F222,
12C508, 12C508A, 12F508, 12C509, 12C509A, 12F509, 12F510, 12F519, 12F609, 12F615, 12F617, 12F629, 12F635, 12F675, 12F683,
12F1501,12F1822, 12F1840,
16F505, 16F506, 16F526,&nbsp;16F54, 16F610, 16F616, 16F627, 16F627A,&nbsp;16F628, 16F628A, 16F630,&nbsp;16F631, 16F636, 16F639,&nbsp;16F648A, 16F676, 16F677, 16F684, 16F685, 16F687, 16F688,&nbsp;16F689, 16F690, 16F707,&nbsp;16F716, 16F72, 16F720, 16F721,&nbsp;16F722, 16F722A, 16F723, 16F723A, 16F724,&nbsp;16F726, 16F727,&nbsp;16F73, 16F737, 16F74, 16F747, 16F76, 16F767, 16F77, 16F777,&nbsp;16F785, 16F818, 16F819, 16F83, 16F83A, 16C83, 16C83A,&nbsp;16F84, 16C84,&nbsp;16F84A, 16C84A,&nbsp;16F87, 16F870, 16F871, 16F872,&nbsp;16F873, 16F873A, 16F874, 16F874A,&nbsp;16F876, 16F876A, 16F877,&nbsp;16F877A, 16F88, 16F882, 16F883, 16F884, 16F886,&nbsp;16F887, 16F913, 16F914, 16F916, 16F917, 16F946,
16F1503,&nbsp;16F1507, 16F1508, 16F1509, 16F1516, 16F1517, 16F1518, 16F1519, 16F1526, 16F1527,&nbsp;16F1823, 16F1824, 16F1825,&nbsp;16F1826, 16F1827, 16F1828, 16F1829, 16F1847, 16LF1902, 16LF1903, 16LF1904, 16LF1906, 16LF1907, 16F1933,&nbsp;16F1934, 16F1936, 16F1937, 16F1938, 16F1939, 16F1946, 16F1947,
18F242, 18F248,&nbsp;18F252, 18F258, 18F442, 18F448, 18F452,&nbsp;18F458, 18F1220, 18F1230,&nbsp;18F1320, 18F1330, 18F13K22,&nbsp;18F13K50, 18F14K22,&nbsp;18F14K50, 18F2220,&nbsp;18F2221, 18F2320,&nbsp;18F23K20, 18F23K22, 18F2321, 18F2331, 18F2410,&nbsp;18F24J10, 18F24J11, 18F2420,&nbsp;18F24K20, 18F24K22, 18F2423, 18F2431, 18F2439,18F2450, 18F24J50, 18F2455, 18F2458, 18F2480, 18F2510,&nbsp;18F25J10, 18F25J11, 18F2515,&nbsp;18F2520, 18F25K20, 18F25K22, 18F2523, 18F2525, 18F2539,&nbsp;18F2550, 18F25J50,&nbsp;18F2553, 18F2580, 18F2585, 18F2610,&nbsp;18F26J11, 18F26J13, 18F2620, 18F26K20, 18F26K22, 18F26J50, 18F26J53,&nbsp;18F2680, 18F2682,&nbsp;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,&nbsp;18F4520, 18F45K20, 18F45K22, 18F4523, 18F4525, 18F4539,&nbsp;18F4550, 18F45J50, 18F4553, 18F4580,&nbsp;18F4585, 18F4610, 18F46J11, 18F46J13, 18F4620,&nbsp;18F46K20, 18F46K22, 18F46J50, 18F46J53,&nbsp;18F4680, 18F4682,&nbsp;18F4685, 18F47J13, 18F47J53, 18F66J60, 18F66J65, 18F67J60,&nbsp;18F8520, 18F8722, 18F86J60, 18F86J65, 18F87J60, 18F96J60, 18F96J65,18F97J60,
24F04KA200, 24F04KA201,&nbsp;24F08KA101, 24F08KA102, 24F16KA101, 24F16KA102,&nbsp;24FJ16GA002, 24FJ16GA004, 24FJ32GA002, 24FJ32GA004, 24FJ48GA002, 24FJ48GA004, 24FJ64GA002, 24FJ64GA004, 24FJ64GA006, 24FJ64GA008, 24FJ64GA010, 24FJ96GA006, 24FJ96GA008, 24FJ96GA010, 24FJ128GA006, 24FJ128GA008, 24FJ128GA010, 24FJ32GA102, 24FJ32GA104, 24FJ32GB002, 24FJ32GB004, 24FJ64GA102, 24FJ64GA104,&nbsp;24FJ64GB002, 24FJ64GB004, 24FJ64GB106, 24FJ64GB108, 24FJ64GB110, 24FJ128GA106, 24FJ128GB106, 24FJ128GA108, 24FJ128GB108, 24FJ128GA110, 24FJ128GB110, 24FJ192GA106, 24FJ192GB106, 24FJ192GA108, 24FJ192GB108, 24FJ192GA110, 24FJ192GB110, 24FJ256GA106, 24FJ256GB106, 24FJ256GA108, 24FJ256GB108, 24FJ256GA110, 24FJ256GB110, 24HJ12GP201,&nbsp;24HJ12GP202, 24HJ16GP304, 24HJ32GP202, 24HJ32GP204, 24HJ32GP302, 24HJ32GP304,&nbsp;24HJ64GP202, 24HJ64GP204, 24HJ64GP206, 24HJ64GP210, 24HJ64GP502, 24HJ64GP504, 24HJ64GP506, 24HJ64GP510, 24HJ128GP202, 24HJ128GP204, 24HJ128GP206, 24HJ128GP210, 24HJ128GP306, 24HJ128GP310, 24HJ128GP502, 24HJ128GP504, 24HJ128GP506, 24HJ128GP510, 24HJ256GP206, 24HJ256GP210, 24HJ256GP610,
30F1010, 30F2010,&nbsp;30F2011, 30F2020, 30F2023, 30F2012, 30F3010, 30F3011, 30F3012, 30F3013, 30F3014, 30F4011,&nbsp;30F4012, 30F4013, 30F5011, 30F5013, 30F5015, 30F5016, 30F6010, 30F6011, 30F6012, 30F6013, 30F6014, 30F6015,
33FJ06GS101, 33FJ06GS102, 33FJ06GS202, 33FJ12GP201,&nbsp;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,&nbsp;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,&nbsp;241025,
25010, 25020, 25040, 25080, 25160, 25320, 25640, 25128, 25256, 25512,&nbsp;251024, 251005, 252005, 254005, 258005,&nbsp;251605, 25X10, 25X20,&nbsp;25X40, 25X80,
93S46,&nbsp;93×46, 93x46A,&nbsp;93S56, 93×56, 93x56A, 93S66,&nbsp;93×66, 93x66A, 93×76, 93x76A, 93×86, 93x86A,
AT90S1200, AT90S2313,&nbsp;AT90S8515, AT90S8535, ATmega48, ATmega8, ATmega88, ATmega8515, ATmega8535,&nbsp;ATmega16, ATmega164A,&nbsp;ATmega168, ATmega32, ATmega324A, ATmega328, ATmega64, ATmega644A, ATmega1284,
ATtiny12, ATtiny13, ATtiny24,&nbsp;ATtiny26, ATtiny261,&nbsp;ATtiny2313,&nbsp;ATtiny44, ATtiny48,&nbsp;ATtiny461, ATtiny4313, ATtiny84, ATtiny88, ATtiny861,
DS2430,DS2431,DS2433,DS28EC20,DS1820,
11010,11020,11040,11080,11160

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

Importante!!&nbsp;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)



O projeto é baseado em&nbsp; 28 18F2550 DIP de 28 Pinos, mas apenas cerca de um terço da memória e 0% de eeprom foi usado, por isso vai 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 que eu adaptei o código 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&nbsp;dispositivos correspondentes de 40 pinos 40 (4450, 4455, 4458, 4550, 4553) requer a modificação da PCB.
A fim de implementar uma 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 ser capaz de programar dispositivos PIC precisamos duas linhas digitais Clock e Data e duas tensões de alimentação, VCC e VPP, que são controladas por meio 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:&nbsp;complete archive.
Firmware:&nbsp;Proejto completo MPLAB&nbsp;ou&nbsp;firmware Compilado&nbsp;(.hex)&nbsp; ou&nbsp;uma versão para 18F2450&nbsp;(com funcionalidade reduzida, veja&nbsp;o circuito).
OP&nbsp;(Linha de comando para Linux &amp; Windows)
OpenProg (windows):&nbsp;somente executável;&nbsp;&nbsp;&nbsp;Código fonte&nbsp;(Visual Studio 6 workspace)
opgui (GTK GUI para Linux &amp; Windows):&nbsp;Código fonte&nbsp;ou&nbsp;aplicação
OpenProg e Opgui user’s guide
Octave scripts

Para informações adicionais visite o&nbsp;site do desenvolvedor!
Fonte: Toni Eletronica