Go Down

Topic: AtMega328 con oscillatore interno 8Mhz (Read 5298 times) previous topic - next topic

leo72

Ho dovuto riprogrammare il bootloader con l'USBtinyISP. Si era incartato e non c'era più verso di programmarlo con l'Arduino UNO....

Aspetto che tu pubblichi il metodo che hai scoperto per fare altre prove.... per oggi ho già dato... ho il cervello cotto  :smiley-eek:

Michele Menniti


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.

Penso sia la cosa migliore, io la prova non l'ho fatta sul chip vergine ma a logica si comporta come se avesse un "errore a bordo" quindi la prima volta (è vergine, ci vuole delicatezza e riguardo ;)) devi usare Arduino, poi non avrai più problemi.

Quote

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"  ;)

Sì, infatti me l'avevi detto e per questo ho fatto la prova, il sensore è per un antifurto, ho notato che a 1MHz e 3,3V il software dà i numeri, ma penso che "tarandolo" riesco a ottenere un buon risultato, ma per stasera non ne faccio più prove, questa cosa mi ha davvero stressato!
Dunque, ora compro gli ATtiny, penso che consumeranno ancora meno dell'ATmega, che ne dci? A proposito, prima di fare una c.zz.t. quale tipo devo comprare affinché possa andare a colpo sicuro con la tecnica ISP?
Io ora sto usando dei led per verificare ingressi e uscite ma nel circuito finale ci saranno: ATtiny, relé reed 5v, regolatore a 3,3v (forse), una res, un diodo, un transistor per pilotare il rele, avrò bisogno di un ingresso e un'uscita, nient'altro, non penso ci siano particolari problemi, che dici?
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

Michele Menniti


Ho dovuto riprogrammare il bootloader con l'USBtinyISP. Si era incartato e non c'era più verso di programmarlo con l'Arduino UNO....

Aspetto che tu pubblichi il metodo che hai scoperto per fare altre prove.... per oggi ho già dato... ho il cervello cotto  :smiley-eek:

A chi lo dici!?  :smiley-sweat:
Ora mollo tutto e da domani mi metto di buona lena per finire il tutorial, ho un casino di roba da scrivere, per fortuna ho fatto già tutte le foto, anche se ora me ne serve qualcun'altra per la breadboard minimal.
Se puoi rispondi al mio precedente post, riguardo il tipo di ATtiny, comunque ti ringrazio di cuore, senza il tuo preziosissimo aiuto sarei dovuto ritornare al circuito elettronico, che ormai stava anche andando bene, però troppi componenti, oltre a 2 IC cmos, invece così farò uno schedino davvero mignon!
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

leo72

Di Attiny da consigliarti che possano andare con l'IDE e la tecnica  della programmazione ISP ci sono:
-Attiny45/85
-Attiny2313/4313
-Attiny44/84
Dei primi sai ormai vita/morte/miracoli. E' da loro che ho sviluppato la mia tecnica di programmazione.
Sono micro molto compatti: DIP8, clock interno a 1 o 8 MHz. Hanno alcuni difettucci: USART non supportata via hardware ma funziona la NewSoftSerial con qualche modifica. I2C nelle stesse condizioni: funziona usando un emulatore software. Però se hai bisogno di bassi consumi, ridotto ingombro e di soli 2 pin (ne ha 6 in totale liberi), può fare al caso tuo. Ah, 4/8 kB di flash.

Gli Attiny2313 e 4313 sono un altro tipo di micro che potrebbero fare al caso tuo. DIP20, quindi leggermente più grandicelli, e dovrebbero funzionare con l'IDE (non li ho provati, non ce l'ho). Supportano l'USART ma non l'I2C, però hanno lo stesso bus universale programmabile come gli Attiny45/85 quindi in teoria dovrebbero permettere l'I2C con lo stesso sistema. Hanno un grosso difetto: solo 2/4 kB di flash, veramente poca.

Gli ultimi, sono quelli che mi stanno interessando ultimamente. DIP14, quindi una via di mezzo fra i precedenti, supportati dalle librerie TinyCore (quindi usabili con l'IDE di Arduino), hanno 4/8 kB di flash. Non hanno l'I2C hardware però hanno lo stesso sistema dei precedenti. Sarebbero da provare, per lo meno per la memoria doppia rispetto ai vetusti AttinyX313.

Ripeto, se però devi usare solo 2 pin, un Attiny45/85 io dico ti basta e avanza.



Michele Menniti

Sì, due pin ed un paio di k di sketch, per questa applicazione, per il resto faccio riferimento al tuo tutorial, non devo fare dell'"industriale", semplicemente 7 schedini per poter dormire la notte in pace e non rischiare di morire di crepacuore per i falsi allarmi dei miei sensori di tapparelle.
Sto lavorando alacremente alla nuova Guida, non voglio far perdere il lavoraccio che abbiamo fatto ieri  :smiley-sweat: :smiley-sweat: :smiley-sweat:, quindi preferisco prendermi qualche giorno in più ma fare un lavoro completo.
Grazie ancora! ;)
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

Michele Menniti

A proposito,
dove posso comprare gli ATTINY45 o 85? me ne servono una decina di pezzi e non voglio mettere in piedi un'ordine all'estero (su ebay ho trovato solo un paio di aziende tedesche); qualcuno che li venda a prezzo decente e che poi non mi sveni sul trasporto.
Qualche link?
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

leo72

Gioblu li ha a €2 cad (Attiny85): io su Ebay dall'estero li ho pagati qualche decina di cent in più.

uwefed

rs e distrelec li hanno ma a prezzi proibitivi (sopra i 3 € senza iva)
Ciao Uwe

Michele Menniti

Aggiudicato Gioblu, con l'occasione prendo uno di quei circuitini suoi, visto che mi ero impegnato a farlo alla prima occasione  XD
Con i test 1 e 8MHz ho praticamente finito, sto provando ogni possibile combinazione in modo da non lasciare dubbi.
Grazie dei suggerimenti amici!
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

Salve

Ho iniziato ad usare Arduino da poco e ritengo molto interessante questa discussione. Anch'io vorrei portare il mio progetto, che ho realizzato con una scheda UNO, su una breadboard stand alone con oscillatore interno ad 1 Mhz. Stavo perciò cercando di seguire le indicazioni presenti sulla guida del sig. Menniti e l'esperienze descritte in questo post. Innanzitutto ho capito che devo scrivere il bootloader sul mio Atmega328p vergine e per far ciò è necessario che sulla mia breadboard ci sia il quarzo a 16 MHz. Però io non vorrei aggiungere il quarzo sulla mia scheda. Quindi la mia prima domanda è la seguente:

E' possibile scrivere il bootloader sul mio atmega vergine mettendolo al posto di quello presente sulla scheda UNO? Io ci sto provando ma mi dà sempre errore di sync 0x00.

Grazie in anticipo!
Saluti

Michele Menniti

Se devi lavorare a 1MHz e il tuo micro è vergine non devi fare assolutamente nulla, è già settato di fabbrica a 1MHz ;)
Quindi prepara il micro in stand-alone, senza quarzo e condensatori, fai i collegamenti ISP e poi caricaci sopra lo sketch, vedrai che ti funzionerà al primo colpo. La manovra che stai tentando non sta né in cielo e né in terra, lascia perdere.
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

leo72


E' possibile scrivere il bootloader sul mio atmega vergine mettendolo al posto di quello presente sulla scheda UNO? Io ci sto provando ma mi dà sempre errore di sync 0x00.

No, non puoi farlo.
Affinché la cosa funzioni, il chip deve avere GIA' il bootloader sopra ed essere stato impostato per lavorare a 16 MHz.

PS:
benvenuto, visto che sei nuovo ti invito alla lettura del regolamento ed alla presentazione.

Grazie Leo per il benevenuto! A breve provvederò a scrivere la presentazione.

E' la prima volta che programmo in ISP e credo mi stia sfuggendo qualcosa:
1) ho realizzato il collegamento ISP  tra Arduino e breadboard, seguendo la figura presente a pag. 66 della guida.
2)ho aperto l'ide Arduino 1.0.5 e ho caricato e inviato lo sketch ArduinoISP selezionando l'opportuna porta COM e la scheda Arduino UNO.
Ora seguendo quanto scritto a pag 68 della guida, dovrei programamre la mia breadboard impostatndo Atmega in stand alone 1MHz internal clock. Per far ciò, ho modificato il file boards copiando e incollando gli esempi riportati in questa discussione, ho chiuso e riaperto l'ide e caricato lo sketch "blink", ma mi dà errori del tipo : C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/Arduino.h:213:26: error: pins_arduino.h: No such file or directory

Cosa sbaglio?

Grazie tante per il supporto!!!



PaoloP

Probabilmente ti manca la riga con la variante.
Esempio
Code: [Select]
uno.build.variant=standard

Grazie Paolo

l'errore che invece mi dà adesso è : avrdude: stk500_getsync(): not in sync: resp=0x00

ho provato anche a mettere un condensatore elettrolitico di 10uF tra Reset e 5V.

Non so se sto sbagliando qualcosa nella procedura o se ho problemi col file boards.txt, di cui vi riporto il contenuto:

Code: [Select]
##############################################################

uno.name=ATmega in Stand Alone 1MHz internal clock (w/ Arduino as ISP)
uno.upload.protocol=stk500
uno.upload.maximum_size=32256
uno.upload.speed=115200
uno.upload.using=arduino:arduinoisp
uno.bootloader.low_fuses=0x62
uno.bootloader.high_fuses=0xd9
uno.bootloader.extended_fuses=0x07
uno.bootloader.path=arduino:atmega
uno.bootloader.file=ATmegaBOOT_168_atmega328.hex
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F
uno.build.mcu=atmega328p
uno.build.f_cpu=1000000L
uno.build.core=arduino
uno.build.variant=standard

Go Up