Home
Accesso / Registrazione
 di 

programmare più microcontrollori

3 risposte [Ultimo post]
ritratto di AndreaS
Offline
Ultima visita:
3 anni 3 settimane fa
Utente dal: 17/06/2011
Messaggi: 1

Salve,

Si possono programmare più microcontrollori allo stesso tempo? Volevo fare una scheda con più zoccoli DIP40 e mettere 20 microcontrollori Atmega32. Vorrei programmare tutti questi uC allo stesso tempo e non so se è possibile.

ritratto di electropower
Offline
Titolo: User++
Utente++
Ultima visita:
30 settimane 5 giorni fa
Utente dal: 17/11/2010
Messaggi: 64
Ciao AndreaS, inizialmente,

Ciao AndreaS, inizialmente, leggendo la tua richiesta, mi ero quasi convinto che quello che chiedevi fosse impossibile da realizzare, almeno in maniera semplice. Un programmatore multiplo per programmare in parallelo più micro può risultare utile se si necessita di organizzare una “catena di montaggio” per la produzione di più pezzi dello stesso circuito con lo stesso microcontrollore. Pensavo fosse impossibile perché credevo che l’algoritmo di programmazione di questi microcontrollori (Atmega32) richiedesse l’invio dei dati dalla micro verso l’interfaccia come conferma dell’avvenuta scrittura o del riconoscimento di un dato comando (una sorta di segnale di Ack, praticamente) e invece mi sono reso conto che in almeno una delle possibili modalità di programmazione, l’algoritmo non prevede il ritorno d una risposta da parte del micro. Il problema dell’ACK sta nel fatto che se metti in parallelo 20 micro, come fa il software di programmazione a gestire le collisioni tra tutte le risposte? E soprattutto, come si fa a capire se effettivamente tutti i micro sono stati programmati / comandati correttamente?
Guardando al datasheet, in parte mi sono dovuto ricredere (dico in parte perché è probabile che qualcosa possa essermi sfuggito) sull’impossibilità di parallilizzare le programmazioni e ti spiego anche il perché.
Prendo come riferimento il datasheet al link http://www.google.it/url?sa=t&source=web&cd=1&sqi=2&ved=0CBkQFjAA&url=http%3A%2F%2Fwww.atm... .
Da pagina 256 vengono spiegate le possibili modalità di programmazione e sono essenzialmente 3: programmazione parallela, programmazione seriale via SPI e la programmazione JTAG. Di queste 3, per la programmazione della Flash, nella prima modalità non è previsto un riscontro da parte del microcontrollore, c’è solo il pin di RDY/BSY che va alto quando il micro è pronto a ricevere un nuovo comando. Se non si abilita la verifica del micro, diciamo che non ci dovrebbero essere particolari problemi a parallelizzare le programmazioni. Per quanto riguarda il bit RDY/BSy dei 20 micro, se ne può fare facilmente l’OR logico (anche tramite rete composta da 20 diodi e un resistenza di pull-down appositamente dimensionata) restituendo al programmatore e quindi al software che gestisce l’algoritmo di programmazione un 1 logico solo quando tutti i micro sono pronti a ricevere un nuovo comando. Attenzione però che il bus deve essere bufferizzato, ad esempio con dei buffer della serie 74HC244-245 o simili, uno di questi per ogni microcontrollore in modo da non dover richiedere troppa corrente all’interfaccia di programmazione.
Per quanto riguarda le altre modalità di programmazione, su quelle non si può fare nulla perché sia la jtag che la SPI richiedono il ritorno di veri e propri codici di conferma del comando, quindi gestire le collisioni tra le verie risposte sarebbe più complesso.
La realizzazione del multiprogrammer che ti ho presentato sembra essere, dal punto di vista teorico, fattibile solo che devi controllare che non abbia sbagliato ad interpretare l’algoritmo di programmazione. Ovviamente perdi la verifica del micro, ma se volessi uno strumento che ti permette di compiere sia la lettura che la scrittura dei 20 micro, allora il discorso si complica notevolmente e dovresti anche scriverti il software che ti gestisce l’algoritmo. Diciamo che una versione più versatile del programmatore che ti permetterebbe di leggere e scrivere tutti i micro richiederebbe un mux-demux che in maniera sequenziale indirizza i singoli dispositivi una alla volta, però anche il software deve sincronizzarsi di conseguenza. Insomma, è talmente incasinata quest’ultima possibilità che forse è il motivo per cui non esistono prodotti finiti e già pronti che facciano al caso tuo.
Se deciderai di perseguire la prima strada che ti ho indicato, accertati che esista un software che supporti la programmazione parallela e che si possa disabilitare la verifica del micro. Dopo di che, guarda per bene il datasheet e accertati che tutti i miei discorsi siano giusti perché è probabile che possa essermi sfuggito qualcosa (almeno ti ho dato un input sulla modalità di programmazione su cui ti devi concentrare) e infine realizzati l’hardware partendo da un programmatore parallelo con l’accortezza di bufferizzare i bus che arrivano ai vari micro e di fare l’OR logico tra tutti i bit BSY/RDY.
Ultima cosa, controlla che nella modalità parallela, la programmazione dei fuses e della EEPROM non richiedano un ritorno di ACK.

ritratto di Mino_73
Offline
Titolo: User++
Utente++
Ultima visita:
4 settimane 6 giorni fa
Utente dal: 27/06/2008
Messaggi: 66
Note!!

Per avere un 1 logico quando tutti i micro sono pronti (cioè le loro uscite sono a 1) devi mettere in AND le uscite dei micro e non in OR!!!
La lettura dei dispositivi è da evitare quindi il Pin OEn è da mettere fisso a VCC.
In teoria potrebbe anche funzionare!! Fate attenzione ai livelli dei segnali da applicare. Nel datasheet, nella modalità di programmazione parallela, ho visto girare anche una 12 volt.

ritratto di electropower
Offline
Titolo: User++
Utente++
Ultima visita:
30 settimane 5 giorni fa
Utente dal: 17/11/2010
Messaggi: 64
Si hai perfettamente ragione

Si hai perfettamente ragione sull'utilizzo dell'AND...ho fatto confusione io in parte anche giustificata perchè in una versione di datasheet dell'Atmega32, successivamente rivista, c'era scritto che il pin RDY andava basso quando il micro era pronto a ricevere un nuovo comando, cosa che ho ritrovato riportata al contrario su un'errata corrige. quindi ho ragionato nel primo modo pensando però alla caratteristica reale del micro...ho fuso le due situazioni e soprattutto non ho riletto il commento per via del tempo mancante...mea culpa!

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ultimi Commenti