ATtiny85. Como eu queimo um gerenciador de inicialização? Qual é o processo?

8

Quero usar todos os seis pinos de E / S de um ATtiny85, o que significa também usar o pino de redefinição como um pino de E / S; no entanto, descobri que se eu desativar o pino RESET, não posso mais programar o ATtiny usando um Programador ISP.

No entanto, descobri que existem gerenciadores de inicialização para o ATtiny que, até onde eu entendi, me permitem programar o ATtiny por USB, sem a necessidade do pino RESET.

Minha pergunta é : Como gravar um gerenciador de inicialização (como micronúcleos, por exemplo) no ATtiny85? E como eu preciso conectar o ATtiny ao USB depois disso (assim ? )? Como programo depois disso? Lembre-se de que, em termos de queima de bootloaders e modificação de fusíveis, eu sou um novato completo.

Além disso, estou usando o esboço do ArduinoISP como meu programador de ISP, já que não tenho um programador de ISP real, mas, tanto quanto li, isso não será um problema.

EDIT: Eu tenho essa coisa que comprei por alguns dólares no eBay, que não sei como e se preciso usar: insira a descrição da imagem aqui

Calin
fonte
Gravar um gerenciador de inicialização é o mesmo que gravar qualquer outro programa. Mas, se você encontrar um ruim e trocar o fusível de reinicialização, ficará preso até obter outro chip ou um programador de alta tensão. Então, eu recomendo que você teste seu carregador de inicialização USB antes de trocar o fusível. Seu código USB do software provavelmente vem com uma recomendação para um circuito para aproximar a interface elétrica USB.
Chris Stratton

Respostas:

1

Acabei de finalizar o meu Arduino-Plugin com a integração total do TinySafeBoot (TSB) para ATtiny84A, ATtiny85 e ATmega328P.

O projeto pode ser encontrado aqui:
https://mesom.de/atflash/index_english.html https://mesom.de/atflash/tinysafeboot/index_english.html

Você pode usá-lo como está agora e, em seguida, usar o Reset Pin como entrada analógica. Observe apenas se a tensão nunca fica abaixo 0.6 * VCC.

Como alternativa, você pode modificar os fusíveis boards.txtpara ter este pino disponível:
Vá para Preferências do Arduino e clique no link para preferences.txt(Mina:) /Users/stefan/Library/Arduino15/preferences.txt. Nesta pasta, navegue para /packages/atflash/hardware/avr/0.1.0. Abra o boards.txte vá para a seção
ATTSB85.name=ATtiny85 (TSB)(Int. 8 MHz)

Mude a linha
ATTSB85.bootloader.high_fuses=0xdf
para
ATTSB85.bootloader.high_fuses=0x5f

Reinicie o Arduino e grave o gerenciador de inicialização através do menu Arduino.


Se você ainda deseja obter outro Pin do ATtiny85: pode alterar o gerenciador de inicialização para usar apenas um Pin para RX e TX (consulte o site do TSB). Mas por que todo esse esforço? Basta pegar o ATtiny84A. Tem 14 pinos em vez de 8 e custa quase o mesmo.

Stefan

stexx
fonte
2
  • Sim, existem interfaces USB para ATtiny85. Basta olhar para um dos projetos de hardware aberto, como o Digispark .
  • Uma interface USB exigirá dois pinos, portanto, usar um para salvar um pino não me parece econômico.
  • Concordo com o @FAD, que você realmente não precisa de uma pilha USB e simplesmente pode fazer uma coisa de atraso na inicialização com os pinos do UART.
  • HVSP (a programação de alta tensão) não é difícil de fazer. Se você já está familiarizado com o ArduinoISP, pode experimentar o ScratchMonkey , que usa a mesma abordagem (com uma fonte de alimentação de 12V e um transistor) para fazer a programação HVSP.
microtherion
fonte
A interface USB pode ser desligada, por exemplo, com um jumper quando não estiver programado, ou pode ser utilizada de uma maneira que não interfira na programação. A reprogramação é normalmente feita imediatamente após uma redefinição.
AMADANON Inc.
1

É verdade que, se você usar o pino de redefinição como E / S, precisará de um programador especial que, acredito, forneça alta tensão (12v, se bem me lembro) ou algo assimPara aplicar uma fonte de 12V a esse pino para forçá-lo ao modo de programação, programe usando um programador normal (ou outro arduino). No entanto, o que você está procurando é algo como o que está sendo feito no Arduino. O arduino é programado com um gerenciador de inicialização especial por meio do ISP; portanto, quando você liga o microcontrolador, o gerenciador de inicialização executa primeiro e, por alguns milissegundos, verifica os pinos do UART em busca de atividades e, se vê algo válido, muda para o modo de programação, aguardando o novo código. para acessar o UART (não o ISP) e gravá-lo no local do programa; caso contrário, o carregador de inicialização simplesmente entregará a execução do código ao programa existente, se houver.

Aqui está uma explicação simples de como funciona: Digamos que o tamanho do flash do seu microcontrolador seja 1 KB e o carregador de inicialização seja 100B, para que seu programa possa ser armazenado no local 101B + e seu tamanho máximo seja (1KB-100B). Portanto, quando o carregador de inicialização é iniciado e não há atividade nos pinos do UART, ele pula para o local do seu programa (em 101B), enquanto se for detectada atividade de programação, ele começa a ler o novo código e substitui o flash a partir de 101B (para que ele ganhe ' escrever sobre si mesmo).

E você precisará do USBASP para programar o gerenciador de inicialização pela primeira vez. E você não programa o ATtiny85 através de USB, pois esse chip não suporta USB; no entanto, você usa um USB para chip / módulo serial que emula o protocolo serial através do USB. Alguns microcontroladores atmel possuem suporte serial embutido e outros podem ser feitos através da emulação de software.

  • E, como Chris sugeriu, não desative o pino de redefinição até testar e validar se o seu carregador de inicialização funciona.
Fahad Alduraibi
fonte
obdev.at/products/vusb/index.html
Ignacio Vazquez-Abrams
@ IgnacioVazquez-Abrams, isso é legal, e já existem gerenciadores de inicialização implementados com ele. Minhas informações eram meio antigas então :). no entanto, ainda é o mesmo conceito, mas a comunicação direta com o PC, em vez da emulação serial USB. Obrigado
Você também pode gravar um gerenciador de inicialização em um ATtiny através de um Arduino (UNO ou equivalente). Aqui estão algumas instruções: highlowtech.org/?p=1695 ou se você preferir um vídeo: youtube.com/watch?v=qz-YMPY4_z0
Sourcery
Aqui está uma boa página sobre como programar o ATtiny4 5 9 10 20 e 40 usando o SPI de um Arduino, por isso não é o ATtiny85, mas achei que estava relacionado. Também uma coisa que o blog menciona é que, se você usar o pino de redefinição como E / S, tudo o que você precisa é de fonte de 12V para ativar o modo de programação e ainda pode programá-lo da mesma maneira, portanto, nenhum programador especial como eu pensava antes. junkplusarduino.blogspot.com/p/attiny10-resources.html
Fahad Alduraibi
@FAD, os 4/5/9/10 são bestas completamente diferentes do ATtiny85. É verdade que eles falam o mesmo protocolo de programação (TPI) para programação de alta tensão e tensão regular, mas isso NÃO é enfaticamente verdade para qualquer outro microcontrolador ATxxx.
microtherion
0

Tenho uma coisa que comprei por alguns dólares no eBay, que não sei como e se preciso usar:

é infinitamente melhor que o seu arduinoisp.

google avrdude / avrdudess.

dannyf
fonte