[RISOLTO] attiny85 non piu' programmabile

Ciao.
Fino a qualche tempo fa riuscivo a programmare Attiny85V usando Arduino come ISP.
Utilizzo un condensatore da 10uF sul reset di arduino UNO

Questa la guida che seguo per i collegamenti e i settaggi:
http://www.mlbelanger.com/arduino/attiny/attiny85-via-arduino-quickstart-guide/

scheda: attiny 25\45\85
processore: attiny85
clock: 8MHz
programmatore: Arduino as ISP

da qualche tempo ho ripreso a programmarlo ma, non so perchè, caricando lo sketch Blink, ottengo questo messaggio di errore:

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x03

quali possono essere le cause?

Metti almeno 100nF sull'alimentazione. Se non c'è un condensatore, non lo programmi! :slight_smile:

Lo sketch "ArduinoISP" lo hai caricato sull'UNO? Operazione da farsi senza il condensatore sul reset...

Ciao, Ale.

Edit: altra operazione da fare prima di caricare lo sketch nell'attiny (sopratutto se è nuovo) è scrivere il booloader, che serve a settare fuse ed altro nel chip.

Con l'ISP non serve il bootloader...
Per modificare i fuse uso Burn-O-Mat. Usando USBASP incontro solo il problema che per usarlo devo sostituire i driver con libusb tramite zadig e poi ripristinare i driver winusb per programmare con l'IDE.

Datman:
Con l'ISP non serve il bootloader...

Infatti NON carica alcun bootloader, il comando viene usato con gli ATtiny solo per programmare correttamente i FUSE da IDE e null'altro :wink:

Guglielmo

ilguargua:
Lo sketch "ArduinoISP" lo hai caricato sull'UNO? Operazione da farsi senza il condensatore sul reset...

Non l'ho mai fatto. Però onestamente questo step non lo ho mai trovato scritto da nessuna parte.
Farò comunque un tentativo.

ilguargua:
Edit: altra operazione da fare prima di caricare lo sketch nell'attiny (sopratutto se è nuovo) è scrivere il booloader, che serve a settare fuse ed altro nel chip.

Anche questa operazione non l'ho mai fatta, perchè mai stato necessario, ma ho letto che è facile sovrascrivere per errore il bootloader nell'attiny, quindi nel dubbio eseguirò anche questa oeprazione.

Forse ti conviene leggere la guida ufficiale di Arduino.cc : https://www.arduino.cc/en/Tutorial/ArduinoISP , vedrai che i passi che ti ho consigliato sono chiaramente indicati.

Ciao, Ale.

C'è una sola guida fatta veramente bene ed è quella del Prof. Menniti (utente del forum) ... segui quella passo per passo e vedrai che NON puoi sbagliare. La trovi QUI.

E' un po' vecchiotta e magari parla di versioni dell'IDE ormai superate, ma i concetti sono esattamente quelli e nulla è cambiato.

Guglielmo

Usando Arduino per programmare è anche facile programmare il programmatore, anziché l'85! Ne so qualcosa... :slight_smile: Acquista per pochi euro un USBASP, con l'adattatore da 10 a 6 pin e, se vuoi, anche il guscio di plastica, utile sia come rinforzo che per non rischiare di danneggiarlo con fili o oggetti metallici nelle vicinanze.

Datman:
... Acquista per pochi euro un USBASP, con l'adattatore da 10 a 6 pin ...

Concordo al 100% ...
... NON ho mai capito questa idea di usare "una scheda di sviluppo" come pseudo-programmatore per risparmiare una manciata di EURO (... perché, ormai, anche per un buon programmatore, di una maciata di EURO parliamo) ed usare un "accrocchio" ... mah ... ::slight_smile:

Guglielmo

Io mi trovo meglio con il mio mini-shield autocostruito :

Va bene con i tiny 84/85, e per ora non ho ancora avuto l'esigenza di usare altro.

Ciao, Ale.

Scusate non ho capito.
Che tentativo devo fare per risolvere il problema e programmare i miei Attiny?

Compro un USBASP?
Poi, devo scrivere il bootloader sull'attiny prima di caricare il mio sketch?

Io uso sempre USB-ASP, anche per gli atmega328p che monto su mille fori, e Burn-O-Mat, quando necessario, per modificare i fuse. E' molto semplice da usare. Nell'usare Burn-O-Mat incontro solo il problema... ... ... (leggi sopra).

squizzy91:
Scusate non ho capito.
Che tentativo devo fare per risolvere il problema e programmare i miei ATtiny ...

Hai letto il mio post #7? ? ?

Guglielmo

gpb01:
Hai letto il mio post #7? ? ?

Guglielmo

Ciao Guglielmo, si.
Grazie per la risorsa.

Ho letto tutto il manuale, però per un principiante risulta un pò dispersivo, potresti per favore dirmi il capitolo esatto corretto da seguire?

Grazie mille,
ciao.

Non c'è UN capitolo esatto da seguire per gli ATtiny85 ...
... occorre studiare bene il manuale, capire quale è la logica:

Arduino UNO si comporta come un programmatore, ATtiny85 diventa il Arduino target; identificare i pin di Arduino UNO che sono usati, il 10 per dare il segnale di "reset" al target, il 11-MOSI, 12-MISO, 13-SCK agli equivalenti del target più Vcc e GND; caricare il programma Arduino ISP su Arduino UNO; selezionare poi come programmatore "Arduino as ISP"; selezionare come scheda che si vuole programmare il ATtiny85 e quindi fare una volta ti caricamento del "bootloader" (... che, in verità, imposta solo i FUSE) e quindi procedere con il caricamento del programma.

Ovviamente DEVE essere installato il core per ATtiny85 e quindi occorrerà aver predefinito tra i parametri, nelle board supportare dal "Board manager", la riga:

http://drazzy.com/package_drazzy.com_index.json

Guglielmo

Ciao Guglielmo,

la procedura e la logica mi sono chiare.
A breve riprovo.

Nel frattempo, ho comprato un programmatore AVR con USB.
(Avevo creato una shield per usare Arduino come AVR sugli attiny ma, come dicevo a inizio post, non funziona più)

Due domande:

  1. posso programmare l'attiny quando esso è già inserito in un circuito\board? oppure devo sempre estrarlo, programmarlo a parlo, e reinserirlo nel circuito?

  2. che differenza c'è tra un programmatore AVR USB e il convertitore serial TTL - USB che uso per programmare gli Arduino Pro mini? I Pro mini hanno un programmatore on-board?

  • Quasi sempre è possibile programmare via icsp (In Circuit Serial Periferal o In Circuit Serial Programming) con il chip inserito nel circuito definitivo. Se non è fattibile dipende da cosa è collegato ai pin MISO, MOSI e SCK e per cosa sono impiegati nel circuito, in tal caso servono dei jumper per isolare i pin con il resto dei circuiti. Al posto dei jumper si possono creare soluzioni circuitali ma la cosa va valutata caso per caso.

  • Tramite il convertitore USB to serial non è possibile programmare nulla, quello che accade invece è che un programma detto bootloader è stato scritto nella flash del chip e questo programma viene eseguito sempre dopo il reset hardware. Mentre è in esecuzione il bootloader monitora il pin rx della seriale dove si possono presentare dei dati (seguendo un protocollo STK500), se questi sono compatibili con il protocollo allora effettivamente si sta dialogando con il bootloader. Seguendo sempre il protocollo è possibile chiedere al bootloader di eseguire delle operazioni, una di queste è appunto la richiesta di scrivere in flash (user program) i singoli byte ricevuti dal pin rx.
    Quindi è il bootloader che scrive il programma in flash, ma esso offre altri servizi. Certamente
    non può essere paragonato ad un programmatore dedicato il quale offre molti più servizi.

Rimuovendo il bootloader l'unico modo "pratico" per scrivere il programma in flash è di usare i pin icsp e un programmatore dedicato. Inoltre lo spazio di memoria flash è disponibile interamente per il programma utente che può crescere di dimensione fino ad occupare tutto lo spazio a disposizione.

Ciao.

Devi fare attenzione a ciò che colleghi a quei pin.

Di solito non ho problemi con i LED e l'LCD (328p), anche se mi è capitato di fallire qualche programmazione perché il display veniva aggiornato nel momento in cui il programmatore cominciava a inviare dati. È utile anche per questo, quindi, che il display non venga aggiornato continuamente, ma solo quando serve o una volta (o due, se c'è ragione) al secondo.

Con il mio "microGeiger", in cui un 85 serve per controllare lo stato della batteria all'accensione, generare gli impulso per il cicalino attivo e i bip per la cuffia, provando i vari aggiustamenti del programma, ogni tanto falliva una programmazione e mi è capitato addirittura di bloccarlo perché durante la programmazione arrivava qualche chiusura a massa da parte del transistor pilotato dal tubo Geiger (che rileva anche la piccola radioattività naturale di fondo: un impulso ogni 1~4s). Ho risolto il problema aggiungendo un transistor che blocca gli impulsi quando sono presenti i +5V provenienti dal programmatore.

>squizzy91: In ogni caso, se ne hai la possibilità, togli il ATtiny85 dalla scheda e mettilo su una schedia fatta solo per programmarlo, così eviti qualsiasi problema e inutili complicazioni. Se invece devi fare una scheda su cui è saldato e non rimovibile, prevedi o dei jumper o dei dip-switch per isolare i pin durante la programmazione, così, indipendentemente da ciò che ci hai connesso, stai tranquillo. :slight_smile:

Io mi sono fatto una banale schedina come questa, su mille fori, per ATmega328P e ATtiny85 che uso con un vecchio AVRISP MKII, mentre ho fatto una schedina con ZIF che ho collegato al AVR Dragon per altre MCU (... nella foto è predisposta per ATtiny84):

-
Guglielmo