Giocando con l'Attiny85

leo72:

DevonMiles: Grazie Leo!

Prego ma... funzionano? :sweat_smile:

Aggiorno la situazione e confermo che con lfuse:0xff, hfuse:0xd7, efuse:0xff funziona tutto. Mi sono un attimo inceppato poiché prima ho scritto i fuse e poi ho provato a scrivere il programma dentro al tiny senza averci messo il quarzo per farlo girare. Ovviamente non riuscivo ad uploadare lo sketch e pensavo di aver già bruciato 2 Attiny85! :). Non ho molto approfondito la programmazione ISP..pensavo fosse Arduino a dare clock, data, etc..

leo72:

menniti: Leo, ma queste librerie non hanno una collocazione

In che senso? Non capisco...

scusami, mancava il "?" -->ma queste librerie non hanno una collocazione? (riferendomi al sito della frase successiva)

Ma al sito del core Tiny non ho accesso.

insomma da qualche parte dove sia sempre scaricabile, anche su tuo sito, cos'hai fatto per la lib RTC?

erano un po' di giorni che non venivo a fare un giro sul forum :) ho appena visto la reply #377 di Leo, ma non ho capito... hai risolto il roblema e funziona così? adesso non posso provare ma magari nei prossimi giorni faccio qualche altro test ;)

@Mike: la libreria ha una sua collocazione. Quando dico "1) aprite il file NewSoftSerial.cpp della NewSoftSerial con un editor di testo" do per scontato che la si abbia già scaricata ed installata sul proprio computer. ;) Cmq sto provvedendo ad una revisione della mia guida perché ormai è datata (ha 8 mesi) e di info aggiunte ce ne sono tante. Vedrò di far eun mega pacchetto in cui infilarci dentro anche tutte le lib modificate.

@ER: "sulla carta" il problema è risolto. Con dei test fatti così, velocemente, il codice non si pianta più. Resta da verificare l'effettivo funzionamento della lib, cioè se oltre a non bloccarsi riceve anche :sweat_smile: Ma non so quando posso provarla, sono un po' in crisi col tempo, in questi giorni

leo72: @Mike: la libreria ha una sua collocazione. Quando dico "1) aprite il file NewSoftSerial.cpp della NewSoftSerial con un editor di testo" do per scontato che la si abbia già scaricata ed installata sul proprio computer. ;) Cmq sto provvedendo ad una revisione della mia guida perché ormai è datata (ha 8 mesi) e di info aggiunte ce ne sono tante. Vedrò di far eun mega pacchetto in cui infilarci dentro anche tutte le lib modificate.

Lo so Leo, però tu l'hai modificata e testata, perché far fare a tutti la tua setssa manovra (scarica, apri, modifica, salva) col rischio di fare qualche casino), quando a te basta linkarla da qualche parte e permette a tutti con un clic di averla bell'e pronta? Sai come la penso in merito; ottima l'idea di aggiornare la Guida ;)

Difatti andrà tutto nel megapacchetto.

ok quando ho un po' di tempo provo ;) , magari provando a non fare errori... :sweat_smile: grazie! ;)

Salve ragazzi scusate se vi tedio con questa richiesta, ma ho iniziato da qualche giorno a giocare con i tiny85,ho letto buona parte dei messaggi sul forum e seguito le guide su gioblu (grazie leo!) oggi mi e' arrivato finalmente il tiny85 ed ho tentato di farlo comunicare con Arduino uno usato come programmatore ISP, credo di essere riuscito a caricare il bootloader, ma quando provo a caricare uno sketch (il semplicissimo blinker col pin0) mi rende il seguente errore;

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x14

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x01 avrdude: stk500_initialize(): (a) protocol error, expect=0x14, resp=0x10 avrdude: initialization failed, rc=-1 Double check connections and try again, or use -F to override this check.

avrdude: stk500_disable(): unknown response=0x12

dove sbaglio?? Valerio

Sui Tiny non puoi aver caricato un bootloader semplicemente perché quelli allegati al core Tiny sono "finti" bootloader. Altro non sono che file vuoti, che servirebbero (uso il condizionale) per poter programmare i fuse usando l'IDE. A me personalmente la cosa non è mai riuscita, per cui ho deciso di usare sempre avrdude da terminale, molto più semplice e veloce.

Detto questo, l'errore che ricevi può essere dovuto a errori di connessioni: ricontrolla i collegamenti.

Che bootloader avevi cercato di caricare?

Buon giorno Leo e grazie per la risposta.
Mi sono espresso male, ho messo in atto la procedura descritta sui siti citati (http://hlt.media.mit.edu/?p=1695 http://www.gioblu.com/tutorials/programmazione/214-guida-alluso-dellattiny85 ) , per settare il tiny ad 8 mhz, in seguito avrei voluto procedere al caricamento di uno sketch di prove (quello consigliato da te nel sito http://www.gioblu.com/tutorials/programmazione/214-guida-alluso-dellattiny85 ), ma mi sono piantato.
In pratica, collegando il tiny ad arduino come isp, sono riuscito ad avere in risposta ok (a parte l’errore che hai segnalato anche tu di cui non tenere nota) dopo la procedura di “burn bootloader”. dopodiche’, tolto il condensatore, avrei dovuto ottenere un tiny pronto per l’ upload di un semplice sketch di prova (io ho anche preparato un circuitino su multiforo che ospita i tre led previsti nel tuo circuito), ma ottengo soltanto quell’errore.Secondo te come mi devo comportare? (per controllare ho anche collegato il tiny direttamente su una breadboard per evitare eventuali falsi contatti/errori di circuito

DSCF1152.jpg

DSCF1157.jpg

Mi parli di "togliere il condensatore". Quindi hai usato il condensatore infilato nei pin dell'Arduino per disabilitare l'autoreset della scheda, giusto? Ma in questo caso devi lasciarlo anche per poter programmare i Tiny usando sempre la tecnica ISP.

Voglio tornare un attimo sulla questione del bootloader. Ripeto, non devi mettere un bootloader perché semplicemente l'operazione non va a buon fine. Tant'è che nella mia guida sul sito di Gioblu non ne ho parlato proprio perché non funziona.

Quindi, ricapitoliamo: 1) ricarica lo sketch ArduinoISP sul tuo Arduino 2) metti il condensatore anti-autoreset 3) collega il Tiny 4) imposta il clock interno del Tiny usando direttamente avrdude da terminale come scritto nella mia guida 5) carica lo sketch del lampeggio dei 3 led 6) invialo al micro

Tutto questo senza togliere, a partire dal punto 2), il condensatore anti-autoreset dall'Arduino. E vediamo che errori ricevi.

Ok Leo gentilissimo, adesso devo uscire, nel primo pomeriggio ESEGUO! grazie a dopo

Sto pensando di comprarmi un attiny85, sembra carino. Non ho letto tutte le 25 pagine di discussione ma ciò che mi preme capire se è compatibile con la ide arduino (caricherei, poi, lo sketch con USBasp o USBtinyISP) o bisogna fare qualcosa modifica al suo interno. C'è bisogno del bootloader per caso?

Grazie

Devi scaricarti il core Tiny da inserire nell'IDE per poter programamre i Tiny85 e Tiny84 tramite l'Arduino. Non serve bootloader.

http://www.gioblu.com/tutorials/programmazione/214-guida-alluso-dellattiny85

i tiny 85 e sopratutto 84 sono una grande ed economica alternativa per piccoli progetti, tra l'altro il loro uso con arduinoISP è veramente molto semplice, anche io ho seguito la guida su gioblu per integrare i core nell'ide di arduino, l'unica cosa a cui bisogna stare attenti è la lista di funzioni compatibili con i tiny:

pinMode()

digitalWrite()

digitalRead()

analogRead()

analogWrite()

shiftOut()

pulseIn()

millis()

micros()

delay()

delayMicroseconds()

SoftwareSerial

altre funzioni sono disponibili con librerie esterne come softwareservo ecc.

Le funzioni sono limitate perché limitato è il core (parlo del core di silicio, non del core software) dei Tiny. Ad esempio, non avendo una seriale in hardware non hanno la gestione della comunicazione seriale con la funzione Serial. ecc…

Aggiorniamo il primo post in modo tale da mettere i punti salienti dell'attiny85? grazie XD

niente da fare, non conosco avrdude e non riesco a fargli digerire il file per ottenere i 8mhz… mi restituisce questo:
localhost:tools valerio$ ./avrdude -P /dev/cu.usbmodem26211 -C ./avrdude.conf -U lfuse:w:0xe2:m -p t85 -c stk500v1 -b 19200
-bash: ./avrdude: No such file or directory

se chiamo avrdude il programma risponde :

localhost:tools valerio$ avrdude
Usage: avrdude [options]
Options:

  • -p Required. Specify AVR device.*
  • -b Override RS-232 baud rate.*
  • -B * ecc…

dove sbaglio??
ho provato a mandare la stringa dei comandi nella finestra “serial monitor” del IDE di Arduino e mi risponde cosi:
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: stk500_recv(): programmer is not responding

consigli??
grazie valerio

I consigli sono quelli della mia guida ;) Devi aprire un terminale all'interno della cartella che contiene avrdude distribuito con l'IDE di Arduino, nel mio caso /home/leo/Documenti/Arduino/hardware/tools

Lì trovi sia avrdude che avrdude.conf, che è il file dei parametri dei vari micro che avrdude usa per "dialogare" con il programmatore. Inoltre sbagli porta: /dev/cu.usbmodem26211 è la porta a cui hai connesso l'Arduino? Di solito è qualcosa tipo /dev/ttyACM0 per l'Arduino UNO e /dev/ttyUSB0 per l'Arduino 2009. Quindi, ricapitoliamo:

1) fai i collegamenti e collega l'Arduino 2) spostati nella suddetta cartella 3) aprici un terminale 4) dai:

./avrdude -P /dev/ttyACM0 -C ./avrdude.conf -U lfuse:w:0xe2:m -p t85 -c stk500v1 -b 19200

Controlla (magari aprendo l'IDE) che la porta a cui è collegato l'Arduino sia giusta

Devi flashare i fuse correttamente. Se non ci riesci, posta l'errore.

Grazie ancora Leo per la tua pazienza, credo di aver capito … il problema e’ che io nella cartella che dici tu, non ho nulla… il programma avr non c’e’.
Dove lo trovo? ho istallato per l’ennesima volta l’IDE di Arduino prelevata direttamente in dmg dal sito ufficiale (questo!) ma i file che servono dove li trovo?
Nella cartella che sta in documenti e che ho associato alla IDE dal menu preferenze, ci sono sempre e solo i vari file dei miei codici, ma dentro tools non ho nulla.
Per chiarezza posto la foto della cartella.

Per la seriale, invece, si chiama proprio cosi’ perche’ Arduino e’ collegato attraverso una usb di un hd esterno.

problema1.jpg