Giocando con l'Attiny85

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

Tutte le modifiche che devi fare e gli sketch da usare sono a pagina 2 di questo thread. Cos'è che non ti è chiaro?

Non avendo ancora un'attiny fra le mani mi sembra d'aver capito quasi tutto, ma anche per i posteri penso possa essere utile avere tutto in una pagina :wink:

Beh, sì. questo è vero.

Sto avendo problemi con l'I2C, o per meglio dire con l'USI/TWI (dato che l'I2C sull'Attiny è emulato tramite USI). Uso la libreria TinyWireM.

In pratica non riesco a dialogare con un chip Eeprom I2C (24LC512) collegato all'Attiny85. La memoria funziona perché se la governo con l'Arduino riesco a scriverci ed a leggerci... ma con l'Attiny no.
Curiosamente ho notato che se per caso quando interrogo la Eeprom dall'Arduino c'è anche l'Attiny sul bus I2C, l'Arduino non riesce ad accedere alla memoria.

Qualcuno ha effettuato delle prove con una Eeprom?

Mumble mumble... pare che il problema derivi dal fatto che la libreria è stata sviluppata per operare col clock standard degli Attiny, ovvero 1 MHz, che è poi anche la frequenza massima del bus I2C. Si diceva di adattare la velocità della libreria a quella del micro (io ho impostato l'Attiny a 8 MHz) però forse così va fuori specifiche perché non fa rientrare il segnale di clock inviato su SCL nelle specifiche del bus I2C.

Ormai è tardi, domani investigherò se a 1 MHz di clock del chip funziona.

YES YES YES!!!!
Sono un grande... scusate la megalomania XD XD XD XD XD

Lavorare con questo micro è veramente... DURO!
Tutto ciò che si trova online è documentato veramente male e va poi riadattato completamente. Stamattina sono riuscito a far funzionare l'I2C con un chip EEPROM 24LC512 dopo essermi sbattutto tutto ieri a capire perché le librerie non funzionavano. Grazie (!) alla scarsa documentazione delle stesse, andavano adattati tutti i tempi delle stesse perché scritte per lavorare a frequenze di 1 MHz: peccato che per lavorare a 8 MHz bisognasse toccare anche parametri che erano indicati solo nei commenti dei file .h e .cpp e non nella pagina del playground.

Mi sa che dovrò scrivere una pagina sul playground, prima che tutte le "scoperte" che ho fatto vadano perse.

leo72:
YES YES YES!!!!
Sono un grande... scusate la megalomania XD XD XD XD XD

Lavorare con questo micro è veramente... DURO!
Tutto ciò che si trova online è documentato veramente male e va poi riadattato completamente. Stamattina sono riuscito a far funzionare l'I2C con un chip EEPROM 24LC512 dopo essermi sbattutto tutto ieri a capire perché le librerie non funzionavano. Grazie (!) alla scarsa documentazione delle stesse, andavano adattati tutti i tempi delle stesse perché scritte per lavorare a frequenze di 1 MHz: peccato che per lavorare a 8 MHz bisognasse toccare anche parametri che erano indicati solo nei commenti dei file .h e .cpp e non nella pagina del playground.

Mi sa che dovrò scrivere una pagina sul playground, prima che tutte le "scoperte" che ho fatto vadano perse.

...è facile esaltarsi, ma QUANDO CI VUOLE, CI VUOLE!! OTTIMO!!

..che rabbia, lo sto ancora aspettando il tiny... speriamo che oggi arrivi!

decisamente è meglio che tu scriva!

In allegato trovate la guida all'uso dell'ATtiny85 con l'IDE di Arduino, compresi gli schemi di collegamento, le modifiche alle librerie NewSoftSerial e TinyWireM nonché esempi di codice per provare i circuiti.

Guida_ATtiny85.pdf (501 KB)

Ben fatto, complimenti, rende onore alle tue fatiche!! Non pensi di metterlo sul playground??

Sarebbe stato bello metterlo direttamente nel playground, non solo come link al documento.

Altra cosetta forse utile, perchè non metti due righe su come collegare l'ATtiny ad un ATmega328 ad esempio? Potrebbero essere utili applicazioni dove entrambi i micro vengono utilizzati parallelamente.

Ho ordinato gli ATTiny 85 non vedo l'ora di usarli :slight_smile:

leo72:
In allegato trovate la guida all'uso dell'ATtiny85 con l'IDE di Arduino, compresi gli schemi di collegamento, le modifiche alle librerie NewSoftSerial e TinyWireM nonché esempi di codice per provare i circuiti.

Eccomi qui! Oggi ho fatto prove al volo, senza approfondire, te le elenco e ti pongo alcune domande.
1a prova: carico il blink classico (senza bootloader, tecnica ISP) sostituendo 13 con 2 e funziona tutto
2a prova: carico lo sleep test che ho preparato per l'ATmega, e funziona ma, primo problema, attiny consuma più di atmega, sono sempre consumi eccellenti, ma è strano che sia cosi. Domande:
-Il chip caricato così lavora sicuro a 1MHz come tu affermi?
-Le librerie di atmega sono 100% compatibili con quelle di attiny?
3a prova: carico il mio sketch per gestire il sensore tapparelle (motivo di base per cui ho comprato questi chip) ma a prima prova non funziona; o meglio, il circuito va in sleep quando deve andarci ma mi ignora il sensore, che è previsto sia collegato a INT0 per svegliare il chip, ho usato il pin PB2(7) del chip, è sbagliato? Inoltre ho usato il pin1 come OUTPUT per accendere un led ogni qualvolta il pin 7 è high, ma non mi funziona.
Domani farò prove più consistenti, ma se tu potessi darmi qualche altro elemento, anche generico su questi chip, me lo troverei utile. grazie.

Quello che so l'ho scritto tutto in quella guida.
Per rispondere nello specifico alle tue domande:
tutti i chip Atmel escono di fabbrica per lavorare con l'oscillatore interno e col divisore x8 per cui ad 1 MHz. Gli Attiny non fanno differenza. Se hai fatto tutte le modifiche che ho descritto nella mia guida, però, tu hai un chip che lavora a 8 MHz. Forse il consumo maggiore lo devi a questo.
Tornando al discorso dello sleep, gli Attiny non supportano tutte le modalità degli Atmega, va visto cosa hai usato tu. Inoltre io (perché non mi è mai servito) non ho ancora mai "giocato" con lo standby di questi micro per cui non so dirti a priori se qualcosa di diverso accade all'interno del chip.

Infine, l'IDE: non è compatibile al 100% con gli Attiny, per i limiti hardware di questi chip. Quindi, a parte modificare i file delle librerie che ti servono, se vuoi una maggior compatibilità puoi provare l'Arduino-Tiny.
http://code.google.com/p/arduino-tiny/
Sono mod del core scritti per rendere l'IDE compatibile con i chip Attiny tipo 2313, 45/85 ecc..

Grazie Leo, in realtà a questo punto una sola risposta mi chiarirebbe ogni problema:
io ho usato il file boards.txt che tu hai postato, selezionando attiny85 e ArduinoISP; in quel file l'attiny è impostato per lavorare a 8MHz?
In caso positivo puoi dirmi quali sono i fuses originali per attivare il divisore x8?
Se sta lavorando a 8MHz probabilmente si spiega tutto, oltre al consumo anche il non funzionamento del software; pomeriggio spero di poter fare un po' di prove intense.
Ciao.

Vado a memoria (sono a lavoro): dovresti mettere il fuse basso da $E2 a $62. In questo modo attivi il divisore ed il micro va a 1 MHz.

ok grazie, ci sentiamo nel pomeriggio/sera.

Ricordati anche di mettere il giusto valore al clock (1000000L)

Ho fatto un po' di altre prove, per il momento non tocco il clock, quello si sistema dopo.
La situazione per ora è questa:
se mando lo sketch di prova ler lo sleep funziona e il consumo scende a valori accettabili (salvo frequenza)
se mando il mio code senza la sezione sleep funziona
se mando il code completo di sleep (che funziona col 328p) non va
Ho capito che il problema è nella gestione degli interrupt
In base alla pinatura dell'attiny mi trovo pin INTx e pin PCINTx, a me serve svegliare il micro con un segnale sull'interrupt 0, quale devo usare dei due: il pin 7 (INT0) o il 5 (PCINT0)? Ho provato entrambi, ma almeno per dopo mi concentro su quello giusto.