Esquemas e materiais. Atualizando o firmware do programador

Assim como um teatro começa com um cabide, a programação de microcontroladores começa com a escolha de um bom programador. Já que estou começando a dominar os microcontroladores da empresa ATMEL, então tive que me familiarizar completamente com o que os fabricantes oferecem. Eles oferecem muitas coisas interessantes e saborosas, só que a preços exorbitantes. Por exemplo, um lenço com um microcontrolador de vinte pernas com um par de resistores e diodos como chicote custa como um “avião”. Portanto, surgiu a questão da automontagem do programador. Após um longo estudo dos desenvolvimentos de rádios amadores experientes, decidiu-se montar um programador comprovado USBASP , cujo cérebro é um microcontroladorAtmega8 (também existem opções de firmware para atmega88 e atmega48). A fiação mínima do microcontrolador permite montar um programador em miniatura que você sempre pode levar com você, como uma unidade flash.

Uma vez decidido montar um programador em miniatura, redesenhei o circuito do microcontrolador Atmega8 na caixa TQFP32(a pinagem do microcontrolador é diferente da pinagem do pacote DIP):

O jumper J1 é usado se for necessário atualizar um microcontrolador com frequência de clock abaixo de 1,5 MHz. Aliás, esse jumper pode ser totalmente eliminado colocando a 25ª perna do MK no chão. Então o programador funcionará sempre com uma frequência reduzida. Pessoalmente, percebi que programar em velocidade reduzida demora uma fração de segundo a mais e, portanto, agora não puxo o jumper, mas costuro constantemente com ele.
Os diodos Zener D1 e D2 são usados ​​para combinar os níveis entre o programador e o barramento USB; funcionará sem eles, mas não em todos os computadores.
O LED azul indica que o circuito está pronto para ser programado; o LED vermelho acende durante a programação. Os contatos de programação estão localizados no conector IDC-06, a pinagem está em conformidade com o padrão ATMEL para um conector ISP de 6 pinos:


Este conector contém contatos para alimentação de dispositivos programáveis, aqui ele é retirado diretamente da porta USB do computador, portanto é preciso ter cuidado e evitar curtos-circuitos. O mesmo conector também é utilizado para programação do microcontrolador de controle, para isso basta conectar os pinos Reset no conector e no microcontrolador (veja a linha pontilhada vermelha no diagrama). No circuito do autor isso é feito com um jumper, mas não baguncei a placa e retirei. Para um único firmware, um simples jumper será suficiente. A placa acabou sendo dupla face, medindo 45x18 mm.


O conector de programação e um jumper para reduzir a velocidade do programador estão localizados na extremidade do dispositivo, o que é muito conveniente


Firmware do microcontrolador de controle

Assim, após a montagem do dispositivo, o mais importante que resta é piscar o microcontrolador de controle. Amigos que ainda possuem computadores com porta LPT são adequados para esses fins :)O programador de cinco fios mais simples para AVR
O microcontrolador pode ser atualizado a partir do conector de programação conectando os pinos de reinicialização do microcontrolador (perna 29) e o conector. Existe firmware para os modelos Atmega48, Atmega8 e Atmega88. É aconselhável utilizar uma das duas últimas pedras, pois o suporte para a versão Atmega48 foi descontinuado e a última versão do firmware data de 2009. E as versões para as 8ª e 88ª pedras são constantemente atualizadas, e o autor parece estar planejando adicionar um depurador no circuito à funcionalidade. Obtemos o firmware da página alemã. Para carregar o programa de controle no microcontrolador, usei o programa PonyProg. Ao programar, é necessário configurar o cristal para funcionar a partir de uma fonte de clock externa de 12 MHz. Captura de tela do programa com configurações do jumper fusível no PonyProg:


Após atualizar o firmware, o LED conectado à perna 23 do microcontrolador deve acender. Este será um sinal claro de que o programador foi programado com sucesso e está pronto para uso.

Instalação do driver

A instalação foi realizada em uma máquina com Windows 7 e não houve problemas. Ao se conectar ao computador pela primeira vez, uma mensagem aparecerá indicando que um novo dispositivo foi detectado, solicitando a instalação de um driver. Selecione a instalação no local especificado:


Selecione a pasta onde está a lenha e clique em Avançar


Uma janela aparecerá instantaneamente avisando que o driver que está sendo instalado não possui assinatura digital para softwares pequenos:


Ignoramos o aviso e continuamos a instalação, após uma breve pausa aparecerá uma janela informando que a operação de instalação do driver foi concluída com sucesso


É isso, o programador está pronto para uso.

Programador Khazama AVR

Para trabalhar com o programador, escolhi o pisca-pisca Khazama AVR Programmer. Um programa maravilhoso com uma interface minimalista.


Ele funciona com todos os microcontroladores AVR populares, permite que você faça flash e eeprom, visualize o conteúdo da memória, apague o chip e também altere a configuração dos bits do fusível. Em geral, um conjunto totalmente padrão. A configuração do fusível é realizada selecionando a fonte do relógio na lista suspensa, reduzindo drasticamente a probabilidade de travamento do cristal por engano. Os fusíveis também podem ser alterados colocando caixas de seleção no campo inferior, mas você não pode colocar caixas de seleção em uma configuração inexistente, e isso também é uma grande vantagem em termos de segurança.


Os fusíveis são gravados na memória MK, como você pode imaginar, pressionando o botão Write All. O botão Salvar salva a configuração atual e o botão Carregar retorna a configuração salva. É verdade que não consegui encontrar um uso prático para esses botões. O botão Default foi projetado para registrar a configuração padrão do fusível, aquele com o qual os microcontroladores vêm de fábrica (geralmente 1 MHz do RC interno).
De uma forma geral, durante todo o tempo que utilizo este programador, ele tem se mostrado o melhor em termos de estabilidade e velocidade de operação. Funcionou sem problemas tanto em um PC desktop antigo quanto em um laptop novo.

Baixar arquivo PCBno SprintLayout você pode seguir este link

Quais os primeiros passos que um radioamador deve tomar se decidir montar um circuito em um microcontrolador? Naturalmente, é necessário um programa de controle - “firmware”, bem como um programador.

E se não houver problemas com o primeiro ponto - o “firmware” finalizado geralmente é carregado pelos autores dos circuitos, então com o programador as coisas são mais complicadas.

O preço dos programadores USB prontos é bastante alto e a melhor solução seria montá-los você mesmo. Aqui está um diagrama do dispositivo proposto (as imagens são clicáveis).

Parte principal.

Painel de instalação MK.

O diagrama original foi retirado do site LabKit.ru com a permissão do autor, pelo qual muito obrigado. Este é o chamado clone do programador proprietário PICkit2. Como a versão do dispositivo é uma cópia “leve” do PICkit2 proprietário, o autor chamou seu desenvolvimento PICkit-2 Lite, que enfatiza a facilidade de montagem de tal dispositivo para rádios amadores iniciantes.

O que um programador pode fazer? Usando o programador, você pode atualizar os MCUs da série PIC mais disponíveis e populares (PIC16F84A, PIC16F628A, PIC12F629, PIC12F675, PIC16F877A, etc.), bem como chips de memória EEPROM da série 24LC. Além disso, o programador pode operar no modo conversor USB-UART e possui algumas das funções de um analisador lógico. Uma função particularmente importante que o programador possui é o cálculo da constante de calibração do gerador RC integrado de alguns MCUs (por exemplo, como PIC12F629 e PIC12F675).

Mudanças necessárias.

Existem algumas alterações no circuito que são necessárias para que utilizando o programador PICkit-2 Lite seja possível escrever/apagar/ler dados de chips de memória EEPROM da série 24Cxx.

Das mudanças que foram feitas no esquema. Adicionada conexão do pino 6 do DD1 (RA4) ao pino 21 do painel ZIF. O pino AUX é utilizado exclusivamente para trabalhar com chips de memória EEPROM 24LC (24C04, 24WC08 e análogos). Transmite dados, por isso está marcado com a palavra “Dados” no diagrama do painel de programação. Ao programar microcontroladores, o pino AUX geralmente não é usado, embora seja necessário ao programar MKs no modo LVP.

Também foi adicionado um resistor pull-up de 2 kOhm, que é conectado entre os pinos SDA e Vcc dos chips de memória.

Já fiz todas essas modificações na placa de circuito impresso, após montar o PICkit-2 Lite conforme diagrama original do autor.

Os chips de memória 24Cxx (24C08, etc.) são amplamente utilizados em equipamentos de rádio domésticos e, às vezes, precisam ser atualizados, por exemplo, ao consertar TVs CRT. Eles usam memória 24Cxx para armazenar configurações.

As TVs LCD usam um tipo diferente de memória (memória Flash). Já falei sobre como fazer flash na memória de uma TV LCD. Se alguém estiver interessado, dê uma olhada.

Devido à necessidade de trabalhar com microcircuitos da série 24Cxx, tive que “terminar” o programador. Não gravei uma nova placa de circuito impresso, simplesmente adicionei os elementos necessários na placa de circuito impresso. Isso é o que aconteceu.

O núcleo do dispositivo é um microcontrolador PIC18F2550-I/SP.

Este é o único chip do dispositivo. MK PIC18F2550 precisa ser “atualizado”. Esta operação simples causa confusão para muitos, pois surge o chamado problema do “ovo e da galinha”. Vou te contar como resolvi isso um pouco mais tarde.

Lista de peças para montagem do programador. Na versão mobile, arraste a tabela para a esquerda (deslize da esquerda para a direita) para ver todas as suas colunas.

Nome Designação Classificação/Parâmetros Marca ou tipo de item
Para a parte principal do programador
Microcontrolador DD1 Microcontrolador de 8 bits PIC18F2550-I/SP
Transistores bipolares VT1, VT2, VT3 KT3102
VT4 KT361
Diodo VD1 KD522, 1N4148
Diodo Schottky VD2 1N5817
LEDs HL1, HL2 qualquer 3 volts, vermelho E verde cores brilhantes
Resistores R1, R2 300 ohms
R3 22 kOhm
R4 1 kOhm
R5, R6, R12 10 kOhm
R7, R8, R14 100 ohms
R9, R10, R15, R16 4,7 kOhm
R11 2,7 kOhm
R13 100 kOhm
Capacitores C2 0,1 μ K10-17 (cerâmica), análogos importados
C3 0,47 mícrons
Capacitores eletrolíticos C1 100uF * 6,3V K50-6, análogos importados
C4 47uF * 16V
Indutor (estrangulador) L1 680 µH tipo unificado EC24, CECL ou caseiro
Ressonador de quartzo ZQ1 20MHz
Tomada USB XS1 tipo USB-BF
Saltador XT1 qualquer tipo de "jumper"
Para painel de instalação do microcontrolador (MK)
Painel ZIF XS1 qualquer painel ZIF de 40 pinos
Resistores R1 2 kOhm MLT, MON (potência de 0,125 W e superior), análogos importados
R2, R3, R4, R5, R6 10 kOhm

Agora um pouco sobre os detalhes e sua finalidade.

Verde O LED HL1 acende quando a energia é aplicada ao programador e vermelho O LED HL2 emite quando os dados são transferidos entre o computador e o programador.

Para dar versatilidade e confiabilidade ao dispositivo, é utilizada uma tomada USB XS1 tipo “B” (quadrada). O computador usa uma tomada USB Tipo A. Portanto, é impossível confundir os soquetes do cabo de conexão. Esta solução também contribui para a confiabilidade do dispositivo. Se o cabo ficar inutilizável, pode ser facilmente substituído por um novo sem necessidade de soldadura ou instalação.

Como indutor L1 de 680 µH, é melhor usar um já pronto (por exemplo, tipos EC24 ou CECL). Mas se você não conseguir encontrar um produto acabado, você mesmo pode fazer o acelerador. Para fazer isso, você precisa enrolar 250 - 300 voltas de fio PEL-0.1 em um núcleo de ferrite de um indutor do tipo CW68. Vale considerar que devido à presença do PWM com realimentação, não há necessidade de se preocupar com a precisão da classificação da indutância.

A tensão para programação de alta tensão (Vpp) de +8,5 a 14 volts é criada pelo regulador chave. Inclui elementos VT1, VD1, L1, C4, R4, R10, R11. Os pulsos PWM são enviados do pino 12 do PIC18F2550 para a base VT1. O feedback é fornecido pelo divisor R10, R11.

Para proteger os elementos do circuito da tensão reversa das linhas de programação ao usar um programador USB no modo ICSP (In-Circuit Serial Programming), um diodo VD2 é usado. VD2 é um diodo Schottky. Deve ser selecionado com uma queda de tensão na junção PN não superior a 0,45 volts. Além disso, o diodo VD2 protege os elementos da tensão reversa quando o programador é usado na conversão USB-UART e no modo analisador lógico.

Ao utilizar o programador exclusivamente para programação de microcontroladores no painel (sem usar ICSP), você pode eliminar completamente o diodo VD2 (foi o que fiz) e instalar um jumper em seu lugar.

A compacidade do dispositivo é feita pelo painel ZIF universal (Zero Insertion Force - com zero esforço de instalação).

Graças a ele, você pode “conectar” um microcontrolador a praticamente qualquer pacote DIP.

O diagrama “Painel de instalação do microcontrolador (MK)” indica como os microcontroladores com diferentes invólucros devem ser instalados no painel. Ao instalar o MK, deve-se atentar para o fato de que o microcontrolador no painel está posicionado de forma que a chave do chip fique na lateral da alavanca de travamento do painel ZIF.

É assim que você precisa instalar microcontroladores de 18 pinos (PIC16F84A, PIC16F628A, etc.).

E aqui estão os microcontroladores de 8 pinos (PIC12F675, PIC12F629, etc.).

Se você precisar atualizar um microcontrolador em um pacote de montagem em superfície (SOIC), você pode usar um adaptador ou simplesmente soldar 5 pinos ao microcontrolador que normalmente são necessários para programação (Vpp, Clock, Data, Vcc, GND).

Você encontra o desenho finalizado da placa de circuito impresso com todas as alterações no link no final do artigo. Ao abrir o arquivo no programa Sprint Layout 5.0, utilizando o modo “Imprimir”, você pode não apenas imprimir uma camada com um padrão de condutores impressos, mas também visualizar o posicionamento dos elementos na placa de circuito impresso. Preste atenção no jumper isolado que conecta o pino 6 do DD1 e o pino 21 do painel ZIF. Você precisa imprimir o desenho do quadro na imagem espelhada.

Você pode fazer uma placa de circuito impresso pelo método LUT, bem como um marcador para placas de circuito impresso, usando tsaponlak (foi o que eu fiz) ou o método do “lápis”.

Aqui está uma imagem do posicionamento dos elementos em uma placa de circuito impresso (clicável).

Na instalação, o primeiro passo é soldar jumpers feitos de fio de cobre estanhado, depois instalar elementos de baixo perfil (resistores, capacitores, quartzo, conector de pino ISCP), depois transistores e um MK programado. O último passo é instalar o painel ZIF, tomada USB e selar os fios com isolamento (jumpers).

"Firmware" do microcontrolador PIC18F2550.

Arquivo de firmware - PK2V023200.hex você precisa gravar o PIC18F2550I-SP MK na memória usando qualquer programador que suporte microcontroladores PIC (por exemplo, Extra-PIC). Utilizei o Programador JDM JONIC PROG e o programa WinPic800.

Você pode fazer upload do firmware para o MCU PIC18F2550 usando o mesmo programador proprietário PICkit2 ou sua nova versão PICkit3. Naturalmente, você pode fazer isso com um PICkit-2 Lite caseiro, se um de seus amigos conseguiu montá-lo antes de você :).

Vale saber também que o “firmware” do microcontrolador PIC18F2550-I/SP (arquivo PK2V023200.hex) é escrito ao instalar o programa PICkit 2 Programmer em uma pasta junto com os arquivos do próprio programa. Localização aproximada do arquivo PK2V023200.hex - "C:\Arquivos de programas (x86)\Microchip\PICkit 2 v2\PK2V023200.hex" . Para quem possui uma versão de 32 bits do Windows instalada no PC, o caminho do local será diferente: "C:\Arquivos de programas\Microchip\PICkit 2 v2\PK2V023200.hex" .

Bem, se você não conseguiu resolver o problema do “ovo e da galinha” usando os métodos propostos, então você pode comprar um programador PICkit3 pronto no site do AliExpress. Lá custa muito mais barato. Escrevi sobre como comprar peças e kits eletrônicos no AliExpress.

Atualizando o firmware do programador.

O progresso não pára e de vez em quando a Microchip lança atualizações para o seu software, inclusive para o programador PICkit2, PICkit3. Naturalmente, também podemos atualizar o programa de controle do nosso PICkit-2 Lite caseiro. Para fazer isso você precisará do programa PICkit2 Programmer. O que é e como usar - um pouco mais tarde. Enquanto isso, algumas palavras sobre o que precisa ser feito para atualizar o firmware.

Para atualizar o software do programador, é necessário fechar o jumper XT1 do programador quando ele estiver desconectado do computador. Em seguida, conecte o programador ao PC e inicie o PICkit2 Programmer. Quando XT1 está fechado, o modo é ativado carregador de inicialização para baixar a nova versão do firmware. Em seguida, no PICkit2 Programmer, através do menu “Ferramentas” - “Baixar Sistema Operacional PICkit 2”, abra o arquivo hexadecimal previamente preparado do firmware atualizado. A seguir, ocorrerá o processo de atualização do software do programador.

Após a atualização, é necessário desconectar o programador do PC e remover o jumper XT1. No modo normal o jumper está aberto. Você pode descobrir a versão do software do programador através do menu "Ajuda" - "Sobre" no programa PICkit2 Programmer.

Tudo isso é uma questão de questões técnicas. E agora sobre o software.

Trabalhando com o programador. Programador PICkit2.

Para trabalhar com o programador USB, precisaremos instalar o programa PICkit2 Programmer no computador. Este programa especial possui uma interface simples, é fácil de instalar e não requer configuração especial. Vale ressaltar que você pode trabalhar com o programador utilizando o ambiente de desenvolvimento MPLAB IDE, mas para fazer flash/apagar/ler o MK basta um programa simples - PICkit2 Programmer. Eu recomendo.

Após instalar o programa PICkit2 Programmer, conecte o programador USB montado ao computador. Ao mesmo tempo ele acenderá verde LED (“energia”), e o sistema operacional reconhece o dispositivo como "Programador de microcontrolador PICkit2" e instale os drivers.

Inicie o programa PICkit2 Programmer. Uma inscrição deve aparecer na janela do programa.

Se o programador não estiver conectado, a janela do programa exibirá uma mensagem assustadora e breves instruções “O que fazer?” Em inglês.

Se o programador estiver conectado a um computador com MK instalado, o programa irá detectá-lo quando for iniciado e nos notificará na janela do PICkit2 Programmer.

Parabéns! O primeiro passo foi dado. E falei sobre como usar o programa PICkit2 Programmer em um artigo separado. Próxima Etapa .

Arquivos necessários:

    Manual do usuário PICkit2 (russo) pegue ou.

Com o desenvolvimento da tecnologia informática, há cada vez menos computadores equipados com portas COM e LPT. Isto, por sua vez, causa dificuldades, em particular para rádios amadores, associadas ao emparelhamento de ferramentas de programação de microcontroladores com um computador pessoal.

Este artigo descreve um programador USB para microcontroladores AVR, que você mesmo pode montar. Ele é construído em um microcontrolador Atmega8 e é capaz de operar a partir de um conector USB de computador. Este programador é compatível com STK500 v2.

Descrição do programador USB

O programador USB é construído em uma placa feita de fibra de vidro de um lado. Existem 2 jumpers na placa: um está localizado sob o conector SPI, o segundo jumper está localizado próximo ao mesmo conector.

Depois que todas as peças estiverem lacradas, é necessário atualizar o microcontrolador Atmega8 com o firmware fornecido no final do artigo. Os fusíveis que precisam ser ajustados durante a programação do microcontrolador Atmega8 devem ser assim:

  • SUT1 = 0
  • BOTASZ1 = 0
  • BOTASZ0 = 0
  • CKOPT = 0
  • ESPIEN = 0

Deve ser lembrado que em alguns programas as configurações dos fusíveis são definidas na direção oposta a esta. Por exemplo, no programa CodeVisionAVR você precisa marcar as caixas ao lado dos fusíveis mencionados acima, e no programa PonyProg vice-versa.

Programando Atmega8 via porta LPT de um computador

A maneira mais rápida e barata de programar o Atmega8 é usar um programador LPT para AVR. Um diagrama semelhante é mostrado abaixo.

O microcontrolador é alimentado por um regulador de tensão 78L05 simples. Você pode usar o programa UniProf como shell de programação.

Ao ligar o programa pela primeira vez e quando o controlador não estiver conectado, pressionando o botão “LPTpins”, você precisa configurar os pinos da porta LPT da seguinte forma:

Quando o UniProf é iniciado, ele determina automaticamente o tipo de microcontrolador. Carregamos o firmware Atmega8_USB_prog.hex na memória UniProf e rejeitamos a conexão do arquivo EEPROM.

Ajustamos os fusíveis da seguinte forma (para o programa UniProF) pressionando o botão “FUSE”:

Para lembrar as configurações, pressione todos os três botões “Write”. Em seguida, clicando em “Apagar”, primeiro limpamos a memória do microcontrolador que está sendo atualizado. Após isso, clique em “Prog” e aguarde a conclusão do firmware.

Configurando um programador USB

Após o flash do nosso microcontrolador, ele deve ser instalado na placa do programador USB. A seguir, conectamos o programador à porta USB do computador, mas ainda não fornecemos energia.

Configuração de porta:

Configuração do terminal:

Configuração ASCII:

Agora, depois de concluídos todos os procedimentos, fornecemos energia ao programador USB. O LED HL1 deve piscar 6 vezes e depois permanecer aceso.

Para verificar a conexão entre o programador USB e o computador, pressione 2 vezes a tecla “Enter” no programa HyperTerminal. Se tudo estiver bem devemos ver a seguinte imagem:

Caso contrário, verifique novamente a instalação, principalmente a linha TxD.

A seguir, entramos na versão 2.10 do programador, pois sem ela o programador não trabalhará com programas de “nível superior”. Para fazer isso, digite “2” e pressione “Enter”, digite “a” (inglês) e pressione “Enter”.

O programador USB é capaz de reconhecer a conexão de um microcontrolador programável. Isto é feito na forma de monitoramento do “pull-up” do sinal de Reset para a fonte de alimentação. Este modo é ativado e desativado da seguinte forma:

  • “0”, “Enter” - o modo está desabilitado.
  • “1”, “Enter” - o modo está habilitado.

Mudança de velocidade de programação (1MHz):

  • “0”, “Enter” – velocidade máxima.
  • “1”, “Enter” – velocidade reduzida.

Isso conclui o trabalho preparatório, agora você pode tentar atualizar algum microcontrolador.

(downloads: 1.203)

Um dia resolvi montar um medidor LC simples para pic16f628a e naturalmente tive que piscar com alguma coisa. Eu costumava ter um computador com porta COM física, mas agora só tenho USB e uma placa pci-lpt-2com. Para começar, montei um programador JDM simples, mas descobri que ele não queria funcionar nem com a placa pci-lpt-com nem com o adaptador usb-com (baixa tensão dos sinais RS-232). Então corri para procurar programadores de pic usb, mas lá, como descobri, tudo se limitava ao uso de pic18f2550/4550 caro, que eu naturalmente não tinha, e é uma pena usar MKs tão caros se eu muito raramente faço algo nos picos (prefiro av- Sim, atualizá-los não é problema, são muito mais baratos e me parece mais fácil escrever programas neles). Depois de pesquisar muito na Internet em um dos muitos artigos sobre o programador EXTRA-PIC e suas diversas variantes, um dos autores escreveu que o extrapic funciona com qualquer porta COM e até mesmo com um adaptador USB-COM.

O circuito deste programador usa um conversor de nível lógico max232.

Eu pensei que se você usasse um adaptador USB, seria muito estúpido converter o usb para usart TTL, TTL para RS232, RS232 de volta aos níveis TTL duas vezes, se você puder apenas pegar os sinais TTL da porta RS232 do usb- chip conversor usart.

Então eu fiz. Peguei o chip CH340G (que tem todos os sinais de 8 portas COM) e conectei-o em vez do max232. E isso é o que aconteceu.

No meu circuito tem um jumper jp1, que não está no pico extra, instalei porque não sabia como se comportaria a saída TX no nível TTL, então possibilitei inverter ele no NAND livre restante elemento e, como se viu, estava certo, há um lógico no pino TX e, portanto, há 12 volts no pino VPP quando ligado, mas nada acontecerá durante a programação (embora você possa inverter o TX no software) .

Depois de montar a placa, chegou a hora dos testes. E aí veio a principal decepção. O programador foi identificado imediatamente (com o programa ic-prog) e começou a trabalhar, mas muito lentamente! Em princípio - como esperado. Então, nas configurações da porta COM, configurei a velocidade máxima (128 kilobaud) e comecei a testar todos os programas encontrados para JDM. Como resultado, o PicPgm acabou sendo o mais rápido. Meu pic16f628a foi totalmente atualizado (hex, eeprom e config) além de verificação por cerca de 4-6 minutos (a leitura é mais lenta que a escrita). IcProg também funciona, mas mais lento. Não houve erros de programação. Também tentei fazer o flash do eeprom 24c08, o resultado é o mesmo - tudo costura, mas bem devagar.

Conclusões: o programador é bastante simples, não contém peças caras (CH340 - 0,3-0,5 $, k1533la3 geralmente pode ser encontrado entre lixo de rádio), funciona em qualquer computador, laptop (e você pode até usar tablets no Windows 8/10 ). Contras: é muito lento. Também requer alimentação externa para o sinal VPP. Como resultado, pareceu-me que, para picos de flash pouco frequentes, esta é uma opção fácil de repetir e barata para quem não tem um computador antigo com as portas necessárias em mãos.

Aqui está uma foto do dispositivo finalizado:

Como diz a música: “Eu o fiz do que era”. O conjunto de peças é muito diversificado: tanto SMD quanto DIP.

Para quem se atreve a repetir o circuito, quase qualquer um será adequado como conversor usb-uart (ft232, pl2303, cp2101, etc.), em vez de k1533la3, k555 será adequado, acho que até a série k155 ou um análogo estrangeiro 74als00, pode até funcionar com elementos NOT lógicos do tipo k1533ln1. Estou anexando minha própria placa de circuito impresso, mas qualquer pessoa pode redesenhar a fiação para os elementos que estavam disponíveis.

Lista de radioelementos

Designação Tipo Denominação Quantidade ObservaçãoComprarMeu bloco de notas
IC1 LascaCH340G1 Para o bloco de notas
IC2 LascaK1533LA31 Para o bloco de notas
VR1 Regulador linear

LM7812

1 Para o bloco de notas
VR2 Regulador linear

LM7805

1 Para o bloco de notas
VT1 Transistor bipolar

KT502E

1 Para o bloco de notas
VT2 Transistor bipolar

KT3102E

1 Para o bloco de notas
VD1-VD3 Diodo retificador

1N4148

2 Para o bloco de notas
C1, C2, C5-C7 Capacitor100 nF5 Para o bloco de notas
C3, C4 Capacitor22 pF2 Para o bloco de notas
HL1-HL4 Diodo emissor de luzQualquer4 Para o bloco de notas
R1, R3, R4 Resistor

1 kOhm

3
22 de setembro de 2011 às 20h11

Programador USB em miniatura para microcontroladores AVR

  • Programação de microcontrolador

Assim como um teatro começa com um cabide, a programação de microcontroladores começa com a escolha de um bom programador. Como estou começando a dominar os microcontroladores da ATMEL, tive que me familiarizar profundamente com o que os fabricantes oferecem. Eles oferecem muitas coisas interessantes e saborosas, só que a preços exorbitantes. Por exemplo, um lenço com um microcontrolador de vinte pernas com um par de resistores e diodos como chicote custa como um “avião”. Portanto, surgiu a questão da automontagem do programador. Após um longo estudo dos desenvolvimentos de rádios amadores experientes, decidiu-se montar um programador USBASP comprovado, cujo cérebro é o microcontrolador Atmega8 (também existem opções de firmware para atmega88 e atmega48). A fiação mínima do microcontrolador permite montar um programador em miniatura que você sempre pode levar com você, como uma unidade flash.

O autor deste programador é o alemão Thomas Fichl, sua página de desenvolvimento com diagramas, arquivos de placas de circuito impresso e drivers.
Uma vez decidido montar um programador em miniatura, redesenhei o circuito do microcontrolador Atmega8 no pacote TQFP32 (a pinagem do microcontrolador difere da pinagem do pacote DIP):

O jumper J1 é usado se for necessário atualizar um microcontrolador com frequência de clock abaixo de 1,5 MHz. Aliás, esse jumper pode ser totalmente eliminado colocando a 25ª perna do MK no chão. Então o programador funcionará sempre com uma frequência reduzida. Pessoalmente, percebi que programar em velocidade reduzida demora uma fração de segundo a mais e, portanto, agora não puxo o jumper, mas costuro constantemente com ele.
Os diodos Zener D1 e D2 são usados ​​para combinar os níveis entre o programador e o barramento USB; funcionará sem eles, mas não em todos os computadores.
O LED azul indica que o circuito está pronto para ser programado; o LED vermelho acende durante a programação. Os contatos de programação estão localizados no conector IDC-06, a pinagem está em conformidade com o padrão ATMEL para um conector ISP de 6 pinos:

Este conector contém contatos para alimentação de dispositivos programáveis, aqui ele é retirado diretamente da porta USB do computador, portanto é preciso ter cuidado e evitar curtos-circuitos. O mesmo conector também é utilizado para programação do microcontrolador de controle, para isso basta conectar os pinos Reset no conector e no microcontrolador (veja a linha pontilhada vermelha no diagrama). No circuito do autor isso é feito com um jumper, mas não baguncei a placa e retirei. Para um único firmware, um simples jumper será suficiente. A placa acabou sendo dupla face, medindo 45x18 mm.

O conector de programação e um jumper para reduzir a velocidade do programador estão localizados na extremidade do dispositivo, o que é muito conveniente

Firmware do microcontrolador de controle
Assim, após a montagem do dispositivo, o mais importante que resta é piscar o microcontrolador de controle. Amigos que ainda possuem computadores com porta LPT são adequados para esses fins :) O programador de cinco fios mais simples para AVR
O microcontrolador pode ser atualizado a partir do conector de programação conectando os pinos de reinicialização do microcontrolador (perna 29) e o conector. Existe firmware para os modelos Atmega48, Atmega8 e Atmega88. É aconselhável utilizar uma das duas últimas pedras, pois o suporte para a versão Atmega48 foi descontinuado e a última versão do firmware data de 2009. E as versões para as 8ª e 88ª pedras são constantemente atualizadas, e o autor parece estar planejando adicionar um depurador no circuito à funcionalidade. Obtemos o firmware da página alemã. Para carregar o programa de controle no microcontrolador, usei o programa PonyProg. Ao programar, é necessário configurar o cristal para funcionar a partir de uma fonte de clock externa de 12 MHz. Captura de tela do programa com configurações do jumper fusível no PonyProg:

Após atualizar o firmware, o LED conectado à perna 23 do microcontrolador deve acender. Este será um sinal claro de que o programador foi programado com sucesso e está pronto para uso.

Instalação do driver
A instalação foi realizada em uma máquina com Windows 7 e não houve problemas. Ao se conectar ao computador pela primeira vez, uma mensagem aparecerá indicando que um novo dispositivo foi detectado, solicitando a instalação de um driver. Selecione a instalação no local especificado:

Uma janela aparecerá instantaneamente avisando que o driver que está sendo instalado não possui assinatura digital para softwares pequenos:

Ignoramos o aviso e continuamos a instalação, após uma breve pausa aparecerá uma janela informando que a operação de instalação do driver foi concluída com sucesso

É isso, o programador está pronto para uso.

Programador Khazama AVR
Para trabalhar com o programador, escolhi o pisca-pisca Khazama AVR Programmer. Um programa maravilhoso com uma interface minimalista.

Ele funciona com todos os microcontroladores AVR populares, permite que você faça flash e eeprom, visualize o conteúdo da memória, apague o chip e também altere a configuração dos bits do fusível. Em geral, um conjunto totalmente padrão. A configuração do fusível é realizada selecionando a fonte do relógio na lista suspensa, reduzindo drasticamente a probabilidade de travamento do cristal por engano. Os fusíveis também podem ser alterados colocando caixas de seleção no campo inferior, mas você não pode colocar caixas de seleção em uma configuração inexistente, e isso também é uma grande vantagem em termos de segurança.

Os fusíveis são gravados na memória MK, como você pode imaginar, pressionando o botão Write All. O botão Salvar salva a configuração atual e o botão Carregar retorna a configuração salva. É verdade que não consegui encontrar um uso prático para esses botões. O botão Default foi projetado para registrar a configuração padrão do fusível, aquele com o qual os microcontroladores vêm de fábrica (geralmente 1 MHz do RC interno).
De uma forma geral, durante todo o tempo que utilizo este programador, ele tem se mostrado o melhor em termos de estabilidade e velocidade de operação. Funcionou sem problemas tanto em um PC desktop antigo quanto em um laptop novo.

Você pode baixar o arquivo PCB no SprintLayout usando