Go Down

Topic: PROBLEMA PROGRAMMAZIONE ATTINY85 TRAMITE ISP (Read 191 times) previous topic - next topic

Moce993

Buongiorno,

premetto che è la prima volta che scrivo, anche se è da tempo che seguo il forum, perché non sono riuscito a trovare una risposta adeguata al mio quesito.

Sto realizzando un piccolo progetto tramite ATtiny85, il quale è montato su un pcb custom; questa scheda serve a comandare un motore DC 12V.
Le caratteristiche principali di questo circuito sono un potenziometro il quale andrà a variare il numero di giri del motore e un pulsante che se premuto andrà a mettere in pausa il motore per un tempo preimpostato.
Diciamo che a livello funzionale non ho riscontrato problemi, anzi funziona tutto secondo il progetto che avevo in mente.

Unica criticità riscontrata è stata nella fase di programmazione del micro.
Utilizzando l'interfaccia ISP e un Arduino uno come programmatore non c'è stato verso di programmare il micro, o meglio in rari casi ci sono riuscito ma è stata più fortuna che altro.
Quindi mi sono messo ad analizzare tutto il circuito e sono giunto alla seguente conclusione:
Avendo messo l'ingresso Analogico del potenziometro sul PIN ADC1 che è anche il PIN SCK, esso mi impedisce una corretta programmazione del micro.

Infatti spostando il potenziometro sul PIN ADC2 ho risolto il problema e non ho più avuto difficoltà nella programmazione.

Diciamo che a me andrebbe bene anche così per il mio progetto , però non mi accontento di questa soluzione e voglio capire perché accade questo ma soprattutto vorrei capire come fare ad ovviare a questo problema se volessi mantenere il potenziometro sul pin ADC1.

Ringrazio in anticipo per l'aiuto.

Allego foto dello schematico di cui parlo.


gpb01

#1
Jan 21, 2019, 03:01 pm Last Edit: Jan 21, 2019, 03:01 pm by gpb01
Durante la programmazione, i pin SPI coinvolti, debbono essere lasciati liberi, senza nulla collegato che vada, in qualche modo, ad alterare i segnali che transitano.

La soluzione è aggiungere dei piccoli ponticelli (Jumper pin):

... che permettono, durante la programmazione, di scollegare altre cose collegate e di ricollegarle dopo la programmazione.

Guglielmo
Search is Your friend ... or I am Your enemy !

Moce993

Grazie della rapida risposta.

Lasciare liberi i pin ISP coinvolti vale solo in caso utilizzi un Arduino come programmatore ?

Mi spiego meglio, avendo a disposizione un ATMEL-ICE avevo fatto alcune prove di programmazione con quello e Arduino IDE. Il risultato è stato sicuramente migliore, ovvero sono riuscito a programmare il micro mantenendo il potenziometro sul pin SDK, anche se devo dire che qualche volta mi dava lo stesso errore di scrittura che mi dava con l'Arduino as ISP.

P.S.
Ho notato che la difficoltà a scrivere sul micro si presenta solo su micro vergine, una volta programmato la prima volta anche se vado a mettere componenti sui pin ISP riesco a riprogrammare.
Da cosa può dipendere ?

gpb01

#3
Jan 21, 2019, 04:34 pm Last Edit: Jan 21, 2019, 04:47 pm by gpb01
Lasciare liberi i pin ISP coinvolti vale solo in caso utilizzi un Arduino come programmatore ?
No, è una buona norma da usare sempre ... e considera che con gli Atmel la programmazione ISP è piuttosto lenta, ma se vai su altre MCU, dove parliamo di frequenze di decine di MHz ... capisci bene che qualsiasi cosa introduca capacità parasite, induttanze, ecc. dia enormemente fastidio ai segnali di programmazione.

Ho notato che la difficoltà a scrivere sul micro si presenta solo su micro vergine, una volta programmato la prima volta anche se vado a mettere componenti sui pin ISP riesco a riprogrammare.
Strano, non dovrebbe esserci differenza ... non ho una spiegazione ... ::)

Guglielmo

P.S. Su Atmel le frequenze in gioco sono piuttosto basse, del ordine dei MHz, quindi, purché il segnale non venga troppo attenuato magari in alcuni casi va bene ed in altri no. In generale però prendi come abitudine, quando possibile, di prevedere una separazione dei pin con l'utilizzo dei suddetti jumper ... è una buona cosa che ti eliminerà problemi nella programmazione di varie MCU ;)
Search is Your friend ... or I am Your enemy !

Moce993

P.S. Su Atmel le frequenze in gioco sono piuttosto basse, del ordine dei MHz, quindi, purché il segnale non venga troppo attenuato magari in alcuni casi va bene ed in altri no. In generale però prendi come abitudine, quando possibile, di prevedere una separazione dei pin con l'utilizzo dei suddetti jumper ... è una buona cosa che ti eliminerà problemi nella programmazione di varie MCU ;)
Grazie mille della spiegazione e della rapidità.

Mi sorge un'ultima domanda, l'utilizzo dei jumpers va bene per un utilizzo homemade, ma penso che a livello di centinaia di miglia di pezzi sia problematico gestire la programmazione in questo modo.
Quindi ammesso che questo micro sia utilizzato a livello industriale, esistono altri metodi per gestire la programmazione ?

Correggetemi se sbaglio, l'unica interfaccia di programmazione supportata dal Tiny85 è l'ISP ?

gpb01

Mah ... per programmare devi comunque metterci le mani e se su quei pin hai messo cose che danno fastidio alla programmazione, c'è poco da fare ... jumper, microswitch, o quello che ti pare, ma se gli oggetti che hai collegato danno fastidio, in qualche modo li devi separare.

Oppure, sprechi della memoria (circa 1/2 KB), dedichi dei pin ad una seriale e carichi un bootloader così poi basta collegarsi alla porta e caricare il nuovo firmware :D

Guglielmo
Search is Your friend ... or I am Your enemy !

paulus1969

Oppure lo monti su uno zoccolo, li programmi prima anche con un semplice tinyUSBprogrammer e li infili negli zoccoli già programmati.

Moce993

Grazie delle risposte, rapide e soprattutto utili.

Nel frattempo mi è venuta anche questa idea:

- sui pin interessati dall'ISP e condivisi con altre parti del circuito che possono generare interferenze in fase di programmazione, andare ad aggiungere dei mosfet che se alimentati durante la fase di programmazione vanno a "staccare" le parti del circuito che possono recare disturbi alla programmazione.

Che ne dite come idea ? ci può stare o è concettualmente sbagliata ?  :)


gpb01

#8
Jan 26, 2019, 04:56 pm Last Edit: Jan 26, 2019, 04:56 pm by gpb01
... sui pin interessati dall'ISP e condivisi con altre parti del circuito che possono generare interferenze in fase di programmazione, andare ad aggiungere dei mosfet che se alimentati durante la fase di programmazione vanno a "staccare" le parti del circuito che possono recare disturbi alla programmazione ...
... è da studiare BENE, ma può essere un idea da applicare su quelle cose che maggiormente creano fastidi ::)

Guglielmo
Search is Your friend ... or I am Your enemy !

Go Up