Ciao a tutti ! è possibile aggiornare il firmware di un pic "16F876" direttamente nel CS in cui lavora ? senza doverlo togliere dallo zoccolo e usare un programmatore esterno. Naturalmente il CS in questione ha già una porta seriale per il controllo di alcune funzioni. Grazie a tutti fin da ora
"Geppo" ha scritto nel messaggio news:4b0492f9$0$34599$ snipped-for-privacy@reader1.news.tin.it...
La via più breve è quella di implementare un bootloader, ovvero un programma residente, che si occupa della riprogrammazione del dispositivo tramite la ricezione di comandi sulla linea seriale. Questo comporta però una ricompilazione del fw originale per lasciare spazio al loader in flash, inoltre occorre verificare se negli 8k del dispositivo c'è spazio sufficiente per farci stare anche il loader.
La soluzione che non richiede di mettere mano al fw è la programmazione in circuit. Devi però verificare di avere a disposizione in modalità esclusiva (anche per il solo tempo necessario alla programmazione) i pin PCD PGD e poter comandare MCLR verificando che quando questo si porta alla tensione di programmazione (circa 12V) non si creino danni al rimanente circuito.
Approfitto del thread per chiedere spiegazioni su un aspetto dei bootloader "commerciali"
giorni fa ho dovuto ripristinare il mio iPhone causa interruzione dell'aggiornamento del firmware
in ogni caso, leggendo fra i vari forum, ho imparato che è possibile avviare l'iphone in due modalità distinte quando si parla di recupero....
la recovery mode e la DFU mode (Direct Firmware Upgrade)
Posso supporre dai nomi il loro funzionamento generico , mi chiedo però il perchè di questa scelta... (Ho notato che in entrambe le modalità la apple ha sviluppato un driver windows per supportarlo...immagino sia per riuscire a sfruttare maggiore banda disponibile sulla usb...)
Un altra curiosità era la difficoltà nell'implementare soluzioni di questo tipo anche nei nostri piccoli "progetti" amatoriali...
Ho decine di applicazioni che girano con bootloader con 16F876, 16F876A e fratelli.... Quindi la fattabilità c'è. Altra cosa è la convenienza: oggi ci sono 18F compatibili con 16F che costano meno ed hanno maggiori potenzialità. Se però il fw è già scritto e va bene...non vedo il motvo di cambiare.
Grazie a tutti per le risposte! Ho trovato il bootloader del 16F876 con clock a 10 mhz. Ho provato a programmarlo e utilizzando il suo software pc sono riuscito a caricare il programma ma alla fine il programma originale non partiva. Ho letto che ad inizio codice dovrei aggiungere qualche riga di programma, io programmo con Mikrobasic. Qualcuno sa darmi qualche altra dritta ;-) ?
Graz a tutti fin da ora !
"ice" ha scritto nel messaggio news:0FDNm.96666$ snipped-for-privacy@twister2.libero.it...
"Geppo" ha scritto nel messaggio news:4b071df0$0$34595$ snipped-for-privacy@reader1.news.tin.it...
Devi inserire le opzioni di compilazione nel tuo programma in modo da 'creare' spazio per il bootloader. In genere i bootloader ridiedono o nella parte bassa oppure nella parte alta della memoria di programma. Per il pic in oggetto sarebbe preferibile adottare un loader residente nella parte alta, in modo da lasciare libere le aree di gestione degli interrupt. Sicuramente sul sito dal quale hai scaricato il loader ci sono anche indicate le modifiche da apportare al tuo fw per renderlo compatibile. Puoi anche dare uno sguardo qui
Ciao Roberto grazie fin da ora per le tue risposte! Ti chiedo questa info se puoi aiutarmi ulteriormente Io ho fatto un programma utilizzando mikrobasic. composto cosi :
dove dovrei mettere il comando che mi fa iniziare il programma ad un certo intervallo di memoria che per il 16F876 penso sia 1FFFF ? prima riga del MAIN() ?
Grazie mille!
"Roberto P." ha scritto nel messaggio news:he84vb$d1e$ snipped-for-privacy@tdi.cu.mi.it...
"Geppo" ha scritto nel messaggio news:4b0acfbf$0$8854$ snipped-for-privacy@reader5.news.tin.it...
Non conosco il mikrobasic... Dovrebbe comunque avere una istruzione ORG che indica al compilatore le aree di memoria da utilizzare per non sovrascrivere il loader. Sicuramente fra gli esempi installati con il tuo linguaggio c'è almeno un esempio di utilizzo del bootloader. Sono quasi certo anche che ci sia già anche il bottloader..
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.