Giocando con l'Attiny85

non ho capito che programmatore serve per cambiare il clock del processore.. dove posso trovarlo?? nn posso usare arduino come programmatore??

No, serve un programmatore esterno.
Io uso l'USBtinyISP di Adafruit ma va bene anche qualsiasi altro programmatore per Atmega.

Adesso sto giocando con l'I2C.... voglio vedere se riesco ad interfacciarmi ad un DS1307 e ad inviare l'ora all'Arduino tramite NewSoftSerial.... panico! 8)

(cmq questo progetto mi sa che lo terminerò stasera o stanotte... ora devo proprio scappare)

grande :slight_smile:

grande leo interessa anche a me il ds1307 con il tiny se hai sviluppi posta pure le soluzioni :smiley:

leo72:
Adesso sto giocando con l'I2C.... voglio vedere se riesco ad interfacciarmi ad un DS1307 e ad inviare l'ora all'Arduino tramite NewSoftSerial.... panico! 8)

(cmq questo progetto mi sa che lo terminerò stasera o stanotte... ora devo proprio scappare)

Grande! avere il tempo!!!

an_je:
Grande! avere il tempo!!!

Beh, oggi era il mio giorno libero e mandati via i bambini ho avuto l'intera mattinata per "spippolare" XD
Mica è sempre così, purtroppo :*

anche arduino con arduinoISP va bene

Uhm... sto incontrando alcune difficoltà. Intanto il supporto I2C non è integrato ma offerto tramite USI, che è una specie di bus seriale programmabile. Per gestirlo ho trovato una libreria TinyWire... però pare che questa non vada d'accordo con la NewSoftSerial... o forse con il DS1307 che ho io (che è montato su uno shield autocostruito a cui mi interfaccio).
In buona sostanza sulla seriale dell'Arduino non arriva nulla... e non so se è perché non legge dall'RTC oppure perché non riesce a trasmettere....

Devo indagare meglio. Peccato perché la libreria offre un esempio di interfaccia ad un DS1307 quindi teoricamente la cosa è fattibile, solo che non capisco cos'è che non va nel mio circuito. Boh... forse è l'ora tarda (come ieri notte).... magari dormendoci sopra mi viene qualche idea.. :stuck_out_tongue:

EDIT:
mi sa che è proprio la NewSoftSerial.... usa gli interrupt e forse l'alterazione di questi va a dar noia alla libreria TinyWire...

EDIT2:
è confermato... La NewSoftSerial e la TinyWire sono incompatibili. La TinyWire disabilita gli interrupt mentre la NewSoftSerial invece li usa.... è ovvio che non possano andar d'accordo ]:smiley:

Non puoi usare pin differenti?

No perché sono proprio le librerie incompatibili.
Nella TinyWire ho trovato la disattivazione degli interrupt mentre nella NewSoftSerial sono usati per leggere/spedire i dati senza bloccare l'esecuzione degli sketch.
Dal sorgente della TinyWire:

// Disable Interrupts.

Dalla pagina della NewSoftSerial:

Using interrupt-driven RX

Quindi insieme non possono andare d'accordo.

Non puoi fare in modo che quando usi una libreria li attivi e poi quando usi l'altra li disattivi??

ch'esso, leggi dall'RTC ogni 5 min? prima di leggere attivi quello che ti serve e poi lo disattivi... fantascienza?

Mi pare una soluzione troppo complicata.
Cmq, vista la limitazione di pin, usare sia l'I2C sia la seriale porta via 4 pin da un totale di 6 (diciamo 5+1, perché il pin di reset, sul datasheet lo dichiarano "weak pin", pin deboluccio, quindi non so fino a che punto sia consigliato usarlo), limitando quindi ciò che l'Attiny può fare.

Più che altro questi sono esperimenti cognitivi che mi aiutano a capire i limiti del micro. Che, cmq, reputo veramente ottimo: 8 KB di flash, un clock che volendo può arrivare a 20 MHz, possibilità di programmarlo al volo con 4 cavettini... ganzo! :smiley:

Ciao Leo!
Grande, hai trovato il modo di far funzionare sia la SoftwareSerial, sia la NewSoftSerial! Complimenti!

Però io ho un problema sulla SoftwareSerial, provando come indichi nel serial monitor mi appaiono numeri casuali, la prima volta 14, un a capo, e 140; provando ancora 0, a capo, 0 a capo, e 140..
Se poi provo ad usare un APC220 (modulo trasmissione onde radio) che funziona in seriale, all'altro capo ottengo simboli ripetitivi ma incomprensibili..
C'è qualcosa che non mi torna.. eppure dovrei aver fatto tutto come descritto..

Ti è capitato anche a te per caso? Può dipendere dalla tolleranza del +-10hz nella frequenza del Attiny, che manda fuori clock la seriale?

Essendo implementazioni software forse può dipendere da questo. Prova variando la velocità della connessione, metti un valore basso (4800), più facilmente gestibile via software.

Niente da fare.. salta sempre fuori:

224
0
0
224
0
0
..

Tra l'altro prima avevo sbagliato, non era 140, ma 224. Che poi è il decimale del carattere che mi esce fuori se lo invio tramite ACP220.
Boh.. farò un po' di prove cambiando caratteri e cambiando connessioni.
Riuscire a far funzionare la seriale darebbe al Attiny85 delle potenzialità enormi!.. spero di venirne a capo..

Grazie comunque!

Riproverò anch'io, domani.
Mi pare che una volta abbia dato problemi anche a me... non mi ricordo però se con la SoftwareSerial o con la NewSoftSerial

Mi sa che mi darò alla libreria I2C, che tra l'altro mi permette di usare alcuni modulini che ho, come il termometro/barometro ed il RTC, perchè non c'è verso che riesca a far funzionare la SoftwareSerial.. forse può essere dovuto alle saldature non perfette della board, boh.. quando avrò un momento caricherò lo sketch su un Attiny stand alone, senza board.

Se nel frattempo riesci a ricordarti che problema ti aveva dato a te e come lo hai risolto, e lo posti qui te ne sarò grato! :wink:

Ho riprovato con la NewSoftSerial.
Impostando la velocità a 9600 baud legge "quasi" sempre correttamente. Nel senso che ho messo su una breadboard 2 pulsantini collegati all'Attiny, che li legge ed invia all'Arduino "1" o "2" a seconda del pulsante. Ebbene, lo sketch sull'Arduino riceve generalmente 49 o 50 (gli ASCII rispettivamente di 1 e 2) anche se, sporadicamente, riceve 177... Boh, forse dipende dal debounce "da cavernicolo" che ho fatto, non so. Dovrei provare una trasmissione di dati su chip per altre verifiche ma ora non ho tempo.

Non è che riusciresti poi a fare un post sul PlayGround? perchè qui sinceramente non ci sto capendo un azzo.