Aiuto per creare un programma file HEX per pic (MPLab X)

Pubblicità

fedeZ123

Nuovo Utente
Messaggi
41
Reazioni
1
Punteggio
28
Ciao a tutti,
Avevo aperto un topic poco tempo fa perchè avevo dei problemi a far funzionare la scheda programmatore, pensavo di riuscire poi a scrivere facilmente un programma dato che ci sono tantissimi video e guide, invece non riesco proprio a venirne a capo.
Ho visto che ci sono sempre delle differenze e non ci capisco nulla, per esempio oscillatore interno o esterno che il mio pic non ha l'oscillatore interno (pic16f73) da quanto ho letto, posso anche comprare un altro pic con l'oscillatore interno per iniziare a scrivere il mio primo programma, ma non mi sembra il caso anche perchè ho parecchi oscillatori al quarzo, condensatori di ogni tipo e non credo mi manchi qualcosa per iniziare, ma non riesco davvero a creare il codice...
Su MPLab x non riesco a compilarlo e non riesco a capire il perchè, ovviamente vorrei fare una cosa molto semplice per iniziare ( lampeggiare un led).
forse manca qualcosa nell'IDE, qualche programma, ho seguito molti video ma c'è sempre qualcosa che non coincide, o il video è vecchio e non trovo i file da scaricare o le scritte che dovrebbero colorarsi rimangono nere ma non riesco a capire cosa devo fare, qualcuno gentilmente potrebbe darmi una mano?
Sono sicuro che è una cosa molto semplice devo solo scrivere il mio primo codice hex su mplab ma non funziona...
 
Tanto semplice non credo...cmq devi confrontare il datasheet dove trovi tutte le impostazioni per il tuo pic...come hai gia accennato ogni pic ha determinati valori e opzioni...se il tuo non ha un oscillatore interno devi selezionare l'opzione per l'esterno...poi al massimo lo puoi montare accompagnato da dei condensatori da 20 o 22 pf ceramici non elettrolitici(molte volte lo schema per il montaggio lo trovi nel datasheet)...cmq ti consiglio prima di programmare di studiarti un pò come è fatto e come funziona un pic...una volta che capisci come funziona poi quando programmi capirai anche come impostare il tuo pic.
 
Tanto semplice non credo...cmq devi confrontare il datasheet dove trovi tutte le impostazioni per il tuo pic...come hai gia accennato ogni pic ha determinati valori e opzioni...se il tuo non ha un oscillatore interno devi selezionare l'opzione per l'esterno...poi al massimo lo puoi montare accompagnato da dei condensatori da 20 o 22 pf ceramici non elettrolitici(molte volte lo schema per il montaggio lo trovi nel datasheet)...cmq ti consiglio prima di programmare di studiarti un pò come è fatto e come funziona un pic...una volta che capisci come funziona poi quando programmi capirai anche come impostare il tuo pic.
Grazie della risposta. Sto ancora riprovando e riprovando adesso sono riuscito a capire tutto il procedimento per generare il file hex che servirà per la programmazione del pic, ma non mi funziona nulla riguardo alle funzioni di delay e non riesco a capire perchè. MPLab non identifica la funzione DelayMs ( e #define "delay.h" o "delays.h") e nemmeno _delay_ms e non riesco a far funzionare code configurator perchè mi dice che il mio device non è supportato.
Metto degli screenshots
Cattura8.webp Cattura9.webp
 
Ultima modifica da un moderatore:
La libreria delay.h dovresti salvarla nella cartella del progetto, altrimenti non la trova...se invece è gia inclusa nel programma allora devi fare #include <delay.h> ...come vedi dalla screen che hai postato ti avvisa che la libreria stessa non è stata trovata...
 
La libreria delay.h dovresti salvarla nella cartella del progetto, altrimenti non la trova...se invece è gia inclusa nel programma allora devi fare #include <delay.h> ...come vedi dalla screen che hai postato ti avvisa che la libreria stessa non è stata trovata...
Ed è proprio questo il problema che in questo momento non riesco a risolvere, come vedi la libreria ho già provato a includerla ma non c'è, non so dove trovarla, se non sbaglio va inserita dove c'è scritto header files in quella cartella, ma non riesco a trovarla neanche su internet, ho letto che dovrebbe essere già inclusa insieme a xc8...
 
Ed è proprio questo il problema che in questo momento non riesco a risolvere, come vedi la libreria ho già provato a includerla ma non c'è, non so dove trovarla, se non sbaglio va inserita dove c'è scritto header files in quella cartella, ma non riesco a trovarla neanche su internet, ho letto che dovrebbe essere già inclusa insieme a xc8...
Allora fai cosi senza includere la libreria delay, ma solo la XC.h e usa il comando _delay_ms(5) il valore 5 è un esempio...
 
Allora fai cosi senza includere la libreria delay, ma solo la XC.h e usa il comando _delay_ms(5) il valore 5 è un esempio...
Ho provato, anche a mettere <xc.h> XC maiuscolo e "xc.h", poi void main() e sotto appunto _delay_ms() ma mi da subito errore allo stesso modo, e il compilatore è installato... versione 2.40 c'è scritto nella cartella l'ho installato da poco...
 
Forse è meglio se utilizzi il plugin che semplifica un pò le cose...ti posto un video che ho trovato giusto qualche minuto fa, che spiega come utilizzare questa funzione...io non l'ho mai provato, ma sembra molto interessante...
 
Forse è meglio se utilizzi il plugin che semplifica un pò le cose...ti posto un video che ho trovato giusto qualche minuto fa, che spiega come utilizzare questa funzione...io non l'ho mai provato, ma sembra molto interessante...
Ho già guardato questo video, e è proprio quello che mi ha fatto pensare che dovevo scaricare questo Code Configurator, sono bloccato a 19:20 perchè clicca sull'icona ma a lui parte, a me viene fuori la schermata che ho appunto messo sopra, che dice "The selected device is not supported ecc..."
Cosa devo fare?
 
Ma hai selezionato il simulatore o altre periferiche di simulazione come pickit 4 o altro?Poi nel video utilizza un Pic diverso dal tuo dunque dovrai personalizzare alcuni parametri e controllare che il tuo abbia un oscillatore interno, altrimenti ti restituira errore...se cmq segui la 100% la sua guida ti confermo che funziona...ricontrolla passo per passo...

P.s: scusa errore di battitura per delay il comando è __delay_ms(5) ... i primi sono due underscore poi "dalay" un underscore e in fine tra parentesi il valore...
 
P.s: scusa errore di battitura per delay il comando è __delay_ms(5) ... i primi sono due underscore poi "dalay" un underscore e in fine tra parentesi il valore...
Ahh ok, adesso funziona è venuta subito la scritta blu.
Per quanto riguarda il simulatore ecco ho appena visto sul forum di microchip che il programmatore K150 (quello che ho io) non è più disponibile in mplab...
Però io ho imparato a usare il relativo programma e funziona benissimo, vorrei utilizzare questo se possibile, mi scoccia anche un pò comprarmi il pickit o altro device adesso anche perchè lo comprerei a poco prezzo che ci vuole un mese prima che arrivi e non mi va di aspettare...
Infatti non ho selezionato niente nelle periferiche perchè per il K150 non c'è niente...
Poi gli unici pic da poter programmare (perchè ho solo quelli in questo momento) sono i pic 16f73 che ho già controllato, non hanno l'oscillatore interno. Ma posso fare anche con un oscillatore al quarzo ne ho alcuni...
Se non ho gli strumenti adatti io potrei anche comprarmi dei pic con l'oscillatore interno e un altra scheda programmatore ma non posso usare quella che ho e il pic che ho?
Forse adesso che posso usare la funzione delay dovrei poter semplicemente compilare un codice con mplab e inserirlo poi nel pic con la scheda K150, senza dover usare Code Configurator... non ho ancora ben capito a cosa serve...
Metto due screenshots di un altro tutorial che ho guardato, in questo caso però è solo col simulatore, ma per il pic che ho io 16f73. Ecco se compilo questo codice e genero il file HEX con mplab, poi posso programmare già il pic in teoria e potrei fare lampeggiare un led?
In ogni caso ci provo subito... dimmi tu se mi sbaglio comunque...
No ho provato e non compila il codice e naturalmente non so quale sia il motivo... ma è effettivamente possibile programmare i pic con questa scheda K150 che ho io? Ho visto diversi video abbastanza recenti in cui lo facevano, se l'avessi saputo dall'inizio che sarebbe stato più semplice imparare a programmare con il pickit avrei comprato quello.
 

Allegati

  • Cattura di schermata (549).webp
    Cattura di schermata (549).webp
    11.1 KB · Visualizzazioni: 27
  • Cattura di schermata (548).webp
    Cattura di schermata (548).webp
    3.2 KB · Visualizzazioni: 25
Ultima modifica:
Si puoi usare il K150 per programmare il pic che hai...ma non viene supportato il file hex del mplab, almeno che tu non utilizzi una vecchia versione...oppure puoi optare per qualche compilatore un pò più datato, che lavora in assembly o basic(sono un pò più ostici da capire come linguaggi,ma con pazienza si riesce a combinare qualcosina)...con quest'ultimi non dovresti avere problemi...io uso pickit 3 con mplab...il K150 è da un bel pò che non lo usavo,ma ti assicuro che con il giusto file hex funziona alla grande(puoi programmare anche il pic di arduino)...testato io stesso!

Per il Code Configurator è di per sè una manna dal cielo...con quello puoi settare tutto il pic senza troppi sbattimenti...senza saresti costretto a settare le opzioni del PIC verificandole tramite datascheet... equivale a perdere un sacco di tempo e tirare un sacco di m....semplica dell'80% le cose...la differenza la noterai quando utilizzerai altri compilatori...
 
Ultima modifica:
Si puoi usare il K150 per programmare il pic che hai...ma non viene supportato il file hex del mplab, almeno che tu non utilizzi una vecchia versione...oppure puoi optare per qualche compilatore un pò più datato, che lavora in assembly o basic(sono un pò più ostici da capire come linguaggi,ma con pazienza si riesce a combinare qualcosina)...con quest'ultimi non dovresti avere problemi...io uso pickit 3 con mplab...il K150 è da un bel pò che non lo usavo,ma ti assicuro che con il giusto file hex funziona alla grande(puoi programmare anche il pic di arduino)...testato io stesso!

Per il Code Configurator è di per sè una manna dal cielo...con quello puoi settare tutto il pic senza troppi sbattimenti...senza saresti costretto a settare le opzioni del PIC verificandole tramite datascheet... equivale a perdere un sacco di tempo e tirare un sacco di m....semplica dell'80% le cose...la differenza la noterai quando utilizzerai altri compilatori...
In effetti non mi sembra male, cosa intendi per pic di arduino, Il microcontrollore Atmega328 giusto?
Mi diresti un nome di un compilatore da scaricare che vada bene per me? Se c'è uno che non giri lento che non consumi tanta memoria perchè ad esempio mplab ci mette un pò a caricare, 5 min poi va benissimo, ma tipo visual studio è lentissimo, è colpa mia del mio computer che attualmente sto usando un piccolo notebook, ma visual studio non va proprio.
Comunque non ci sto ancora capendo niente, capisco perchè programmare e memorizzare tutte queste cose è parecchia roba, pic, datasheet, mplab, compilatore, oscillatore al quarzo, con arduino fino a adesso è stato 10 volte più semplice (non che sia stata una passeggiata).
Perchè il file hex di mplab non va bene?
 
Si l'atmega328...ho fatto un paio di prove e non ho riscontrato problemi con MPLAB X e il software del K150 per la scrittura del file HEX...unica cosa che i programmi non partono sempre dall'inizio ma avvolte sono il fondo o a metà...scorri tutto il programma e vedrai che tra i "3FFF" ci trovi pure il tuo programma.
Ti posto la foto del programma che ho scritto ieri, giusto per fare una prova...
P.s. ho provato anche a programmare l'hex creato con MPLAB X con il K150 e funziona perfettamente.
Immagine 2022-09-12 204316.jpg
 
Ultima modifica:
Che significa pic di arduino ? Pic e avr sono architetture totalmente diverse, seppur sempre 8 bit.

Giusto per vs. informaizone, In Linux, tutte queste cose, IDE, mplab etc non sono affatto necessarie. Io utilizzo pickit2.

Si crea un semplice makefile per compilatore C
Codice:
# Toolchain location
CC=/opt/microchip/xc8/v2.10/bin/xc8-cc
...

E per programmare
Codice:
sudo pk2cmd -PPIC16F1455 -M -Fimage.hex
 
Pubblicità
Pubblicità
Indietro
Top