Pages: [1]   Go Down
Author Topic: Atmega328, 8MHz compatibilità librerie  (Read 813 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 34
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gentili colleghi del forum,
dopo aver seguito le guide "Menniti" e "Testato", sono riuscito a
caricare il bootloader su un atmega328P standalone e farlo "girare" a 8MHz (quindi senza quarzo esterno e condensatori) ed a caricare lo sketch "blink" (per verificare la coerenza tra i tempi di accensione e spegnimento del led e l'impostazione a 8MHz).... tutto ok.

Ora però leggo che non tutte le librerie sono compatibili con frequenze diverse dai canonici 16MHz, avete nota di quali librerie funzionano a 16, quali a 8, ed infine quali a 1MHz?


Grazie del tempo,
Tredipunta.
Logged

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

Ad esempio, nel vecchio IDE 002x la funzione analogWrite non teneva conto della velocità del clock per cui a 16 MHz lavorava correttamente mentre a velocità inferiori la frequenza in uscita sui pin si riduceva in modo proporzionale alla diminuzione di clock.  Non so se nell'IDE 1.0 questo problema lo hanno risolto.

Altre librerie sono da verificare: se ad esempio interagiscono con l'hardware, un controllo va sempre fatto. Non si sa mai.
Logged


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

Mi pare che esista una versione di Arduino a 8MHz.
Quindi le librerie dovrebbero (DOVREBBERO) funzinare tutte.
Logged

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

Le librerie sono anche di terze parti, non solo dell'IDE.
Logged


Offline Offline
Newbie
*
Karma: 1
Posts: 34
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Lo standalone sto realizzando, lo sto facendo con:
Arduino UNO r2 (come ISP)
IDE 1.0
utilizzando la board virtuale

mega3208.name=ATmega in Stand Alone 8MHz internal clock (w/ Arduino as ISP)
mega3208.upload.protocol=stk500
mega3208.upload.maximum_size=32768
mega3208.upload.speed=115200
mega3208.0pload.using=arduino:arduinoisp
mega3208.bootloader.low_fuses=0xe2
mega3208.bootloader.high_fuses=0xde
mega3208.bootloader.extended_fuses=0x07
mega3208.bootloader.path=optiboot
mega3208.bootloader.file=optiboot_atmega328.hex
mega3208.bootloader.unlock_bits=0x3F
mega3208.bootloader.lock_bits=0x0F
mega3208.build.mcu=atmega328p
mega3208.build.f_cpu=8000000L
mega3208.build.core=arduino
mega3208.build.variant=standard

Comprendo che non è un problema riportarlo a 16Mhz, ma meno pezzi metto sul PCB meglio è (se non servono), tanto lo scopo del progetto è paragonabile ad un "dispenser automatico" un sistema che eroga un prodotto ogni ora, quindi la velocità del clock non è importante.

Utilizzerò un RTC DS1307, un LCD (I2C) ed un servo motore.

Se le librerie non sono compatibili, ho un messaggio durante l'upload (non penso) oppure i componenti (come ad esempio quelli su I2C) fanno le bizze?

Ripeto, in questo caso non è un problema, faccio prima ad arrivare in fondo al progetto e vedere se le cose funzionano, tuttavia quando viene progettato il circuito (nel mio caso sempre millefori), sapere che ci sono o meno alcuni componenti, un po' di differenza la fa.

Grazie,
Tredipunta.
Logged

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

Ciao, se non ricordo male (uso ancora la 0022 e non mi schiodo...) la riga arduinoisp non serve per IDE 1.0 in quanto il programmatore lo scegli da software, comunque verifica.
Non credo ti escano messaggi particolari, semplicemente possono sballare i tempi. Però la tua deduzione mi sembra valida, il fatto che esistano versioni di Arduino a 8MHz potrebbe aver spinto chi ha scritto le librerie a valutare la possibilità di lavorare a questa frequenza.
Non penso che avrai problemi con l'LCD, invece la gestione dell'RTC potrebbe darti problemi, però questa è una libreria così tanto usata che credo proprio che la cosa sia stata prevista; oltretutto mi pare che siano entrambi ufficiali, nel qual caso potresti proprio stare tranquillo! smiley
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

Offline Offline
Newbie
*
Karma: 1
Posts: 34
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

E' vero,
la riga atmega3216.upload.using=arduino:arduinoisp
come indicato da Testato può essere rimossa, mi è rimasta li in quanto, prima di riuscire a caricare lo sketch ho fatto alcune prove.

Tra l'altro anche la riga atmega3216.upload.protocol=stk500
anche secondo l'indicazione di Testato dovrebbe essere sostituita da atmega3216.upload.protocol=arduino

Prima di riuscire a caricare lo sketch, attraverso l'utilizzo del comando File --> Upload using programmer, cercavo di fare l'upload selezionando la board virtuale creata (atmega3216) e utilizzando il comando File --> Upload, senza però avere successo nell'operazione ("avrdude: Yikes!  Invalid device signature." e talvolta il messaggio "avrdude:
stk500_getsync(): not in sync: resp=0x15").


Ho verificato però che utilizzando la riga tmega3216.upload.protocol=arduino e utilizzando il comando File --> Upload, lo sketch viene caricato sulla board di arduino e non sull'atmega standalone (probabilmente è una cosa scontata).

Aggiungo che non ho avuto bisogno di utilizzare alcun rimedio per l'autoreset ed ho utilizzato il file "TinyISP.ino".

PS: non avete idea di quante volte ho letto la guida di Menniti.

Buona giornata,
Tredipunta.
Logged

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

Beh, mi fa piacere sapere che sei un mio assiduo lettore smiley-grin
Comunque la mia Guida funziona alla perfezione con le versioni 0022/23 mentre per la 1.0 devi appunto rifarti a quella di Testato. Comunque ora sta per uscire l'IDE 1.0.2 (o giù di lì...) che dovrebbe aver risolto svariati problemi, tra cui quello dell'ArduinoISP. Peraltro di AISP ce n'è una versione realizzata da Leo72 e BrainBooster che funziona a meraviglia con tutte le versioni di IDE, io ormai l'ho adottata come standard.
La problematica dell'autoreset, l'avrai certamente letto, è casuale, può esserci o non esserci, nel tuo caso non c'è, ma l'importante è che abbiamo trovato la sluzione per chi ce l'ha.
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

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Beh, mi fa piacere sapere che sei un mio assiduo lettore smiley-grin
Comunque la mia Guida funziona alla perfezione con le versioni 0022/23 mentre per la 1.0 devi appunto rifarti a quella di Testato. Comunque ora sta per uscire l'IDE 1.0.2 (o giù di lì...) che dovrebbe aver risolto svariati problemi, tra cui quello dell'ArduinoISP. Peraltro di AISP ce n'è una versione realizzata da Leo72 e BrainBooster che funziona a meraviglia con tutte le versioni di IDE, io ormai l'ho adottata come standard.
La problematica dell'autoreset, l'avrai certamente letto, è casuale, può esserci o non esserci, nel tuo caso non c'è, ma l'importante è che abbiamo trovato la sluzione per chi ce l'ha.
Ciao.

La libreria per la gestione del bus I2C è differente nelle versioni delle due IDE 022 e 1.0.1, nella prima puoi settare manualmente la frequenza di clock nel file twi.h dove è specificato il parametro CPU_FREQ , mentre nella seconda non è necessario in quanto il valore del clock lo preleva direttamente dalla definizione della BOARD prima della compilazione. Sicuramente bisogna essere accorti su tutte quelle librerie che utilizzano funzioni basate sul clock.
Logged

Pages: [1]   Go Up
Jump to: