MPLAB, Pic Basic Pro, ICD2 e librerie... Help me !

Dec 01, 2013 20 Replies

Buongiorno a tutti,



Premetto che sono un principiante con i PIC , diversi anni fa ho fatto alcune cosette in Assembler ma niente di piu'.



Sto cercando di far andare il sistema in oggetto per un piccolo progetto hobbistico, ho configurato MPLAB in modo che usi il compilatore PBP , per fare una prova ho trovato un programmino in PBP e ho provato a compilarlo, inizia, ed e' gia' un successo !! ;-)



Ma mi rende diversi errore, e' normale lo so, ma non riesco a capire dove posizionare le librerie che i comandi "include" chiamano, per esempio la libreria LCD.bas , utils.bas e convert.bas.



La LCD.Bas l'ho trovata tra i sample di PBP , ma non riesco a capire in che direttorio metterla , e come dire a MPLAB dove trovarsi le librerie da "cucire" al programma.



Sarebbe anche interessante un link ad un mini corso o ad un tutorial possibilmente semplice (per venire incontro alle mia capacita' mentali, ho passato ampiamente i 57 anni, e come dice mio papa di 82 "il rincoglionimento e' lento ma costante "



Ringrazio in anticipo a chi mi dedica un po' del suo tempo per darmi qualche suggerimento utile.



Saluti Quando i ricchi si fanno la guerra, sono i poveri che muoiono. Jan-Paul Sartre

Posso segnalarti un bel progetto per utilizzare in modo semplice il PIC

18F2550, nel quale sono in minima parte coinvolto?

formatting link

Se può interessarti...

Il 01/12/2013 11.25, QuelloGrosso ha scritto:

Le librerie sono interne al compilatore, con gli include si inseriscono dei pezzi di codice che di solito sono riutilizzabili. Il manuale che trovi nel sito è molto dettagliato e comprensibile naturalmente in inglese, dubito si trovi qualcosa in italiano. Posta il codice che vediamo cosa non va Bye

Interessante ma cosa ha di piu'(o di meno) di un pic-web olimex?

Comunque per scenari complessi come la domotica alla fine e' meglio prendere un server linux x86 o arm dual core (tutto cablato su ethernet) e lasciare ai pic solo lo scenario locale!

Giulia

Di piu: che te lo autocostruisci e costa quasi nulla... di meno, molte cose :) ma io sono per l'onanismo elettronico...

...ma, perchè mi parli di domotica? ;)

Il 01/12/2013 11:25, QuelloGrosso ha scritto:

Per selezionare le directory di include per MpLab, puoi andare in: Project Set Language Tool Locations.

A questo punto, non usando il Basic, non posso essere piu' preciso, ma dovresti trovare una linea che fa riferimento al tuo compilatore e cliccando su quella linea, avere disponibili i vari menu' di setting.

Probabilmente quello che ti occorre per compilare il programma e' pero' questa seconda parte del mio messaggio.

Se invece devi dire al compilatore dove si trova la directory con i sorgenti del programma, vai in: Project Build Option Project Include Search Path Qui devi includere il path per la directory di programma che stai usando.

ciao Angelo

Buonasera,

Ringrazio tutti per i consigli, qualcosa comincia a girare , ho provato a prendere un semplice programma in PBP per scrivere qualcosa sull'LCD, il compilatore non mi da errori , se provo a abilitare l'ICD2 lo fa correttamente , ma mi da un errore "Invalid target device id (expected=0x89, read=0x83)", il PIC e' un 16F628A e l'ICD2 e' settato per questo PIC e ha scaricato con successo il sistem operativo per il 16F

Di sicuro mi manca qualcosa nel programma , come le dichiarazioni dei fuse e altre cose, come la dichiarazione della direzione delle porte TRISx che usavo con l'assembler, vi chiedo un aiuto per indirizzarmi e capire cosa non quadra...

Vi ricordo che sono un "absolute beginners" , non date niente per scontato , anche le cose piu' banali.

Grazie in anticipo.

Ecco la lista dei messaggi dall'ICD2 :

Connecting to MPLAB ICD 2 ...Connected Setting Vdd source to target ICDWarn0020: Invalid target device id (expected=0x89, read=0x83) ...Reading ICD Product ID Running ICD Self Test ...Passed MPLAB ICD 2 ready for next operation ICDWarn0015: Program memory has changed since last program operation? Continue with Debug operation? Running Target Entering Debug Mode ...Programming GOTO 0x00 command ...Restoring users code ICD0083: Debug: Unable to enter debug mode. Please double click this message for more information. ICD0069: Debug: Unable to run target

Questo e' il programmino, ho adattato le porte al mio hardware, la porta A ha la resistenza di pull'up da 4.7k :

' Define LCD registers and bits Define LCD_DREG PORTA Define LCD_DBIT 4 Define LCD_RSREG PORTB Define LCD_RSBIT 5 Define LCD_EREG PORTA Define LCD_EBIT 4

Pause 500 ' Wait for LCD to start up

mainloop: Lcdout $fe, 1 ' Clear screen Pause 500 ' Wait .5 second

Lcdout "Hello" ' Display "Hello" Pause 500 ' Wait .5 second

Lcdout $fe, $c0, "World" ' Move to line 2 and display "World" Pause 500 ' Wait .5 second Goto mainloop ' Do it forever

End

Per la robotica ci vuole molta piu' potenza di calcolo , e per l'automazione industriale ci vogliono fior fiore di certificazioni, apparte alcune applicazioni residuali (radioamatori ?) cosa può averci una presa sulla massa dei DIY ?

Giulia

Il 02/12/2013 23:48, QuelloGrosso ha scritto:

Prova cosi':

MpLab - Debugger - Settings - Status

Run self test.

I test sono tutti Ok? SI!... Bene, procediamo.

MpLab - Debugger - Settings - Power Vdd, Vpp e Vpp Icd2 sono tutti Ok? Si! ... allora e' un casino, non so cosa dirti! A parte gli scherzi, fai prima questi test e vediamo se si capisce cosa non funziona. Mi risulta che alcuni Icd2 abbiano bisogno di alimentazione esterna per alimentare il circuito da debuggare; puoi evitare di alimentare l'icd2 alimentando direttamente il tuo circuito di prova; attenzione che se il chip non e' alimentato, il debugger ti segnala errore! ciao Angelo

P.S. Per i fuses: Configure - Configuration bit

I fuses devono risultare uguali a quelli predisposti da programma; se non e' cosi', per ora, togli la spunta alla casella in alto "Configuration bit set in code" e setta manualmente i vari fuses. Questo pero' non ha niente a che fare con l'errore dell'Icd2!

Deh ha scritto:

Tutti OK !

Si, tutti OK ! , nell'ordine 5.00 12,86 12,86 volt

L'ICD2 ha solo l'alimentazione dall'USB .

Il mio circuito e' alimentato per conto suo e il self test dell'ICD se ne accorge , se lo disalimento ho errori nel self test di Vdd e di MCLR program

attenzione che se il

Ho il dubbio che il PIC non stia facendo oscillare il quarzo ( sempre per una questione di Configuration bit ), infatti l'ICD dice anche che non riesce a mettersi in contatto con la porzione di Debug residente nel PIC, cosa dici ho detto una stupidata ?

Mo attacco l'oscilloscopio e vedo se oscilla.

Nel frattempo ti ringrazio, vedo di fare qualche altro passo avanti.

Saluti Quando i ricchi si fanno la guerra, sono i poveri che muoiono. Jan-Paul Sartre

Il giorno domenica 1 dicembre 2013 11:25:46 UTC+1, QuelloGrosso ha scritto:

usa atmel. ti sconsiglio di usare i pic e la microchip, per lavorarci non è bona. e ti consiglio di imparare il c.

Forse ho capito perche non riesco ad avere controllo sul debugger, per il PIC16F628A serve per forza un Header , vedi a questo link:

formatting link

In pratica e' un PIC montato si di una basetta che ha all'interno del firmware che consente all'ICD2 di dialogare con il PIC .

In passato non ne avevo mai sentito parlare, sto pensando a cambiare il modello di PIC , peccato che ho gia fatto il CS per il PIC16F628 , poco male , prima cerco se c'e' un pic compatibile Pin to Pin, magari uno delle serie 18F che mi sembra migliore.

Avete un suggerimento da darmi?

Grazie in anticipo

Saluti Quando i ricchi si fanno la guerra, sono i poveri che muoiono. Jan-Paul Sartre

Matteo ha scritto:

Grazie Matteo ,

se hai visto la mia risposta all'altro post , sono in procinto di ridisegnare il PCB , a questo punto sto pensando anche di cambiare la famiglia e magari usare gli AVR .

Il mio progetto prevede di avere un LCD 4 x 16 caratteri , mi serve un counter a 16 bit , 4 pulsanti per settare qualche parametro e un ingresso dove arriva un segnale TTL di cui devo misurarci la frequenza.

La frequenza e' bassa, arriva a pochi kHz , devo leggerla e fare qualche calcolo e mostrare il risultato sul LCD

Riesci ad indirizzarmi su qualche AVR che sia OK per questo progettino hobbistico?

Servono anche i classici supporti per compilare , magari un Basic , non ho la forza di mettermi a imparare il C , e un debugger ( se c'e' e' meglio ! )

Magari un corso per "absolute beginner" sarebbe ideale.

Grazie in anticipo per ogni aiuto.

Saluti Quando i ricchi si fanno la guerra, sono i poveri che muoiono. Jan-Paul Sartre

Il giorno giovedì 5 dicembre 2013 00:51:33 UTC+1, QuelloGrosso ha scritto :

½ bona.

ti posso consigliare un qualsiasi atxmega. se non ti serve l'usb un atxmega

64a3b (vado a memoria quindi controlla) dovrebbe fare al caso tuo. se visiti il sito atmel puoi selezionare il micro che più fa al caso tuo. confronta la disponibilità su farnell (o rs, o distrelec, o digikey) per sapere cosa puoi comprare effettivamente. con il programmatore avr dragon (che costa poco) ti puoi interfacciare con la quasi totalità dei micro 8 bit atmel. l'ambiente di sviluppo è gratis e con molti esempi (in C, chiaramente). anche il compilatore e l'otimizzatore, lo è. questo non succede con microchip, che purtroppo fa pagare i compilatori e l i fa fare a terze parti. ho trovato spesso, quando sono stato obbligato a l avorare con microchip, molti bug sia nei compilatori, sia nel debugger. se non sei pratico di C, ti consiglio di imparare, perchè è veramente u tile e decisamente molto più pratico dell'assembler. sotto tutti i punti di vista. non mi dilungo perchè non credo che qui sia il caso, ho voluto dare solo un parere, dato che mi trovo tutti i gg davanti a queste cose.

Questa e-mail è priva di virus e malware perché è attiva la protezion e avast! Antivirus. http://www.avast.com

Il 05/12/2013 00:36, QuelloGrosso ha scritto:

Se vuoi rimanere in ambito Microchip, ti consiglierei, per lo sviluppo ed il debug, di prendere un micro della serie 18F; il 18F4520 va benissimo, poi lo metti su una bread board (scheda per prototipazione rapida senza saldature), se vuoi ci metti il quarzo (piu' facile da gestire per un principiante), una resistenza da 4k7 o 10K dal pin 1 al +

5 V, 5 fili volanti (non piu' lunghi di dieci cm.) dai pin 1-39-40-11 e 12 al cavetto di uscita dell'Icd2, porti l'alimentazione a 5 V. e inizi a giocare! Dopo che avrai fatto tutte le prove ed i debug che vuoi, cambi il tipo di micro in MpLab, ricompili lo stesso programma che hai usato per il 18F4520 e programmi il 16F628; sei pronto! Unica avvertenza, ma mi sembra inutile dirlo, devi usare i pin che poi avrai anche sul 18 Pin, certamente se usi porta E, poi il programma non compila. ciao Angelo

Deh ha scritto:

Grazie del suggerimento, magari dico una stupidata, ma tra la famiglia

16F e la 18F non ci sono differenze sulla gestione delle pagine di memoria, senza contare altre complicazioni che neanche immagino ?

Da quello che mi dici sembra di no, quindi in pratica mi dici di usare questo processore , usando pari pari gli I/O della mia applicazione, sviluppare un software che funzioni al 100 % su di un hardware sperimentale e poi, dopo aver cambiato il micro con il 16F628A ricompilare e dovrebbe andare tutto, Mi sembra un'operazione da Mago Silvan...

Ma "davero davero" dici che funziona ?

Sono Basito !

Potrebbe essere una strada percorribile, ci faccio un pensierino, non tanto per riutilizzare il PCB ( che ho fatto in stira e ammira ) , quindi a costo quasi zero, ma per il tempo che mi costerebbe rifare il PCB , fare la basetta nuova, forarla, popolarla etc...

Ti faccio sapere come ne vengo fuori.

Grazie comunque, mi apri un mondo nuovo !

Saluti Quando i ricchi si fanno la guerra, sono i poveri che muoiono. Jan-Paul Sartre

MarKoZaKKa ha scritto:

Ciao Marko, COMPLIMENTI, Ho guardato il tuo sito:

formatting link

MOOOLTO INTERESSANTE !!!

Sopratutto per me che mi interessa risolvere il MIO problema piuttosto che imparare un linguaggio di programmazione , se avessi vent'anni lo farei , ma ne ho parecchi in piu e non credo che il tempo speso per imparare il C mi frutti qualcosa , mentre risolvere i miei problemini mi riempie di soddisfazione .

Pensa che sto meditanto di rifare il PCB per usare PPTEA nella mia applicazione.

Approfitto per chiederti una cosa , PPTEA ha gli I/O fissi? Premetto che non ho ancora letto tutto il progetto, anzi al tuo primo post avevo guardato il link e mi ero spaventato dalla lunghezza del thread del forum, c'e' da perdersi !

Mentre il tuo sito e' molto piu' leggibile e, per mia fortuna, anche per "Absolute Beginner" come lo sono io.

Tornando agli I/O , per poter usare, per esempio,le routine di LCD out sono obbligato ad usare esattamente le porte che sono previste o si puo' riconfigurare gli assegnamenti degli I/O ?

Non e' un problema seguire quello che esiste nel PPTEA ma solo per capire come devo comportarmi nella stesura del nuovo PCB .

Inoltre il progetto PPTEA funziona sotto WIN7 a 64 Bit ?

In caso contrario devo riesumare il vecchio PC con Win Xp ...

Ti ringrazio in anticipo per il tuo aiuto e torno a leggere il tuo sito.

Saluti Quando i ricchi si fanno la guerra, sono i poveri che muoiono. Jan-Paul Sartre

Grazie, ma ne il sito, ne il PPTEA sono farina del mio sacco, io vi sono approdato, come te, per utilizzare i micro senza imparare il C, cosa che non ho il tempo di fare.

Sul forum citato nel sito pptea.altervista.org hai una sezione dedicata al PPTEA, dove vedi tutta la storia e l'evoluzione del progetto.

Vi sono già PCB disegnati per il PPTEA, abbiamo cercato di fare una cosa simile ad arduino, un PCB che porta il micro e la circuiteria accessoria, con dei connettori per le schede applicative.

Il PPTEA, basato su 18F2550, ha 16 i/o configurabili, di cui alcuni usabili come input analogici, alcuni come uscite pwm, uno come counter.

Ti consiglio di iscriverti al forum, e porre le tue domande li (vale ovviamente per tutti quanti siano interessati).

Tanto per chiarire a tutti di cosa sto parlando, il PPTEA è un firmware che, inserito nel pic citato, permette di realizzare programmi in linguaggio simil-basic, debuggarli nel simulatore integrato, e inviarli al PPTEA via usb. Non è quindi necessario destreggiarsi con porte, librerie, etc, è tutto già fatto. Utile a chi vuole realizzare un progetto basato su PIC, ma non ha tempo/voglia/mente per impararne architettura e linguaggi.

Qualsiasi cosa, chiedi/ete là.

Grazie.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required