Come posso programmare la programmazione in circuito di un AVR?


12

Il mio solito metodo di riprogrammazione degli AVR (finora limitati a ATtiny13 e ATtiny2313) è quello di scollegare il chip dal circuito host, collegarlo a un'altra breadboard con tutti gli agganci ICSP in posizione, programmare, quindi sostituire. Tuttavia, continuo a sentire che si può programmare il chip sul posto (che è, capisco, l'intero punto dell'ICSP).

Ci sono considerazioni hardware speciali che bisogna tenere in considerazione prima di programmare il chip in situ? Ad esempio, temo che il processo ICSP possa danneggiare i componenti del circuito collegati agli stessi pin AVR utilizzati per ICSP. Occasionalmente è necessario aggiungere diodi o altri tipi di buffering per proteggere questi componenti?

So che questa domanda sembra piuttosto vaga, e immagino che lo sia - ma non ho fornito i dettagli del mio circuito particolare perché sono interessato a regole empiriche più generali. Cioè non ci si deve mai preoccupare di questo, o la risposta dipende davvero dal circuito particolare di cui fa parte l'MCU?

Risposte:


15

Ho usato l'ISP per quasi tutte le schede AVR che ho fatto; non c'è nulla di cui aver paura. Il manuale AVR ISP mkII fornisce un riassunto abbastanza buono delle limitazioni che devi cercare nella sezione "Interfaccia di destinazione". Fondamentalmente, se esegui i pin MISO / MOSI / SCK direttamente sul programmatore e hai circa 820 ohm tra loro e il resto del circuito (e non stai facendo nulla di strano con il pin di reset), stai bene. Non mi preoccuperei che l'ISP danneggi altri componenti; non è un programmatore ad alta tensione. I segnali funzionano tutti a 5 V, quindi se può danneggiare un componente esterno, così può il tuo microcontrollore.

Se sei davvero bloccato con una scheda che non consente la programmazione ISP, proverei almeno a utilizzare un socket ZIF per la tua scheda di programmazione. Sono costosi, ma miglioreranno notevolmente la qualità della tua vita.


Grazie per il link - è esattamente quello che sto cercando. In realtà non sto usando un vero ISP AVR - solo un arduino opportunamente programmato. (!) Lo sostituirò con un pirata di autobus tra qualche giorno, quindi mettere insieme una tavola con prese ZIF è sicuramente qualcosa che sto pensando di fare. La mia procedura attuale è estremamente brutta!
Tim

1

Utilizzare un jumper o un interruttore in modo da poter disconnettere fisicamente l'intestazione ICSP. In questo modo puoi condividere i pin con altre funzioni senza preoccuparti e senza dover giocherellare con gli altri componenti.

Questa sembra la soluzione più ovvia e più sicura, ed è quello che uso.

(La mia prima risposta è stata cancellata, quindi ho cercato di aggiungere ulteriori dettagli).


Come funzionerebbe? Quindi, quando l'interruttore / jumper è collegato, i pin saranno comunque collegati al resto del circuito.
Eeze

0

Sfortunatamente, non è possibile eseguire la programmazione dei circuiti per i propri AVR se i pin sono condivisi da altre funzioni, ad esempio l'illuminazione dei LED. Sebbene possa funzionare, non è garantito in quanto potrebbe causare un abbassamento troppo basso delle uscite del programmatore o del µC affinché funzioni.

Un'altra alternativa è ordinare i chip pre-programmati. So che Microchip offre questo per alcuni dei suoi chip, ma non sono sicuro di Atmel.


Oh bene, sospettavo questo. Devo solo continuare a fare le cose nel mio modo lento e goffo, immagino. (Oh, e nessuna possibilità di convincere Atmel a fare la pre-programmazione per me, sono solo un modesto hobbista. :-))
Tim

Spese microchip ~ $ 40 "tariffa di installazione". Ancora una volta, non sono sicuro di Atmel. Se stai ordinando nell'intervallo 10-100, probabilmente ne vale la pena.
Thomas O

3
Ho programmato molte schede con altri carichi sui pin SPI, in particolare i LED, senza alcun problema. Fai solo attenzione a non far guidare i segnali a qualcos'altro. Questo significa, ad esempio, se hai un dispositivo SPI collegato, dagli un resistore pull up o simile per tenerlo in reset o non selezionato.
Yann Vernier,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.