Newsgroup: it.hobby.elettronica.digitale
Titolo: MPLAB, Pic Basic Pro, ICD2 e librerie... Help me !

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?
 
http://energiaalternativa.forumcommunity.net/?f=8107054
 
 
Se puï¿œ interessarti...



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

 Se puï¿œ interessarti...
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...


 Comunque per scenari complessi come la domotica alla fine e' meglio


 da "cucire" al programma.
 
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

 ...ma, perchï¿œ mi parli di domotica? ;)
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
 
 

 scontato , anche le cose piu' banali.
 
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!
 
 

 Questo pero' non ha niente a che fare con l'errore dell'Icd2!
 
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.



 
Forse ho capito perche non riesco ad avere controllo sul debugger, per 
il PIC16F628A serve per forza un Header , vedi a questo link:
 
http://it.farnell.com/microchip/ac162053/mplab-icd-header-for-pic16f628a/dp/4766805
 
 
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


 Grazie in anticipo
 
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
 
 


 
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 !


 Ti faccio sapere come ne vengo fuori.
 
Se decidi di andare avanti, aspetto eventuali ulteriore domande.
ciao
Angelo