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?
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).
fonte
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.
fonte