Pages: [1]   Go Down
Author Topic: Atmega8 Clock esterno RC  (Read 787 times)
0 Members and 1 Guest are viewing this topic.
Bergamo
Offline Offline
Full Member
***
Karma: 1
Posts: 142
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buonasera forum,
ho un problema nel cercare di settare il clock mediante RC esterno con Atmega8l
Ho dato un'occhiata a questo:
http://www.eetkorea.com/ARTICLES/2003APR/A/2003APR04_AMD_EMS_MPR_AN.PDF?SOURCES=DOWNLOAD
Vorrei lavorare a 0,1MHZ quindi : C=22pF, R =150K   Corretto?
Sembrerebbe di no, perchè per riuscire a caricare sketch e bootloader devo scendere a 10k come valore di resistenza. (con R=10K e c=22pF ottengo dei tempi corretti    smiley-roll) assorbmento circa 1mA a 3,3V
Con R=150K non è possibile caricare bootloader e sketch.
Questa la board :
atmega8l_100KHz.name= ATmega8L @ 100KHz External RC clock
 
atmega8l_100KHz.upload.protocol=stk500
atmega8l_100KHz.upload.maximum_size=7168
atmega8l_100KHz.upload.speed=19200
 
atmega8l_100KHz.bootloader.low_fuses=0xE5
atmega8l_100KHz.bootloader.high_fuses=0xD9
atmega8l_100KHz.bootloader.path=atmega8
atmega8l_100KHz.bootloader.file=ATmega8L.hex
atmega8l_100KHz.bootloader.unlock_bits=0x3F
atmega8l_100KHz.bootloader.lock_bits=0x0F
 
atmega8l_100KHz.build.mcu=atmega8
atmega8l_100KHz.build.f_cpu=100000L
atmega8l_100KHz.build.core=arduino
 
Sbaglio qualcosa?
Grazie in anticipo
M.





Logged

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

Ti sei ricordato di impostare i fuse in modo corretto?

Con che software stai cercando di programmare l'Atmega? Se usi l'IDE di Arduino, molte delle funzioni e delle librerie di Arduino non sono fatte per lavorare a clock differenti da 16 MHz. Anche usando funzioni e librerie che si adattano a clock più bassi, sotto ad 1 MHz non vanno comunque per cui otterresti codice non funzionante. Inoltre c'è il problema della programmazione: credo che se non usi un programmatore HW "vero" con l'ArduinoISP non puoi programmare un micro con un clock così basso.
Tempo fa provai a far funzionare un chip con l'oscillatore interno a 128 kHz ma senza risultato.
Logged


Offline Offline
Sr. Member
****
Karma: 0
Posts: 361
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A che ti serve andare cosi' giu' con la frequenza ?
Logged

Bergamo
Offline Offline
Full Member
***
Karma: 1
Posts: 142
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Low fuse 0xE5
High Fuse 0xD9
dovrebbero essere corretti.
Utilizzo l'Ide Arduino e un Arduino Mega come programmatore ISP.
Nessun problema a 1/2/4/8 MHz con RC interno.
Logged

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

Low fuse 0xE5
High Fuse 0xD9
dovrebbero essere corretti.
Utilizzo l'Ide Arduino e un Arduino Mega come programmatore ISP.
Nessun problema a 1/2/4/8 MHz con RC interno.
Io ti dico che non ce la fai. Sia l'IDE che lo sketch ArduinoISP non sono stati scritti per compilare e lavorare a frequenze così basse.
Logged


Bergamo
Offline Offline
Full Member
***
Karma: 1
Posts: 142
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho un programmatore usbasp, che non ho mai utilizzato.
Potrei provare a settare i fuse e caricare l'hex con quest'ultimo, ma non ho esperienze in merito.
Consigli? In particolare per software e driver necessari..
M.
Logged

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

Usando l'IDE non farai lo stesso molta strada perché come ti ho detto
molte delle funzioni e delle librerie di Arduino non sono fatte per lavorare a clock differenti da 16 MHz. Anche usando funzioni e librerie che si adattano a clock più bassi, sotto ad 1 MHz non vanno comunque per cui otterresti codice non funzionante.
L'unica è scrivere codice in C puro con un editor, poi compilare a mano e fare l'upload su un micro operante ad 1 MHz con oscillatore interno. Successivamente impostare i fuse per poi provare a farlo lavorare a 100 kHz. Ma a questo punto perché non usare direttamente l'oscillatore interno a 128 kHz?

E poi
A che ti serve andare cosi' giu' con la frequenza ?
Logged


0
Offline Offline
Faraday Member
**
Karma: 46
Posts: 5851
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Credo per questioni di consumi
Giustamente pero a questo punto conviene udare i 128 interni e si risparmiano i componenti esyerni
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Bergamo
Offline Offline
Full Member
***
Karma: 1
Posts: 142
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Esatto, è un problema di consumi.
Mi potreste spiegare la procedura per utilizzare il 128KHz interno?
Carico lo sketch su un micro a 1Mhz RC interno, ho capito bene?
E poi?
Grazie
M.
Ps: in alternativa potrei usare l'RC interno a 1MHz e poi agire sul prescaler, corretto?
« Last Edit: March 21, 2012, 07:28:52 am by Matteino » Logged

Bergamo
Offline Offline
Full Member
***
Karma: 1
Posts: 142
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

E' possibile modificare il prescaler dall'IDE di Arduino?
Logged

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

L'oscillatore si sceglie impostando correttamente i fuse del micro: l'oscillatore che fornisce il clock a 8 MHz o 1 MHz (8 MHz con divisore HW da smiley-cool non è lo stesso di quello che fornisce il clock a 12 8 kHz. Devi selezionarlo tramite i fuse.
Però da miei test, se non hai un vero programmatore HW, non riesci a caricare lo sketch su un micro che lavora a 128 kHz. Per questo ti ho suggerito di provare mettendo il micro a 1 MHz, caricando lo sketch scritto per lavorare a 128 kHz, e poi impostando i fuse per selezionare l'oscillatore da 128 kHz. Sul come scrivere il firmware, ti ho già risposto: scordati l'uso dell'IDE di Arduino e delle sue librerie, la maggior parte di questa roba non funziona che a 16 MHz o, al massimo, a 1 MHz.

Se comunque è per risparmiare corrente, non ti basterebbe usare la modalità sleep per "addormentare" il micro quando non lavora? Che cosa deve gestire, esattamente? Magari potrebbe bastare anche un micro più piccolo di un 328 impostato a 1 MHz con tensione molto bassa: ad esempio, gli ultimi Attiny revisione "V" o "A" possono operare con tensioni minime di 1,8V.
Logged


Bergamo
Offline Offline
Full Member
***
Karma: 1
Posts: 142
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Utilizzo già un Atmega8l e 8a alimentati a 3.3V.
Non posso utilizzare lo sleep mode, il micro è sempre attivo.
Sono a circa 2 mA a 1 MHz ma vorrei scendere ancora come assorbimento, visto che la velocità non mi interessa.
Cosa intendi per programmatore HW vero? Io Ho un Usbasp, ma non ci Ho mai lavorato. Suggerimenti?
M.
Logged

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

Intendo un programmatore nel vero senso della parola. Un AvrDragon o simili. GLi USBtinyISP, USBasp ecc... sono semplici micro che contengono un firmware che funge da convertitore USB/seriale per poter programmare via porta seriale i microcontrollori. Però già a trattare clock "strani" vanno in crisi perché l'emulazione è SW, non hanno un convertitore HW. I programmatori danno il clock esterno se richiesto, alimentano il micro ecc... Insomma fanno ciò che il tuo USBasp o il mio USBtinyISP non possono fare.
Logged


Pages: [1]   Go Up
Jump to: