Go Down

Topic: 1284p piantato? (Read 3542 times) previous topic - next topic

niki77

Buona sera a tutti.

Ho una board con su un atmega1284p , 16mhz clock programmabile solo via icsp.
Dopo un paio di giorni di programmazioni corrette, da stasera l'avrdude mi risponde questo simpaticissimo e criptico messaggio

Code: [Select]


C:\avrdude -c usbasp -p atmega1284p -P usb -e -F

avrdude: error: programm enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
avrdude: Expected signature for ATMEGA1284P is 1E 97 05

avrdude done.  Thank you.

Premere un tasto per continuare . . .


Come potete notare il comando è per la cancellazione del chip,ma fa lo stesso anche per programmazione e scrittura fuse...
Lo butto o posso tentare qualcos'altro?
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

pelletta

Hai stuzzicato i fuse per caso?

Michele Menniti

Il messaggio veramente non è tanto criptico....
programm enable: target doesn't answer = non c'è dialogo tra il programmatore ed il micro, il resto è consequenziale.
possibili situazioni che portano a ciò:
1 - collegamenti ISP difettosi
2 - errata programmazione dei micro (combinazione fuse non riconosciuta, chip bricked, sbloccabile solo con l'HV riprogrammando i fuse)
3 - disabilitazione del RESET o della programmazione SPI mediante opportuno fuse (sbloccabile solo con l'HV mediante riprogrammazione fuse preceduta da chip erase se si sono bloccati anche i BLB)
4 - cancellazione dei tre byte della signature (succede... superabile col parametro -F, ma vedo che lo usi già)
5 - chip guasto, ma è una ipotesi remota
6 - programmatore difettoso (test incrociati con altro micro o con Arduino come programmatore ISP)
Piuttosto è strana la riga di comando che usi (dichiarazione della porta USB e mancanza dei BAUD), ma immagino che finora ti abbia sempre funzionato....
Altro non mi viene in mente.
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

niki77

Ciao bud, e ciao michele, intanto grazie.

Penso che quasi sicuramente è successo qualcosa coi fuse, anche se non riesco a capire esattamente il perchè sia successo.
Come precedentemente specificato la MCU è stata programmata più volte, quindi escluderei i punti 1 e 6 (il programmatore programma ancora correttamente altri chip).

Ora vorrei un attimo capire se posso tentare di riprogrammarlo in HV direttamente su scheda o devo per forza smontarlo ... è smd :(
Ma soprattutto devo capire se riesco a fare un programmatore HV specifico minimale con quello che ho in giro per casa...
Fonti?
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

astrobeed


Ora vorrei un attimo capire se posso tentare di riprogrammarlo in HV direttamente su scheda o devo per forza smontarlo ... è smd :(
Ma soprattutto devo capire se riesco a fare un programmatore HV specifico minimale con quello che ho in giro per casa...


Devi smontarlo per forza e ti costa meno sostituire il micro.
Un tentativo che puoi fare è scollegare il quarzo e fornire un clock esterno di almeno 500 kHz al micro tramite il pin XTAL1, in questo modo puoi ovviare al problema setup sbagliato dei fuse clock che è una delle cause principali di brick, se la cosa ha successo metti a posto i fuse e rimonta il quarzo.


niki77

Grazie Astro , in cuor mio purtroppo supponevo che lo dovessi smontare per forza....  =(

Al limite a smontarlo ci posso provare, infondo è tqfp , ho dissaldato di peggio!

Si lo sò che per 6 euro di micro mi conviene cambiarlo, ma visto che sto facendo esperimenti, già se mi capita un altra volta non lo sò se è più conveniente!

Ho trovato in rete questo PROGRAMMATORE HV ARDUINO BASED

Dite che vale la pena tentare di attaccarlo alla meno peggio e vedere se riesce a reimpostare i fuse?
Ovviamente lo sketch andrà modificato in modo tale da impostare i fuse correttamente per il mio micro.
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Michele Menniti

Purtroppo la programmazione HV è estremamente invasiva, richiede il collegamento di ben 18 pin, che devono essere sgombri da segnali, oltre alla normale alimentazione, certamente non puoi farla sul circuito e temo che dovrai realizzare un PCB adattattore specifico.
Il mio Programmatore HV a giorni sarà realizzabile in quanto finalmente sta per partire il service dei PCB originali. Se vuoi muoverti in modo più semplice basta che cerchi il sito della Mightyohm, lì trovi lo schema elettrico applicato (salvo nuove versioni...) al mega328P; ti basta studiare le linee di collegamento e confrontarle con il datasheet del 1284, per vedere come devi usarle sul tuo micro; non è difficile, ci vuole solo un po' di pazienza; se vuoi risparmiarti la "fatica" di questa fase, vai sul sito di Elettronica In, sezione relativa alla Rivista 165 di Aprile 2012 e scaricati l'intero articolo della mia prima puntata, lì c'è lo schema elettrico e trovi le connessioni specifiche per il 1284.
Concordo con Astro sul fatto che costi meno sostituirlo, ma magari il gusto della sperimentazione.....
Invece ignoro questa cosa del quarzo da 500KHz; il solo fatto di collegare un segnale da 500kHz al pin XTAL1 rimette a posto i fuses in automatico o questa cosa permette di riprogrammarli? puoi spiegarla meglio?
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

flz47655

In soldoni se per caso ha impostato il clock del micro ad un oscillatore esterno e.. l'oscillatore esterno non c'è, basta collegarcelo per poterlo riprogrammare temporaneamente all'oscillatore interno. Io in genere utilizzavo proprio un cristallo oscillatore da 8Mhz (senza condensatori) coi piedini piegati per collegarlo ai due pin adiacenti ma questa è un altra storia  :D

astrobeed


Invece ignoro questa cosa del quarzo da 500KHz; il solo fatto di collegare un segnale da 500kHz al pin XTAL1 rimette a posto i fuses in automatico o questa cosa permette di riprogrammarli? puoi spiegarla meglio?


Non un quarzo da 500 kHz, ma un segnale di clock da almeno 500 kHz, ovvero un'onda quadra con ampiezza di 5V, o 3.3V a seconda della tensione di alimentazione del micro, che va collegato al pin XTAL1.
Con questo "trucco" fornisci un clock al micro se per errore sono stati settati i fuse per il clock esterno, nel caso di setup come RC il problema non esiste, in questo modo il micro funziona ed è possibile settare i fuse nel corretto modo.
Da notare che alcuni programmatori hardware possono utilizzare la connessione ISP a 10 pin dove su uno di questi è disponibile proprio un clock ausiliario per ovviare a questo tipo di problemi.

Michele Menniti

#9
Dec 04, 2012, 09:53 am Last Edit: Dec 04, 2012, 09:57 am by Michele Menniti Reason: 1
flz, mi pare che tu non abbia afferrato il concetto di Astro:
Quote
Un tentativo che puoi fare è scollegare il quarzo e fornire un clock esterno di almeno 500 kHz
, non esiste la possibilità di far lavorare il micro a frequenze maggiori di 8MHz senza quarzo o oscillatore esterno. Ma ora che leggo meglio mi pare che tu abbia definito correttamente oscillatore esterno in contrapposizione al quarzo, quindi tutto chiaro.

EDIT: Astro, mi sono corretto da solo nella frase successiva, per me la cosa era chiara, ho sbagliato a scrivere :)

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

niki77

Ritengo opportuno specificare che non sto seguendo la strada del clock esterno perchè sono più per l'ipotesi che il problema non sia tanto il clock (ho un quarzo esterno a 16mhz montanto di default) ma la disattivazione della programmazione via SPI.
L'idea mia era di prendere il circuito in oggetto del link postato sopra ed attaccarci direttamente il mio 1284p e dargli na bottarella (nessun adattatore, salderei dei microfili)
Se riesco a recuperarlo riprogrammando  i fuse bene, altrimenti lo butto.
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

leo72


Code: [Select]


C:\avrdude -c usbasp -p atmega1284p -P usb -e -F


Prova specificando una velocità di comunicazione, tipo "-b 19200" come si fa con l'ArduinoISP. Magari abbassando il baudrate riesci a risolvere.

PS:
spero che il parametro "-F" tu lo abbia usato solo in questo caso. Non va mai usato normalmente perché in caso di una comunicazione imperfetta (e può capitare, chi ha programmato centinaia di chip può confermartelo) forzi la scrittura provocando spesso danni.

Michele Menniti

Allora la strada unica è quella della programmazione HV, la parte più fastidiosa sono i collegamenti, per quelli fai riferimento al mio articolo, il software di mightyohm dovrebbe essere totalemnte compatibile, io i primi esperimenti li ho fatti con quel firmware, poi l'ho stravolto perché ho creato uno stand-alone ed aggiunto tutti i micro ATMEL PDIP, ma i segnali sono obbligati, ti basta scegliere ATMEGA328P dal menu per attivare la programmazione parallela compatibile col 1284 e sei a posto, ma il micro lo devi certamente togliere dal circuito, o comunque devi isolare tutte le piste, magari un bel tagli netto e poi le ricongiungi :)

Leo: da quando intervieni senza leggere i post precedenti? :P (leggi dopo il punto 6 del mio primo post)
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


Leo: da quando intervieni senza leggere i post precedenti? :P (leggi dopo il punto 6 del mio primo post)

Non avevo letto bene  :smiley-sweat:
Per il discorso "porta" a seconda dei programmatori si può usare una sintassi diversa per specificare la porta a cui sono attaccati. Non so l'usbasp se accetta anche "usb" al posto del percorso esatto.

flz47655

Confermo che usbasp accetta usb al posto degli altri parametri

Col TQFP se ha briccato è praticamente spacciato, dovrebbe dissaldarlo/riprogrammarlo/risaldarlo, questo è proprio il punto debole degli AVR, per sperimentare è sempre meglio andare di DIP  ]:D

Io avevo provato a costruire il Mightyohm su.. breadboard, guarda che macello era venuto



Mancano delle connessioni nella foto ed avevo il micro in DIP, ha funzionato ma ai successivi micro briccati ho comprato il Dragon :D
Non ne vale la pena perdere così tanto tempo per sbriccare un mico.. se te sei in TQFP e vuoi saldare/dissaldare mi raccomando dotati di un programmatore HV perlomeno per riprogrammare il micro e non provare su breadboard

Ciao

Go Up