Pages: 1 ... 3 4 [5] 6 7 ... 41   Go Down
Author Topic: Giocando con l'Attiny85  (Read 43905 times)
0 Members and 1 Guest are viewing this topic.
Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 568
Posts: 12507
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 327
Posts: 22709
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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..
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 568
Posts: 12507
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 327
Posts: 22709
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 568
Posts: 12507
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ok grazie, ci sentiamo nel pomeriggio/sera.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 327
Posts: 22709
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 568
Posts: 12507
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 568
Posts: 12507
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho scaricato il reference linkato all'inizio di questo topic. Da quello che ho capito con le mie difficoltà con l'inglese, attiny85 ha un solo pin con interrupt esterno, INT0, che corrisponde al pin 7 del chip; ho letto poi che per attivarlo bisogna che vada su LOW, allora ho modificato la parte che gestisce lo sleep mode e sono riuscito a farlo funzionare, nel senso che il circuito va in sleep se il sensore è aperto e si sveglia se è chiuso.
Il mio problema però è che il sensore può trovarsi inizialmente in una condizione qualunque e deve attivare il circuito quando cambia stato.
L'atmega funziona con la modalità "change", attiny invece la ignora, eppure i due reference, nella sezione interrupt dicono la stessa cosa; sempre da quel che ho capito, ma andrebbe verificato, sembra che si possano impostare i due bit ISC01-ISC00 a 1-0 ed in tal modo "Any logical change on INT0 generates an interrupt request.", ma io non ho idea di cosa si debba fare, peraltro anche l'atmega dice la stessa cosa smiley-eek
Se non risolvo è un peccato, sono costretto a fare dei circuiti più grandi ed usare gli atmega per due soli pin che mi servono.
Spero che possiate aiutarmi a risolvere. Il capitolo degli interrupt è il 9.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 8
Posts: 2955
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Scusa per la risposta breve, ma credo che tu abbia bisognodi questo:
http://code.google.com/p/arduino-tiny/downloads/detail?name=PinChangeInterrupt-0001.zip
ciao
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 568
Posts: 12507
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma figurati BB! Grazie, scaricate, ma queste cosa sono, librerie?
Se le copio da qualche parte (dove?) risolvo il problema?
Dai, altre due-tre righe.... smiley-red
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 327
Posts: 22709
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

E' una libreria che fa parte dell'Arduino-Tiny e ti permette di gestire l'evento CHANGE in un interrupt
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 568
Posts: 12507
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Leo, ma come devo usarla? Ho provato a leggere i contenuti dei file  smiley-eek smiley-eek smiley-eek-blue Ho provato anche a copiare queste cartelle in hardware, ma poi compilando lo sketch mi dà un sacco di errori perché sembra che manchi altro.
« Last Edit: May 20, 2011, 04:23:04 pm by menniti » Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Napoli
Offline Offline
Full Member
***
Karma: 0
Posts: 171
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

--------------------------
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 327
Posts: 22709
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Leo, ma come devo usarla? Ho provato a leggere i contenuti dei file  smiley-eek smiley-eek smiley-eek-blue Ho provato anche a copiare queste cartelle in hardware, ma poi compilando lo sketch mi dà un sacco di errori perché sembra che manchi altro.
Quella lib la devi usare con l'Arduino-Tiny, che è un gruppo di librerie modificate da affiancare a quelle originali del core. Durante la compilazione devi selezionare poi il tipo di chip (Attiny85) altrimenti la compilazione viene eseguita per l'Atmega328, ed è poi logico che ti dia errori.

Quindi, ricapitolando:
1) scarichi l'Arduino-Tiny e lo copi nella cartella dell'IDE (non dovrebbe sovrascriverti nulla ma copiarti solo una nuova cartella in arduino-00xx/hardware)
2) scarichi i mod per usare il change sugli interrupt
3) scrivi lo sketch
4) scegli l'Attiny85 e compili
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 568
Posts: 12507
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour Leò, merci beaucoup! smiley-lol
Non sono in Lab quindi non ho modo di provare, dico quello che ho fatto:
Ho scaricato questa lib: arduino- tiny- 0022-0008. zip
Ho scaricato questo mod: PinChangelnterrupt-0001 .zip
La arduino-tiny contiene due cartelle tiny e tools che copierò in hardware (ho già verificato che la tools in effetti non mi sovrascrive nulla). L’altro file contiene 3 cartelle: PinChangeInterruptSimple, PinChangeInterrupt e Tiny Tuner (vuota, ma credo non c’entri con ciò che mi serve); non ho ben capito dove mettere queste cartelle. In “tiny” ci sono “bootloaders” e “cores”; in “tools” c’è “avr” con una serie di sottocartelle che alla fine portano ad un solo file “eeprom”.
Riguardo le boards invece sono a posto, quelle le avevo già inserite dal tuo file e l‘IDE le vede, tant’è che ho già programmato.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Pages: 1 ... 3 4 [5] 6 7 ... 41   Go Up
Jump to: