Pages: [1] 2 3   Go Down
Author Topic: AtMega328 con oscillatore interno 8Mhz  (Read 4072 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve a tutti.
Vorrei sapere come far funzionare un Atmega 328 senza oscillatore esterno , ma usando quello interno da 8Mhz ..Siccome sto usando l'Atmega dell'aurduino Uno sulla BreadBoard esternamente e sono sprovvisto di un Quarzo a 16Mhz ...Volevo usare il suo interno...come impostarlo???
Grazie in anticipo
Logged

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

Da quello che so devi installare un altro bootloader visto che quello dell'uno è programmato per usare un oscillatore esterno. Se non sbaglio si chiama lilypad!
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

Oltre al bootloader vanno cambiati i fuse del microcontrollore per attivare l'oscillatore interno.
E per far ciò è necessario un programmatore.
Logged


BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21252
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Devi cambiare il bootloader perché é tarato per i 16MHz. Devi mette uno di un Arduino a 8 Mhz. Se usi quello interno per 8Mhz le funzioni che usano il tempo vanno sbagliate.
Per settare il tipo di clock devi settare dei fuse bit. Questo si fa con un programmatore ISP.

http://arduino.cc/en/Tutorial/ArduinoToBreadboard a metá pagina é descritto.

Ciao Uwe
Logged

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

Salve riprendo questo topic di un paio di mesi fa, per un problema simile.
Ho scritto uno sketch che voglio far funzionare su un ATmega328 in stand alone a 8MHz
Ho inserito nel file board.txt le righe copiate dal file breadboard.zip indicato qui:
http://arduino.cc/en/Tutorial/ArduinoToBreadboard
Ho tolto il chip da Arduino e collegato Reset, TX, RX, GND e 5V tra Arduino e la breadboard in cui è montato il chip in modalità "minima", esattamente come indicato nel tutorial ufficiale (ho provato anche senza Reset e col condensatore), ma quando invio lo sketch mi dà il solito errore di "sync".
In precedenza avevo provato anche caricato il bootloader di lilypad con 328 sul chip.
Potete darmi qualche indicazione in più?
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
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il metodo RX/TX non funziona con le schede Uno.
Quel file ZIP non va bene per un Atmega con bootloader Uno.
Logged


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

Il metodo RX/TX non funziona con le schede Uno.
Non è vero, io l'ho fatto funzionare e lo sto spiegando nel mio tutorial.

Quote
Quel file ZIP non va bene per un Atmega con bootloader Uno.
al limite potrei fare le prove con la 2009, ma preferirei risolvere con le nuove tecniche  smiley-wink
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
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

RX/TX: ah, non lo sapevo.

Devi modificare il nome del bootloader, che per le schede Uno è divenuto l'Optiboot. Inoltre devi rivedere i fuse perché il bootloader della 2009 occupava 1,5 kB mentre l'Optiboot occupa 0,5 kB. Il tutto devi farlo con Fuse Calc.
Logged


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

Allora ho modificato il path (il nome era giusto) del file originale, per fargli trovare ciò che cerca:
Code:
atmega328bb.name=ATmega328 on a breadboard (8 MHz internal clock)

atmega328bb.upload.protocol=stk500
atmega328bb.upload.maximum_size=30720
atmega328bb.upload.speed=57600
atmega328bb.bootloader.low_fuses=0xE2
atmega328bb.bootloader.high_fuses=0xD9
atmega328bb.bootloader.extended_fuses=0x07
atmega328bb.bootloader.path=atmega
atmega328bb.bootloader.file=ATmegaBOOT_168_pro_8MHz.hex
atmega328bb.bootloader.unlock_bits=0x3F
atmega328bb.bootloader.lock_bits=0x0F
atmega328bb.build.mcu=atmega328p
atmega328bb.build.f_cpu=8000000L
atmega328bb.build.core=arduino
ho applicato la tecnica seriale ma continua a dare errori; ma possibile che tutti questi tutorial ufficiali siano errati? non riesco a crederci! Tra boootloader e sketch, finora non ce n'è stato uno che applicato alla lettera abbia funzionato, ma ovviamente LORO li hanno provati, sarei curioso di capire perché a loro abbiano funzionato e a noi no!
Comunque quello che noto è che loro cambiano tutti i fuse ed anche il clock, non vorrei che anche con la tua tecnica vadano fatte tutte queste modifiche.  smiley-eek
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: 516
Posts: 12318
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yeah!!!!! smiley-lol smiley-lol smiley-lol smiley-lol smiley-lol  smiley-money smiley-money smiley-money smiley-money smiley-money Ce l'ho fatta! smiley-cool
Ho dovuto modificare le righe di leo nel file boards.txt, ho proprio creato una nuova board "stand alone 8MHz", con questi valori:
Code:
##############################################################

mega3288.name=ATmega in Stand Alone 8MHz internal clock (w/ Arduino as ISP)
mega3288.upload.protocol=stk500
mega3288.upload.maximum_size=32256
mega3288.upload.speed=115200
mega3288.upload.using=arduino:arduinoisp
mega3288.bootloader.low_fuses=0xe2
mega3288.bootloader.high_fuses=0xd9
mega3288.bootloader.extended_fuses=0x07
mega3288.bootloader.path=optiboot
mega3288.bootloader.file=optiboot_atmega328.hex
mega3288.bootloader.unlock_bits=0x3F
mega3288.bootloader.lock_bits=0x0F
mega3288.build.mcu=atmega328p
mega3288.build.f_cpu=8000000L
mega3288.build.core=arduino
Inviando tramite la tecnica ISP di leo (anche se io ho modificato la procedura, ma non cambia nulla!) prima il bootloader di questa board e poi lo sketch che mi serviva, il chip ha funzionato regolarmente.
La cosa merita un paragrafo nel tutorial che ormai è come la tela di Penelope  smiley-wink
Grazie leo, con la tua tecnica iniziale hai aperto davvero nuovi orizzonti  smiley-money
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
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sei sicuro??
Io ho fatto una prova prima di cena con una configurazione simile, l'unica cosa che cambiava erano i fuse alto ed esteso:
low: e2
high: dc
ext: fd

Ed il LED non si accendeva....
Con i tuoi parametri, Fuse Calc mi dice che hai messo lo spazio del bootloader a 2048...

Forse la differenza la fa l'aver flashato prima il bootloader, cosa che io non ho fatto. Probabilmente l'IDE di Arduino modifica anche i fuse durante l'operazione di flash del bootloader, operazione che forse non compie quando uploada uno sketch normale. E qui allora torna il discorso che facevo io sull'altro post dove dicevo appunto che uploadare uno sketch non dovrebbe sovrascrivere il bootloader.
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

Domanda: ma il bootloader come lo carichi?
Se cerco di caricarlo sull'Atmega esterno usando ArduinoISP, l'IDE mi da errore.

Forse tu carichi il bootloader sulla Uno, poi smonti il micro e lo programmi sulla breadboard?
Logged


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

Allora, io non ho fatto molte prove dopo che ha funzionato, ti dico però che:
i fuses vanno modificati tutti e tre; riguardo l'extended cnel calc c'è questa nota "* Note that some numerical values refer to fuses containing undefined bits (set to '1' here). Depending on the target device these fuse bits will be read either as '0' or '1'. Verification errors will occur if the values are read back with undefined bits set to '0'. Everything is fine if the values read from the device are either the same as programmed, or the following values (undefined set to '0'): Extended: 0x07."
Ad un primo tentativo mi è proprio uscito un errore che finiva più o meno con: 0xfd:!0x07, quindi ho dedotto....
Ti confermo che devi caricare prima il bootloader della stessa board, altrimenti ti carica lo sketch ma poi non funziona.
Ti dò un aggiornamento, con il low_fuse a 0x62 il circuito funziona anche ad 1MHz, inoltre l'ho alimentato a 3,3V, risultato: il consumo del circuito è di 2,6mA in stand-by, a 5v e 8MHz era di circa 13mA, non oso pensare al circuito a 16Mhz... smiley-wink
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: 516
Posts: 12318
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Domanda: ma il bootloader come lo carichi?
Se cerco di caricarlo sull'Atmega esterno usando ArduinoISP, l'IDE mi da errore.

Forse tu carichi il bootloader sulla Uno, poi smonti il micro e lo programmi sulla breadboard?
No, no, ho provato prima a caricarlo Arduino-Arduino e poi a togliere il chip e metterlo sulla bread, visto che andava a buon fine ho fatto la prova direttamente sulla bread e va che è una meraviglia.
Però, c'è stato un caso in cui mi ha dato un errore durante il caricamento dello sketch (avevo sbagliato io...), dopo non sono riuscito più a sistemare il chip sulla bread, ho dovuto ricollegare i due Arduino, per rimettere il bootloader a 8MHz.
Quindi l'unico limite è questo, ma scoperta la tecnica perché sbagliare, io l'ho fatto per avere le controprove.
Il primo caricamento di bootloader lo devi fare sul circuito a 16MHz, se il chip è "usato", non ho fatto prove col chip vergine.
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
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma a me usando un chip "sverginato" non va.
Prima da un errore di comparazione: 0xfd != 0x05, poi mettendo 0x05 la procedura va avanti un po' ma si ferma e ricevo un errore di mancata risposta dal programmatore, segno che avrdude si "accorge" che sto usando un accrocchio che non è un programmatore....

Adesso proverò a riflashare il bootloader sul micro montato sulla Uno e poi a spostarlo sulla breadboard.

PS:
mettendo il fuse basso a 0x62 abiliti quel divisore x8 di cui ho detto tante volte e che serve appunto a dividere il clock interno a 1 MHz.
Gli Attiny, ad esempio, escono tutti con l'oscillatore interno abilitato ed il disivore on, per cui lavorano tutti a 1 MHz.

Dipende dai compiti, alle volte può bastare anche 1 MHz: se devi leggere un sensore 1 volta all'ora, ad esempio, non penso che faccia molta differenza avere il micro "lumaca"  smiley-wink
Logged


Pages: [1] 2 3   Go Up
Jump to: