Go Down

Topic: Giocando con l'Attiny85 (Read 51955 times) previous topic - next topic

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)

gbm

Community robotica / programmazione Arduino
www.gioblu.com

crono

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

an_je


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!!!

leo72


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

leo72

#36
Mar 30, 2011, 01:00 am Last Edit: Mar 30, 2011, 01:11 am by leo72 Reason: 1
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..  :P

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  ]:D

GianfrancoPa

Non puoi usare pin differenti?
Gianfranco

leo72

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:
Code: [Select]
// Disable Interrupts.

Dalla pagina della NewSoftSerial:
Code: [Select]
Using interrupt-driven RX

Quindi insieme non possono andare d'accordo.

GianfrancoPa

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?
Gianfranco

leo72

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!  :D

Saki_Kawa

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?

leo72

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

Saki_Kawa

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!

leo72

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

Go Up