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.
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.
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.
Usando Arduino per programmare è anche facile programmare il programmatore, anziché l'85! Ne so qualcosa... 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 ... :
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).
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:
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:
posso programmare l'attiny quando esso è già inserito in un circuito\board? oppure devo sempre estrarlo, programmarlo a parlo, e reinserirlo nel circuito?
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.
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.
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):