Attiny e oscillatore interno.

Ciao, con un attiny85 gli carico lo scheck blink, 1 secondo acceso e 1 spento.
Impostando la frequenza interna a 8 Mhz risponde bene, a 1 Mhz va più veloce e
a 16 più lento. Mi sarei aspettato il contrario?
Invece se gli carico un programma che lavora sull'interrupt (change) il micro è più veloce alle frequenze più alte, con l'oscilloscopio 2 tracce vedo il ritardo della risposta all'evento change, che
come dicevo è minore a 16 Mhz e maggiore a frequenze più basse.
Grazie.

Stilita:
Mi sarei aspettato il contrario? ...

Anche io :smiley: :smiley: :smiley:

A parte tutto, NON puoi solo cambiare la frequenza dell'oscillatore senza creare/utilizzare una nuova definizione in "boards.txt", altrimenti, quando compili, il "core" crede di lavorare ad una frequenza ed invece lavora ad un'altra ... hai la definizione delle varie possibilità in "boards.txt" ? Stai usando quella giusta quando compili ? I FUSE li imposti correttamente ?

Guglielmo

No i fuse non li metto, carico lo schetch dagli esempi cambio solo il piedino del led, trattandosi di un Attiny85. Però il dubbio è che quando lo uso come nel secondo esempio lui si comporta come uno
ci si aspetta senza nuovamente usare i fuses, cioè risponde più velocemente....

ps: quando uso il picbasic gli definisco la frequenza del quarzo e il micro rispetta i tempi, se invece dichiaro un quarzo da 4 e ne metto uno da 20 i tempi diventano 5 volte più veloci, probabilmente è questo che ometto nel caso del blink di cui prima.

Se utilizzi l'IDE di Arduino caricati il "core" di SpenceKonde ... nelle preferenze, tra le board aggiuntive, metti:

http://drazzy.com/package_drazzy.com_index.json

... vedrai che prevede, tra le board aggiuntive che puoi selezionare, un po' tutte le configurazioni (ATTiny Core - 1634, x313, x4, x41, x5, x61, x7, x8 and 828).

Compila e carica da IDE (tramite programmatore) e vedrai che NON hai problemi :wink:

Guglielmo

Ok, grazie, domani ci studio.

Ciao, Guglielmo.

Non si potrebbe dare la possibilità di fare qualche impostazione non tanto "pericolosa" come il clock senza dover andare ad aggiungere una configurazione al file boards.txt? Si potrebbe mettere un avviso di fare attenzione. Potrebbe anche ripristinare tutto ogni volta che si chiude l'IDE.

Datman:
Non si potrebbe dare la possibilità di fare qualche impostazione non tanto "pericolosa" come il clock senza dover andare ad aggiungere una configurazione al file boards.txt?

Il file "boards.txt" viene letto e tutta una serie di parametri utilizzati nelle chiamate ai vari programmi che contribuiscono alla fine alla produzione dell'eseguibile. E' la strada più semplice perché, anche una piccola modifica può sigificare tante cose.

Aggiungere una configurazione a "boards.txt" è spoesso un mero copia/incolla con la correzione di sole alcune voci, quindi un lavoro piuttosto banale ... ovvio che tocca sapere cosa modificare/aggiungere :wink:

Altra strada è ... crearsi dei propri batch / dei propi "make" che, magari accettando dei parametri in entrata, lanciano quello che serve passando le giuste cose (ed esistono già fatti), ma è sicuramente una strada più complessa.

Guglielmo

Gentili amici, ho fatto quello che mi è stato consigliato, e sono arrivato qui(link).
Però vedo solo che ho più scelte, ma la sostanza non cambia.
Cioè di default 8Mhz i tempi vengono rispettati, ma se cambio osc.int sono
sballati, come sopra detto, credo proprio che i fuses li dovrei scrivere nello schetch.
Ciao

Prima di caricare il programma, usa la funzione "scrivi bootloader" ...
... in realtà NON carica alcun bootloader (... ci mancherebbe), ma imposta i FUSE (... che, se guardi nel file "boards.txt" per il package ATTinyCore, sono tutti definiti per le varie configurazioni).

Guglielmo

Fatto, ho spuntato 1mhz, scrivi bootloader e programma, ed ha funzionato.
Poi, altra prova, spuntato 128 khz scrivi bootloader mi da errore nel caricare.
Fatta la controprova con atmel studio ed è impossibile accedere al micro, (defunto?):

Mai usato il 128KHz ... non so quali implicazioni abbia, bisogna andare a vedere nel datasheet cosa dice ... ::slight_smile:

Guglielmo

Grazie del tempo, ne ho provato un'altro a 1, 8, 16 Mhz e va bene, a 128 khz non ci provo più.
:slight_smile:

Stilita:
Grazie del tempo, ne ho provato un'altro a 1, 8, 16 Mhz e va bene, a 128 khz non ci provo più.

:smiley: :smiley: :smiley: ... appena ho un attimo provo a controllare che implicazioni ha scegliere una frequenza così bassa :wink:

Guglielmo

A 128kHz si ha il minimo consumo.
Non dovrebbero esserci difficoltà...

Datman:
A 128kHz si ha il minimo consumo.
Non dovrebbero esserci difficoltà...

Per questo lo stavo provando a 128 k, per poi metterci un milliamperometro in serie e fare un confronto
degli assorbimenti alle varie freq., più che altro a scopo didattico.

Datman:
A 128kHz si ha il minimo consumo.
Non dovrebbero esserci difficoltà...

Probabilmente c'è qualche problema con i FUSE ... appena posso verifico e faccio sapere ...

Guglielmo

Stilita:
Gentili amici, ho fatto quello che mi è stato consigliato, e sono arrivato qui(link)
....
btr hosted at ImgBB — ImgBB

Noto una cosa ... per la vode Timer1 seleziona "CPU" e non clock differenti.

Guglielmo

P.S.: Non credo possa entrarci con il tuo problema dei 128KHz, ma non si sa mai ... ::slight_smile:

Se avete voglia di fare qualche esperimento, io mi sono divertito a fare questo :slight_smile:

doppiozero:
Se avete voglia di fare qualche esperimento, io mi sono divertito a fare questo :slight_smile:

Occorre comunque stare attenti perché il "core" è programmato per una certa frequenza ed invece tu mandi la MCU ad una frequenza differente creando problemi a tutto ciò che, nel "core", si basa appunto sul clock (es. millis()).

Viene bene se c'è la necessità di far andare la MCU più lenta perché, ad esempio, alimentata a tensione più bassa. Allora, anche se ho su un quarzo a 16MHz ed alimento a 3.3V (fuori specifiche), con il divisiore, subito all'avvio (sperando che si avvi), imposto il clock alla frequenza voluta :wink:

Guglielmo

Si, infatti l'ho scritto che certe funzioni non "funzionano" bene perchè sono impostate durante la compilazione. Però si possono sperimentare bassi clock senza "birkkare" la MCU, ho scritto nella descrizione come fare :grin: