Como eu planejo na programação de circuitos de um AVR?

12

Meu método usual de reprogramar AVRs (até agora limitado a ATtiny13 e ATtiny2313) é desconectar o chip do circuito host, conectá-lo a outra placa de ensaio com todas as conexões do ICSP no lugar, programar e substituir. No entanto, continuo ouvindo dizer que é possível programar o chip no lugar (que é, eu entendo, o ponto principal do ICSP).

Existem considerações especiais de hardware que é preciso levar em consideração antes de programar o chip in situ? Por exemplo, receio que o processo ICSP possa danificar os componentes do circuito conectados aos mesmos pinos AVR usados ​​para o ICSP. Ocasionalmente, é necessário adicionar diodos ou algum outro tipo de buffer para proteger esses componentes?

Sei que essa pergunta parece meio vaga, e acho que é - mas não forneci detalhes de meu circuito específico porque estou interessado em regras gerais mais gerais. Ou seja, nunca é preciso se preocupar com isso, ou a resposta realmente depende do circuito específico do qual o MCU faz parte?

Tim
fonte

Respostas:

15

Eu usei o ISP para praticamente todas as placas de AVR que fiz; não é nada para ter medo. O manual do AVR ISP mkII fornece um resumo muito bom das limitações que você precisa observar na seção "Interface de destino". Basicamente, se você executar os pinos MISO / MOSI / SCK diretamente no programador e tiver cerca de 820 ohms entre eles e o resto do circuito (e não estiver fazendo nada estranho com o pino de redefinição), tudo bem. Eu não me preocuparia com o ISP danificando outros componentes; não é um programador de alta tensão. Todos os sinais são executados em 5V; portanto, se ele pode danificar um componente externo, também o seu microcontrolador.

Se você realmente está preso a uma placa que não permite a programação de ISP, tentaria pelo menos usar um soquete ZIF para sua placa de programação. Eles são caros, mas melhorarão muito sua qualidade de vida.

phooky
fonte
Obrigado pelo link - é exatamente isso que estou procurando. Na verdade, não estou usando um AVR ISP real - apenas um arduino programado adequadamente. (!) Estou substituindo isso por um Bus Pirate em alguns dias, então montar uma placa com soquetes ZIF é definitivamente algo que estou planejando fazer. Meu procedimento atual é extremamente feio!
Tim
1

Use um jumper ou um comutador para desconectar fisicamente o cabeçalho do ICSP. Dessa forma, você pode compartilhar os pinos com outras funções sem se preocupar e sem precisar mexer nos outros componentes.

Essa parece ser a solução mais óbvia e segura, e é o que eu uso.

(Minha primeira resposta foi excluída, tentei adicionar mais detalhes).

Ali Afshar
fonte
Como isso funcionaria? Então, quando o comutador / jumper estiver conectado, os pinos ainda estarão conectados ao restante do circuito.
eeze
0

Infelizmente, você não pode fazer isso na programação de circuitos dos seus AVRs se os pinos forem compartilhados por outras funções, por exemplo, acendendo os LEDs. Embora possa funcionar, não é garantido, pois pode fazer com que as saídas do programador ou µC caiam muito baixo para que funcione.

Uma outra alternativa é pedir seus chips pré-programados. Eu sei que a Microchip oferece isso para alguns de seus chips, mas não tenho certeza sobre o Atmel.

Thomas O
fonte
Oh, bem, eu suspeitava disso. Eu só vou ter que continuar fazendo as coisas do meu jeito lento e desajeitado, eu acho. (Oh, e nenhuma chance ficando Atmel para fazer pré-programação para mim, eu sou apenas um hobby humilde :-).)
Tim
O microchip cobra ~ $ 40 "taxa de instalação". Novamente, não tenho certeza sobre Atmel. Se você está comprando na faixa de 10 a 100, provavelmente vale a pena.
Thomas O
3
Programei muitas placas com outras cargas nos pinos SPI, principalmente LEDs, sem problemas. Apenas tome cuidado para não ter mais nada dirigindo os sinais. Isso significa, por exemplo, se você tem um dispositivo SPI conectado, use um resistor pull up ou similar para manter isso também em redefinição ou desmarcação.
Yann Vernier