Pages: 1 [2]   Go Down
Author Topic: Parere su sketch con temporizzazioni  (Read 1391 times)
0 Members and 1 Guest are viewing this topic.
Cagliari, Italy
Online Online
Tesla Member
***
Karma: 112
Posts: 7115
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Coll'oscillatore esterno può andare a 10 o 20 Mhz.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22798
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Coll'oscillatore esterno può andare a 10 o 20 Mhz.
Con l'oscillatore interno i micro Atmel vanno ad 1 MHz od 8 MHz. L'oscillatore interno è ad 8 MHz, si ottiene il valore di 1 MHz attivando il divisore /8 tramite un apposito fuse. Questo vale sia per i Tiny che per i Mega. Ad abbondanza, tutti i micro Atmel vergini escono di fabbrica settati ad 1 Mhz.
Logged


Torino
Offline Offline
God Member
*****
Karma: 3
Posts: 766
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ad esser sincero non saprei se metterlo e di che valore il quarzo.....Non ho bisogno di particolare velocità, mi interessa che funzioni la millis() per gestire i tempi dei relè,accendere 3 led di cui 2 di stato relè ed 1 che indica la presenza di alimentazione ,controllare due trimmer su due ingressi adc ed un pulsante in digitalRead.....So per certo che diminuendo il valore del quarzo diminuiscono le prestazioni del micro in termini di velocità e quindi di consumo,consumo che non mi preoccupa in questo caso, ma non so bene come funziona la cosa all'interno quindi davo sinceramente per scontato l'uso di in quarzo da 16MHz anche se credo che uno da 8 basti e avanzi per ciò che deve gestire...
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22798
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se imposti il micro ad 1 o 8 MHz non devi usare un quarzo esterno. Il chip integra un oscillatore per cui si genera internalmente il clock. Di lavorare ad un clock inferiore non devi preoccupartene, ci pensa il core ad adattare millis in modo che il calcolo sia regolato sul clock inferiore.
Logged


Torino
Offline Offline
God Member
*****
Karma: 3
Posts: 766
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Se imposti il micro ad 1 o 8 MHz non devi usare un quarzo esterno. Il chip integra un oscillatore per cui si genera internalmente il clock. Di lavorare ad un clock inferiore non devi preoccupartene, ci pensa il core ad adattare millis in modo che il calcolo sia regolato sul clock inferiore.
Ciao, quindi la diminuzione del valore del quarzo influisce solamente sulla velocità di esecuzione del programma ?
Se per esempio ad una data istruzione servono tre cicli di clock,la eseguirà sempre con tre cicli di clock ma essendo inferiore il quarzo il tempo di esecuzione sarà maggiore.....giusto,no?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22798
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sì, è giusto. Rallenti l'esecuzione a livello di codice macchina.
La maggior velocità può servire appunto in quei casi in cui ti serve rapidità ad esempio se devi leggere degli impulsi esterni.

Ma se fai un delay(100) saranno sempre 100 ms sia su un micro a 1 MHz sia su un micro a 16 MHz.
Logged


Torino
Offline Offline
God Member
*****
Karma: 3
Posts: 766
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Beh,credo quindi che se utilizzassi l'oscillatore interno non avrei nessun tipo di problemi per ciò che deve fare...Per quanto riguarda i fuse andranno poi gestiti in maniera differente in funzione dell'oscillazione interna che si desidera..mi pare che trovo qualcosa sulla guida di Michele,darò uno sguardo....Grazie
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22798
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I fuse per tutti i micro li puoi calcolare con questo ottimo tool online:
http://www.engbedded.com/fusecalc
Logged


Torino
Offline Offline
God Member
*****
Karma: 3
Posts: 766
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho guardato il link che mi hai dato e dopo un po di riflessioni non sono riuscito a capire i criteri da usare per selezionare i giusti fuse.
Ho esaminato la board.txt della guida di Michele (pag 61) quella che configura il micro con oscillatore interno ad 1MHz ed ha come low_fuse 0x62 , high_fuse 0xDF ed infine extended_fuse 0x07.
Per riuscire a comprendere quale dovesse essere la giusta configurazione ho inserito i valori corrispondenti all'interno delle caselle low e high e di conseguenza mi ha fatto vedere come risulta settato,senza riuscire però a modificare gli extended_fuse.
A questo punto ,oltre al rimorso che provo per il fatto di non aver continuato gli studi quando era il momento,mi sorgono dei dubbi  smiley-roll-blue
Inizio però da ciò che ho capito o almeno credo.....
-E' stato selezionato l'oscillatore interno ad 8 MHz e poi il divisore per 8 che dà come risultato 1MHz;
-Non si è voluto il segnale di clock in uscita al pin 14 (portB0);
-Poi invece non mi è chiara la scelta di 256 words,sulla base di cosa va scelto questo spazio ? ;
-La eeprom non viene cancellata con il chip erase in quanto credo che il bootloader risieda proprio lì ;
-Non è stato disabilitato il pin di reset (so che può essere trasformato in 1/0 perdendo però l'autoreset);
-E stata abilitata la ISP ;
Detto questo ho notato anche che i bit che ne risultano sono negati ovvero la casella spuntata corrisponde ad uno 0 logico...

Ciò che non ho capito invece riguardano gli extended_fuse...... secondo quanto ho capito (senza approfondire nel datasheet)dovrebbero fare capo ad un trigger applicato alla tensione di ingresso del micro che,sotto tale valore,spegne il micro.
Le impostazioni settate da Michele ( 0x07), non riesco a capire a che tipo di setting si riferiscano....
Io le interpreto così :
i 4 bit meno significativi (bit 0->3) per avere un valore esadecimale di 7 dovrebbero essere 0111 che corrisponderebbero alla disabilitazione del trigger in questione(secondo la tendina di selezione) ma se seguiamo il concetto di negazione applicato nei low/high_fuse il risultato dovrebbe essere 1000.....Da qui deduco che extended_fuse utilizzando solo i 3 bit meno significativi (bit 0->2) mi trasforma l'intero byte come FF.......Mi pare che il ragionamento non faccia una grinza ma volevo essere sicuro che sia giusto perchè vedere quel dato (non modificabile come gli altri) diverso mi crea confusione.
Altra cosa ....sempre nella board.txt sono presenti anche ,sempre come configurazione del bootloader, le voci unlock_bits 0x3F e
lock_bits 0x0F credo che quì bisogna fare riferimento al datasheet per capire a cosa in particolare si riferiscano.
Scusa per il romanzo  smiley-cool
Ciao e grazie per la pazienza.
 
   
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22798
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma di che chip stiamo parlando? Sempre dell'Attiny84 o di un Atmega328?
Mi pare che stavi esaminando il 328, da ciò che scrivi:

-E' stato selezionato l'oscillatore interno ad 8 MHz e poi il divisore per 8 che dà come risultato 1MHz;
Queste voci sono
"Int RC Osc 8 MHz. PWRDWN/RESET: 6CK/14CK + 65 ms [CKSEL=0010 SUT=10] default value"
e poi lo spunto sul "Divide clock by 8"
Scegli sempre i tempi di PWRDWN/RESET di 6/14CK + 65 ms anche se usi un quarzo esterno, in modo da dare tempo al microcontrollore di attendere un attimo prima di entrare in piena operatività dal momento in cui torna l'alimentazione. Diversamente, potresti trovarti il micro instabile al reset oppure incapace proprio di avviarsi.

Quote
-Poi invece non mi è chiara la scelta di 256 words,sulla base di cosa va scelto questo spazio ? ;
E' lo spazio da riservare eventualmente al bootloader, ma su un Tiny non lo si mette. Per far sì che quella voce venga ignorata basta togliere il segno di spunta a "Boot reset vector Enabled".

Quote
-La eeprom non viene cancellata con il chip erase in quanto credo che il bootloader risieda proprio lì ;
No, assolutamente. Il bootloader risiede nella parte più alta della memoria Flash (togliendo spazio all'area programma). Nella EEPROM ci si salvano dati permanenti, ad esempio configurazioni del programma: in questo caso è bene non cancellare la EEPROM.

Quote
-Non è stato disabilitato il pin di reset (so che può essere trasformato in 1/0 perdendo però l'autoreset);
Mai farlo, a meno che tu non abbia un programmatore come quello di Menniti capace di dare 12V al pin di reset per resettare il micro.

Quote
-E stata abilitata la ISP ;
Sì, altrimenti non puoi programmare il chip usando la connessione ISP.

Quote
Detto questo ho notato anche che i bit che ne risultano sono negati ovvero la casella spuntata corrisponde ad uno 0 logico...
Sì, è una logica un po' particolare. 1 vuol dire NON ABILITATO, 0 vuol dire ABILITATO. Ma tu non farci caso, usa la grafica (casellina spuntata oppure no) e poi prendi i valori che ti calcola il tool.

Quote
Ciò che non ho capito invece riguardano gli extended_fuse...... secondo quanto ho capito (senza approfondire nel datasheet)dovrebbero fare capo ad un trigger applicato alla tensione di ingresso del micro che,sotto tale valore,spegne il micro.
Sul 328 l'extended fuse abilita il BOD, il BrownOut Detection, un circuito comparatore di tensione che tiene il micro perennemente in reset se la tensione scende sotto la soglia che si programma.

Quote
Le impostazioni settate da Michele ( 0x07), non riesco a capire a che tipo di setting si riferiscano....
Alcuni bit di quel fuse sono indefiniti per cui in lettura potresti ottenere un valore differente. Il tool ti dice infatti che scrivendo $FF potresti in lettura ottenere $07 dato che sono usati dal microcontrollore solo i primi 4 bit, e gli altri potresti leggerli o come 0 o come 1.
Logged


Torino
Offline Offline
God Member
*****
Karma: 3
Posts: 766
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Ma di che chip stiamo parlando? Sempre dell'Attiny84 o di un Atmega328?
Mi pare che stavi esaminando il 328, da ciò che scrivi:
Caio,si hai ragione facevo riferimento al 328 ma non l'ho specificato.
Beh,mi sembra di aver capito abbastanza bene il tutto almeno sul 328 ,per quanto riguarda l'Attiny84 proverò con il tool a vedere cosa ne ricavo e capisco.
A questo punto l'ultimo passaggio che rimane da fare rimane quello di riportare i dati nel file board_txt creando eventualmente una nuova configurazione di modo che l'ide possa trovare i dati da caricare sul chip,giusto?
Grazie ancora  smiley-wink
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22798
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sì, esatto.
Logged


Torino
Offline Offline
God Member
*****
Karma: 3
Posts: 766
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok,ti ringrazio per avermi seguito ed aiutato a far aprire un "portone"  smiley-surprise
Ti terrò aggiornati sugli sviluppi.
Ciao.
Logged

Pages: 1 [2]   Go Up
Jump to: