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?
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
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.
flz, mi pare che tu non abbia afferrato il concetto di Astro:
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
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.
niki77:
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.
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? (leggi dopo il punto 6 del mio primo post)
Non avevo letto bene
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.
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 ]
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
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
Grazie dei consigli,
comunque la foto è venuta veramente male, talmente male che non si vede
Appena ho tempo lo dissaldo e provo a riprogrammarlo hv saldando dei fili, come ho detto, se riparte bene, altrimenti CICCIA!
Ma sulle linee ISP (MOSI/MISO/SCK/RST) hai collegato altro? Non è che forse c'è qualcosa che dà noia ai segnali? Magari finora ti era andata bene..
No, purtroppo non ci sta altro collegato, o meglio c'era ma poi quando ho visto che dava problemi ho ridotto tutto al minimo indispensabile per cercare di riprendere il micro, ho lasciato solo il quarzo il reset e l'icsp.
Ripeto, è successo tutto a seguito di una scrittura fallita, molto probabilmente proprio dei fuse, però non sò dirlo con certezza.
Stasera gli dò una asciugatina ai capelli
Chip asportato senza problemi.
Ora devo provare a sbrinarlo in hv.
Ho reperito lo schema di collegamento di un 328p, se rispetto il collegamento dei pin (non tramite numero ma tramite porta,numero, es portb 4 su portb 4 )posso utilizzare lo stesso o devo trovarmi quello specifica per il 1284p ?
Niki, a memoria ricordo che le porte fossero diverse, io certamente me le sono dovute studiare sul datasheet; ti avevo consigliato di scaricarti (è gratis!) il mio articolo dal sito Internet, lì hai tutti gli schemi di collegamento per tutti i tipi di micro in package PDIP; nel tuo caso fai corrispondere quelli del 1284 pdip all'smd.
L'invito vale per tutti; la cosa non è ordinaria, ma straordinaria; nasce dal fatto che l'impaginatore, ricopiando il mio schema Eagle (loro usano un programma tutto loro che non è in grado di importare i file Eagle), fece un mare di casini sulla Rivista, purtroppo non mi mandarono la bozza definitiva che chiedevo da 10 giorni e successe il bordello, per porre rimedio decisero di rendere libera l'intera puntata in forma pdf scaricabile, quindi approfittate, quello schema mi è costato mesi di studio e fatica, a maggior ragione perché ho difficoltà con l'inglese e non sono certo un elettronico.
Se invece ti vuoi divertire allora non insisto
Confermo, le porte sono diverse. Quindi va preso il datasheet del 1284 e ritrovata la corrispondenza tra i segnali.
secondo il tuo articolo michele per la mia mcu dovrei usare connettore test1 , quindi portb, portd xtal1 e pa0, giusto?
Ovviamente tutti correttamente collegati come indicato, e per il firmware vado liscio modificando lo sketch di mightyohm ?
Grazie
Sì. la TEST 1 è per tutta la famiglia PDIP 40 pin W, non ricordo ora se la tua versione ha qualche pin in più quindi ovviamente ti devi rifare ai segnali e non al numero di pin (ma questo lo sai meglio di me :)). Il firmware di mightyohm dovrebbe andare al primo colpo, ma cerca la versione 2.0, sono ragionevolmente sicuro di non aver mai "spostato" un segnale, anche perché tutti i pin del 328P programmatore sono occupati quindi non avrei tratto alcun vantaggio dal farlo, come selezione dovrai scegliere l'atmega328P, per abilitare la programmazione parallela, i segnali sono identici. Invece attenzione ai segnali RST e RESET: il primo è il reset del micro programmatore, il secondo invece è un circuito "interruttore" a transitor, che invia i 12V al reset del tuo 1284 durante le fasi di programmazione, ed è controllato da un pin del micro programmatore. Il circuitino è facilmente replicabile, ti serve una corrente massima di 100mA, ma sono esagerati...., solo che se il tuo micro ha un pur minimo danno (a volte ininfluente sul funzionamento) potrebbe richiedere questa corrente per qualche istante, meglio prevederla.
Niente da fare, ho provato a riprogrammarlo in HV tramite schema e firmware di mightyohm , ma si pianta tutto al momento del 'burning fuses' .
Ci sono troppe variabili in gioco, e il chip potrebbe anche essere danneggiato, anche se non ho la più pallida idea di cosa lo abbia potuto danneggiare!
Ho visto che negli schemi del link la versione 1 utilizzava resistenze da 1k su praticamente tutte le linee, mentre nella versione 2 non ne usa nemmeno 1
IO ho comunque provato sia con che senza.
Ho notato che eseguendo la procedura indicata nel sito, praticamente il chip deve essere messo in un secondo momento.
Ho ipotizzato semplicemente che, per entrare in modalità programmazione parallela, la stessa mcu deve essere avviata praticamente con 12v sul pin di reset, infatti le operazioni preliminari fanno in modo che tale segnale venga portato alto se si specifica una determinata modalità (nel mio caso ATMEGA , scelta 1 ).
Ho dato una guardata in giro ma non ho trovato grandi indicazioni sulla programmazione hv, anche nel datasheet stesso del 1284p non ho trovato cenni.
Sapete indicarmi qualcosa da leggere?
Tiello da parte e quando avrai diversi chip non funzionanti ed un programmatore HV magari gli potrai resuscitare, inutile tribolare per un solo chip
Ciao
niki77:
Ho visto che negli schemi del link la versione 1 utilizzava resistenze da 1k su praticamente tutte le linee, mentre nella versione 2 non ne usa nemmeno 1
IO ho comunque provato sia con che senza.
non servono a nulla.
Ho notato che eseguendo la procedura indicata nel sito, praticamente il chip deve essere messo in un secondo momento.
Ho ipotizzato semplicemente che, per entrare in modalità programmazione parallela, la stessa mcu deve essere avviata praticamente con 12v sul pin di reset, infatti le operazioni preliminari fanno in modo che tale segnale venga portato alto se si specifica una determinata modalità (nel mio caso ATMEGA , scelta 1 ).
questa cosa serve più che altro per il fatto che i due pin seriali del mega328 programmatore sono "implicati" sia nella programmazione che nella comunicazione seriale (menu, ecc.); il chip viene messo dopo solo perché disturberebbe la comunicazione seriale, a mia memoria altro non serve; qualunque comando di lettura/scrittura sul target deve essere accompagnato dall'applicazione dei 12V al pin reset.
Ho dato una guardata in giro ma non ho trovato grandi indicazioni sulla programmazione hv, anche nel datasheet stesso del 1284p non ho trovato cenni.
Sapete indicarmi qualcosa da leggere?
sì, le altre tre puntate del mio articolo sul Programmatore HV :D, ritengo siano fortemente esaustive, "purtroppo" sugli altri articoli non è successo nulla di grave e quindi quelli sono reperibili solo tramite Rivista.