Pages: [1] 2   Go Down
Author Topic: Atmega328 8Mhz  (Read 796 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Sr. Member
****
Karma: 2
Posts: 340
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti!
Seguendo il playground e la guida di Michele Menniti sto cercando di flashare il bootlader tramite un Arduino UNO su un Atmega328P-PU non vergine per farlo funzionare, tramite il suo oscillatore interno, ad 8Mhz.
Lo sketch ArduinoISP viene caricato con successo, ma in fase di caricamento del bootloader ricevo questo errore:
Code:
avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x14

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x01
avrdude: stk500_initialize(): (a) protocol error, expect=0x14, resp=0x10
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: stk500_disable(): unknown response=0x12

Come schema ho fatto riferimento a questo.
Utilizzo l'IDE 1.0.5 su Linux e su Mac. Ho provato anche la versione 0022, diverse versioni del file board.txt, due diverse breadboard e 3 Atmega diversi, ma l'errore è sempre quello.

Che posso fare?
« Last Edit: April 16, 2014, 01:23:47 pm by supergiox » Logged

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

Se il chip non è vergine, cioè è già stato flashato con il bootloader di Arduino, è impostato per lavorare col clock esterno per cui devi montare anche il quarzo ed i suoi condensatori. Questi elementi ti serviranno solo per la flashatura con cui imposti il chip ad 8 MHz, poi puoi toglierli
Logged


Offline Offline
Sr. Member
****
Karma: 2
Posts: 340
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie per la risposta!
Più tardi provo, però posso dire con certezza che provando a ricaricare il bootloader su un chip che lavorava già a 8Mhz il problema si presentava allo stesso modo. È plausibile?
Logged

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

CIao,
ti confermo che devi assolutamente aggiungere sulla bread un quarzo (qualsiasi valore) tra i pin 9 e 10 del micro ed i due condensatori adeguati verso massa(p.es. con 16 MHz usa 22pF, con 1 MHz 15pf, con 8 MHz 18pF, anche se non sono sempre specifici in linea di massima vanno bene).
Dal punto di vista software la cosa è piuttosto semplice:
Nel board.txt aggiungi queste righe:
Code:
##############################################################

328P_8_int.name=ATmega328P Bootloader 8MHz internal osc

328P_8_int.upload.protocol=arduino
328P_8_int.upload.maximum_size=30720
328P_8_int.upload.speed=57600

328P_8_int.bootloader.low_fuses=0xE2
328P_8_int.bootloader.high_fuses=0xDA
328P_8_int.bootloader.extended_fuses=0xFF
328P_8_int.bootloader.path=atmega
328P_8_int.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
328P_8_int.bootloader.unlock_bits=0x3F
328P_8_int.bootloader.lock_bits=0x0F

328P_8_int.build.mcu=atmega328p
328P_8_int.build.f_cpu=8000000L
328P_8_int.build.core=arduino
328P_8_int.build.variant=standard
##############################################################
Apri IDE 1.0.5
Seleziona Strumenti - Programmatore - Arduino as ISP
Seleziona la porta a cui è collegato Arduino
Seleziona la board "ATmega328P Bootloader 8MHz internal osc"
Esegui Strumenti - Scrivi il bootloader

a fine operazione il tuo micro avrà il corretto bootloader a 8MHz e potrà lavorare senza quarzo e C esterni. Se ti escono errori o non hai collegato corretamente quarzo e C o non hai fatto correttamente i collegamenti ISP (ricorda di collegare correttamente le alimentazioni come nel disegno che hai linkato). Non dovrebbe servire ma nel dubbio puoi aggiungere una R da 10k tra il pin 1 del micro e 5V.
Logged


Offline Offline
Sr. Member
****
Karma: 2
Posts: 340
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho aggiunto il quarzo con i due condensatori da 22pF e la resistenza da 10k, ho modificato nuovamente il file boards.txt, ho ricaricato lo sketch ArduinoISP  e ancora resta quell'errore.
Ho controllato e rifatto i collegamenti tante e tante volte ma a questo punto non mi resta che chiedervi di controllarli anche voi:
FOTO
Logged

Parma
Online Online
Edison Member
*
Karma: 21
Posts: 2415
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dall'immagine non si capisce bene ma il jumper bianco e il cavo rosso in fondo a dx sono collegati + con - e - con  +  smiley-eek-blue ?
Logged

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

Però poi usa la pista "+" come massa e la pista "-" come VCC!!  smiley-eek
Difatti la R di pull-up è sulla linea "-" così come l'ingresso al pin 7, che è il pin VCC, ed il pin 8 ed i 2 C del quarzo sono su "+" che è GND..  smiley-eek-blue smiley-eek-blue argh..

Una domanda, ma la tua Arduino che versione è? A vederla in foto pare la R1. Se è così, ha un bug nel bootloader per cui o lo aggiorni alla versione 4.4 (quella della scheda R3) oppure ti serve il condensatore anti-autoreset.
Logged


Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 114
Posts: 7183
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Però poi usa la pista "+" come massa e la pista "-" come VCC!!  smiley-eek

Sarebbe meglio usare la pista + per Vcc e la - per GND. Però i collegamenti su quel lato sembrano corretti.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

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

Don't panic  smiley-grin al di là dell'inversione delle due piste di alimentazione anteriori, i collegamenti sono comunque esatti, cioè lui ha portato il + al - e viceversa, ma poi ha collegato correttamente R, C e jumper di alimentazione del micro.
L'errore che ha non c'entra nulla con l'autoreset, purtroppo, temo più una situazione di bricked.
Logged


Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 114
Posts: 7183
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Prova a leggere i fuse --> http://forum.arduino.cc/index.php?topic=232246.msg1680198#msg1680198
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

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

se è ciò che temo, non ci riuscirà, però speriamo bene, l'AVRDUDESS lo sto studiando da alcuni mesi e mi sta dando belle soddisfazioni.
Logged


Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 114
Posts: 7183
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

l'AVRDUDESS lo sto studiando da alcuni mesi e mi sta dando belle soddisfazioni.

E non ce lo hai mai detto?  smiley-twist
Io l'ho scoperto per caso pochi giorni fa litigando col 2313.

Questo è un nuovo capitolo da aggiungere alla tua guida V5 insieme alle board per la 1.5.6.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

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

Una domanda, ma la tua Arduino che versione è? A vederla in foto pare la R1. Se è così, ha un bug nel bootloader per cui o lo aggiorni alla versione 4.4 (quella della scheda R3) oppure ti serve il condensatore anti-autoreset.
Logged


Offline Offline
Sr. Member
****
Karma: 2
Posts: 340
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho un Arduino Uno R1 e infatti FORSE ho risolto mettendo un condensatore da 10uF tra reset e GND di Arduino.
Il caricamento del bootloader avviene con successo, sia per la configurazione a 16mhz che per quella a 8mhz, però poi nel chip a 8mhz non riesco a caricare sketch.
Ho fatto le prove inserendo fisicamente il chip appena programmato al posto di quello di Arduino e rimuovendo il condensatore tra reset e massa. Nel caso del chip a 16mhz riesco a caricare sketch senza problemi, nel secondo caso invece mi viene dato questo errore:
Code:
avrdude: stk500_recv(): programmer is not responding

Ovviamente per caricare lo sketch ho settato opportunamente "Tipo di Arduino" e "Programmatore".
Per quanto riguarda le linee di 5V e GND su breadboard, le ho invertite di proposito per seguire "alla lettera" lo schema del playground.
Logged

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

Una volta programmato ad 8 MHz, il chip devi lasciarlo sulla breadboard e gestirlo sempre via ICSP altrimenti non ti può funzionare, a meno che tu non scriva sul chip un bootloader compilato per lavorare ad 8 MHz.
Logged


Pages: [1] 2   Go Up
Jump to: