A odisséia do programador de PICs (clone do K150)
Autor: Gustavo | Publicado: 2012-06-20T01:54:00-03:00



O programador comprado



Já possuo um&nbsp;programador&nbsp;de PICs nacional (clone do PicKit 2), mas como estou entrando em um projeto crítico resolvi a 1 mês atrás comprar um segundo gravador pelo ebay, semana passada quando o recebi (foto ao lado) foi quando a batalha começou, achei melhor deixar registrado aqui como fiz para conseguir resolver os problemas que vieram de brinde.











O&nbsp;gravador


Ao o que tudo indica o gravador é uma versão clone (pirata) do K150 (site oficial aqui), um projeto meio antigo e com última atualização em 2007, mas
segundo as especificações, suporta toda a linha 8 bits&nbsp;dos PICs&nbsp;(12F, 16F e 18F), o programador é baseado em um 16F628A e um CI conversor USB-serial da Profilic, é alimentado diretamente pela USB e utiliza um CI da texas (DIP de 8 pinos) como conversor DC-DC para&nbsp;provavelmente&nbsp;conseguir os 13V de tensão de programação, possui um soquete ZIF 40 pinos para &nbsp;programação direta e uma saída de 6 pinos para programação por ICSP com o cabo já incluso, ou seja, aparentemente um bom programador.





A odisséia






Circuito pisca-led e os dois programadores


Pois bem, logo quando o recebi já tratei de tentar colocá-lo pra funcionar por ICSP em um circuito simples (pisca led) com um 18F4520 que já estava montado em uma protoboard, mas foi aí que percebi que o programador não veio com software, dei uma pesquisada na internet e achei o site do criador do original, lá encontrei a última versão do pacote para o K150, chamado DIYpack25EP, que inclui o software para o PC&nbsp;(chamado MicroBrn)&nbsp;e um firmware para cada um dos programadores suportados, dentre eles o K150, como o software do pacote não reconhecia o gravador como uma versão suportada, resolvi arriscar e com o meu outro programador (o clone do pickit 2 que aparece na foto acima) gravei o firmware que veio no pacote em um 16F628A avulso, ao substituir o 16F628A do programador por esse as coisas começaram a melhorar, o MicroBrn já reconhecia o gravador e já conseguia ler o conteúdo dos PICs, mas foi aí que percebi o segundo problema, ao tentar importar o arquivo .hex do pisca-led para o 18F4520 no programa de gravação do K150, ele apresentava o seguinte erro:




Error in HEX file - FUSE


Após mais alguma pesquisa descobri que o segundo executável que vinha no pacote, chamado fixhex2, servia justamente para corrigir isso, depois algum trabalho para conseguir rodá-lo (acusava a falta de um arquivo, algo resolvido com uma pesquisa no google e alguns comandos de console) consegui o utilizar para converter o arquivo .hex em algo compreensível pelo MicroBrn do K150, no caso, um segundo arquivo com o nome ~.fix.hex, nesse ponto acreditava que já estava tudo certo, mas aí veio o terceiro problema, o programa do K150 aceitava o arquivo corrigido pelo fixhex, mas não conseguia importar as configurações de fusíveis existentes no hexa original, algo que só percebi por ver que o led estava piscando bem mais lentamente quando gravava o mesmo código pelo K150 em relação à gravação (correta) feita pelo meu pickit2, ao comparar o arquivo .hex corrigido pelo fixhex com o .hex lido do pic gravado corretamente, percebi que todos os valores dos fusíveis estavam errados, inclusive o fusivel de seleção de cristal, motivo pelo qual o led piscava mais lentamente, segue a comparação:




Diferença no valor dos fusíveis







Algo totalmente desanimador, achei que esse seria o fim e que teria que ficar ajustando manualmente todas as configurações de fusíveis toda vez que quisesse gravar um código com esse programador, mas foi logo antes de abandoná-lo em um canto escuro que durante uma última pesquisa achei a solução, segundo uma dica dada em alguns posts&nbsp;nos&nbsp;fóruns&nbsp;sobre o gravador, quando você exporta o .hex pelo MPLAB o arquivo gerado é&nbsp;reconhecível&nbsp;pelo MicroBrn, sem nem mesmo ter que passar pelo fixhex2, e para a minha surpresa, ao utilizar o arquivo .hex exportado ao invés do arquivo gerado pela compilação e "corrigido" pelo fixhex2, o MicroBrn reconheceu todos os fusíveis perfeitamente e os gravou sem nenhum problema!&nbsp;


Exportação do .hex





MicroBrn programando um PIC corretamente




Conclusões





O programador parece ser ótimo, a qualidade de construção é muito boa e profissional (bem superior ao clone do pickit2 que tenho aqui) e veio inclusive com os suportes feitos de parafuso para evitar o contato do programador com a bancada, o considerei uma ótima aquisição, ainda mais por menos de 12 dólares;
Depois que descobri como o utilizar, ele não apresentou nenhum erro até agora, sempre realizando as programações perfeitamente;
É um pouco mais lento do que o pickit2, algo natural considerando que não é um gravador USB nativo;
Apesar de ter sido uma ótima compra, não o indico para quem está começando e ainda&nbsp;não&nbsp;tem nenhum gravador, visto que se eu não tivesse nenhum outro não teria conseguido nem mesmo gravar o firmware alternativo para corrigi-lo, e não teria descoberto os erros posteriores;
O arquivo .hex gerado pela exportação é muito maior do que o arquivo gerado pela compilação, acredito que isso seja porque o .hex exportado contém os valores para todos os endereços de memória, enquanto o .hex resultante da compilação é "comprimido" para conter só os bits que foram alterados, deve ser por isso também que os fusíveis são&nbsp;lidos corretamente pelo MicroBrn apenas no arquivo "não comprimido";







Resumão







Caso a sua cópia pirateada do K150 comprada no ebay não funcione, grave um pic com o firmware mais atualizado fornecido no site oficial do K150 e o coloque no gravador, utilize o programa MicroBrn mais atual também, que vem no pacote junto do firmware, é o único inclusive que roda em Windows 64 bits;
Sempre exporte o .hex para realizar a gravação e utilize o formato INHX32 (já padrão do MPLAB);
Caso&nbsp;você&nbsp;possua um arquivo .hex gerado em outro compilador,&nbsp;você&nbsp;pode importá-lo no MPLAB e logo em seguida exportá-lo, assim o MPLAB o corrigirá e fornecerá uma versão "não comprimida" dele assim como ele faz com os gerados por ele próprio;





Bom, é isso pessoal, espero que esse&nbsp;post&nbsp;seja útil para outras pessoas que estejam na mesma situação em que fiquei.

Até mais o/