Giocando con l'Attiny85

Simpatico! Si potrebbe fare anche con l'ATmega, non ci sarebbe bisogno di abilitarlo, vero? Tanto mica uno ci fa uno stand alone definitivo, o sì? :open_mouth:

Non è che per caso hai un kit RF e riesci a provare se fungono sull' attiny?

Basta che sul ATTiny funzioni la seriale, i moduli RF dovrebbero funzionare in automatico

Non ho un kit RF.
L'Attiny non ha il supporto USART (quindi seriale) via hardware però in teoria si potrebbe usare la NewSoftSerial: bastano 2 pin, non credo sia un grosso problema. Stasera provo ad interfacciare il micro con l'Uno.

siiiii facci sapere :slight_smile:

Uhm.. sto incontrando dei problemi. In fase di compilazione ricevo l'errore che la NewSoftSerial supporta solo micro a 8, 16 e 20 MHz.
L'Attiny lavora internamente a 8 MHz ma non credo che l'IDE lo sappia, nel senso che non è nata per lavorare con questo micro ed il mod usato è un po' una mezza forzatura. Probabilmente ci sono a giro in altri header delle configurazioni che non tengono conto di questa classe di integrati.

Vediamo se sbirciare in rete mi offre qualche spunto...

Per ora non ho risolto con la NewSoftSerial però la SoftwareSerial funziona: con essa caricata sull'Attiny riesco a trasmettere e leggere sulla seriale dell'Arduino.

Indagando un po' sembra che il problema del clock derivi dalle impostazioni presenti nel file boards.txt del mod per gli Attiny45/85, che segnala una frequenza interna dei micro di 1 MHz

Non so però se gli Attiny85-20 hanno il clock impostato a 8 MHz oppure no.

puoi spiegarmi come hai fatto ad usarlo via seriale??? mi stampa via seriale se faccio serial.print ??? se si cosa devo fare per farlo funzionare???

Sull'Attiny ho caricato uno sketch che usava SoftwareSerial ed ho abilitato 2 pin per RX/TX. Questi pin li ho collegati ai pin TX/RX della mia Arduino Uno su cui avevo caricato uno semplicissimo sketch che altro non faceva che aprire una seriale (normale), leggere il dato in arrivo e stamparlo sul terminale dell'IDE.

PS:
ho collegato il micro al mio programmatore USBtinyISP ed ho letto i fuse. Effettivamente sembra proprio che i chip escano di fabbrica per lavorare a 1 MHz, per lo meno stando alle impostazioni dei fuse, che abilitano la divisione per 8 del clock interno (che è a 8 MHz).
Quindi togliendo questo divisore riavrei la frequenza "canonica" di 8 MHz... proverò.

EDIT:
la programmazione pare andata a buon fine. Adesso il micro dovrebbe lavorare con l'oscillatore interno a pieno clock (8 MHz). Domani modificherò i file di descrizione del chip e riproverò ad usare la NewSoftSerial. Adesso è troppo tardi... notte :sleeping:

EDIT2:
rileggendo il datasheet ho la conferma che gli Attiny85 escono di fabbrica impostati a 1 MHz!

The device is shipped with CKSEL = “0010”, SUT = “10”, and CKDIV8 programmed. The default
clock source setting is therefore the Internal RC Oscillator running at 8 MHz with longest start-up
time and an initial system clock prescaling of 8, resulting in 1.0 MHz system clock. This default
setting ensures that all users can make their desired clock source setting using an In-System or
High-voltage Programmer.

Quindi chi acquista questo micro sappia che di fabbrica va.... lento!
Ed ora BUONANOTTE... :sleeping: :sleeping: :sleeping: :sleeping:

Non ci capisco più nulla.... ho settato i fuse affinché il micro andasse ad 8 MHz, ho modificato il file delle impostazioni della scheda affinché lo sketch fosse compilato per la CPU dell'Attiny con clock a 8 MHz.... e mi ritrovo lo sketch dei led lampeggianti che va LENTISSIMO, cose se il timer interno del micro fosse rallentato! Nel senso che se prima con un intervallo di flash di 500 ms andava tutto bene, adesso lo stesso valore da un intervallo di 4 secondi, ossia esattamente 500*8.... Ma se ho impostato il micro ad 8 MHz, com'è che sta andando a 1??? :stuck_out_tongue_closed_eyes:

leo72:
Non ci capisco più nulla.... ho settato i fuse affinché il micro andasse ad 8 MHz, ho modificato il file delle impostazioni della scheda affinché lo sketch fosse compilato per la CPU dell'Attiny con clock a 8 MHz.... e mi ritrovo lo sketch dei led lampeggianti che va LENTISSIMO, cose se il timer interno del micro fosse rallentato! Nel senso che se prima con un intervallo di flash di 500 ms andava tutto bene, adesso lo stesso valore da un intervallo di 4 secondi, ossia esattamente 500*8.... Ma se ho impostato il micro ad 8 MHz, com'è che sta andando a 1??? :stuck_out_tongue_closed_eyes:

Sicuro non l'hai portato ad 800 Hz :smiley: :smiley:

Ma quale bootloader usi? Mica potresti postare la parte relativa all'ATTiny del file boards.txt?

Non uso bootloaders.

Cmq credo di aver capito. Ho usato il [calcolatore di fuse ma ho sbagliato a spuntare i checkbox e credo di aver rimesso il divisore per 8 :blush:

Ora riprovo....

PS:
il file boards.txt è quello contenuto in ~/sketchbook/hardare/attiny45_85: ho modificato tutti i valori 1000000L in 8000000L.

EDIT:
Perfetto!!! Adesso va bene... che co@@@@ne che sono.. mi sa che è stata l'ora tarda di stanotte a farmi fare quell'errore :fearful:

leo72:
Non uso bootloaders.

Cmq credo di aver capito. Ho usato il [calcolatore di fuse ma ho sbagliato a spuntare i checkbox e credo di aver rimesso il divisore per 8 :blush:

Ora riprovo....

PS:
il file boards.txt è quello contenuto in ~/sketchbook/hardare/attiny45_85: ho modificato tutti i valori 1000000L in 8000000L.

EDIT:
Perfetto!!! Adesso va bene... che co@@@@ne che sono.. mi sa che è stata l'ora tarda di stanotte a farmi fare quell'errore :fearful:

ottimo!

Scusa la domanda stupida, per modificare il boards.txt devi avere il programmatore? :grin:

No, quel file lo modifichi tramite un editor di testo :stuck_out_tongue:
Contiene solo le direttive per il compilatore dello sketch.

Il programmatore serve per modificare i fuse, altrimenti sei costretto ad usare il micro a 1MHz.

AGGIORNAMENTO SU NEWSOFTSERIAL:
adesso compare un altro errore, relativo all'uso delle definizioni del timer. La librerie usa TIMSK0, ma lo "0" finale non serve perché l'Attiny ha solo 1 timer TIMSK, quindi dovrei smanettare dentro alla lib per modificare questo parametro.

AGGIORNAMENTO 2:
Questo chippettino mi sorprende sempre di più... adesso scopro che ha anche l'I2C...

leo72:
No, quel file lo modifichi tramite un editor di testo :stuck_out_tongue:
Contiene solo le direttive per il compilatore dello sketch.

Il programmatore serve per modificare i fuse, altrimenti sei costretto ad usare il micro a 1MHz.

AGGIORNAMENTO SU NEWSOFTSERIAL:
adesso compare un altro errore, relativo all'uso delle definizioni del timer. La librerie usa TIMSK0, ma lo "0" finale non serve perché l'Attiny ha solo 1 timer TIMSK, quindi dovrei smanettare dentro alla lib per modificare questo parametro.

AGGIORNAMENTO 2:
Questo chippettino mi sorprende sempre di più... adesso scopro che ha anche l'I2C...

...allora non ho capito bene cosa sia il fuse... meglio che studi un pò!

A pagina 61 trovi tutte le possibili funzioni dei pin. Hai letto da qua?

I fuse sono delle impostazioni di tutti i micro Atmel registrate tramite registri interni che normalmente non possono venir modificati con l'uso di una scheda Arduino per flashare il bootloader o lo sketch.
Per modificarli serve un programmatore vero e proprio e l'uso del software "avrdude", che permette tante cose, tra cui l'erase totale del chip, il caricamento di sketch compilati, e la lettura/programmazione di questi fuse.

Questi fuse controllano tante cose, tra cui ad esempio l'uso dell'oscillatore interno oppure di un quarzo esterno, il watchdog, ecc...

Sì quel documento ce l'ho ma non l'ho ancora letto tutto: sono 236 pagine :fearful:

Nuovo aggiornamento:
ho modificato la NewSoftSerial per poterla usare con l'Attiny85 muahahah ]:smiley:
Ottimo ottimo ottimo