Vai al contenuto
PLC Forum


Mplab X Un Po Di Delucidazioni


iz1lbt

Messaggi consigliati

ciao a tutti, e da poco che mi approccio ai pic, ho comprato un pickit 3 con inclusa la demoboard44pin con un pic18f45k20, ho cominciato a provare a colleagre al pc cancellare e rimettere un firmware sul pic (e 2 giorni che cel'ho ) :P , ho cncellato per errore il firmware originale della demoboard , che in mplab x c'e una cartella chiamata sample project dove lo posso ricaricare, ma devo riconvertirlo in hex , dom anda ma con mplabx posso convertirlo? mi spiegate dove trovo la funzione ? grazie mille anticipatamente!

Link al commento
Condividi su altri siti


Una volta lanciato MPLAB X, nella "start page", click su "open samples project".

Si apre la finestra "new project".

In "categories" (sulla sinistra) seleziona "sample project/microchip embedded".

In project (sulla destra) seleziona il progetto che ti interessa.

Una volta aperto (doppio click), nella barra dei comandi click sulla icona con il martello.

Nella finestra di "output" (generalmente in basso sulla destra, se non hai spostato nulla)

viene visualizzato il risultato della compilazione (errori, warning, ecc.)

A questo punto (se non ci sono errori) non ti rimane che riprogrammare il micro.

Buon lavoro.

Link al commento
Condividi su altri siti

grazie per la risposta! kappa 47

puo essere che sbaglio ? nei sample project c'e un file chiamato pic18f4520 ma è l'unico che c'è pero la demoboard ha un pic18f45k20 e per quello che mi da l'errore ? tra l'altro quando carico quel progetto la finestrella dove selezioni il modello del pic rimane con la scritta default ... puo essere che non ci sia il progto originale della mia demo? dove posso reperirlo se fosse? , intaanto provo a sbatterci la testa ancora...

grazie escusa per le mille domande !

Link al commento
Condividi su altri siti

Nel kit che hai comprato dovrebbe esserci il CD con la documentazione e i sorgenti della demoboard.

Lo hai installato ?

Se nei template di MPLAB X non c'e', devi cercarlo manualmente dove lo hai installato.

Le differenze tra il PIC18f4520 e il PIC18f45k20 sono nei consumi, frequenza max. di funzionamento

(e costo inferiore) che in un progetto di demo non dovrebbero pregiudicarne il funzionamento.

Per avere risposte piu' precise, dovresti evidenziare meglio gli errori.

Ciao.

Link al commento
Condividi su altri siti

in verita il cd l'ho installato su windows ma , sul mac mini che è senza lettore l'ho scaricato dal sito, e mplabx mi sembra piu intuitivo sul mac ,ma i file samples ci sono , dovrebbero essere gli stessi, ma per compilare il programma gli basta solo il programma in c? il makefile a cosa serve?

Link al commento
Condividi su altri siti

warning: Configuration "default" builds with "C18", but indicates no toolchain directory.

error: Configuration "default" builds with "C18", but no toolchains of that type are installed.

Errors have occurred while loading one or more configurations.

If a specific error is not shown above, this may happen when you import a project from another computer.

+ You can add language tools in Tools->Options embedded tab.

+ You can change which language tool to use in the project properties dialog.

questo è l'errore che da appena carico il sample projet dl pic che ho

Link al commento
Condividi su altri siti

Il makefile dice al compilatore cosa deve fare:

- quali files di progetto deve compilare (se hai diverse versioni)

- se vuoi la mappa della memoria e/o i listati

- come vuoi configurare la memoria

- ecc.

In un progetto demo non hai bisogno di modificarlo.

Gli errori che hai ci sono perche' non hai configurato il compilatore C18 (toolchains...)

Per controllare i toolchains:

Apri MPLAB X

Barra dei menu --> tools --> options --> embedded

Seleziona "build tools"

Sulla destra (toolschain) c'e' l'elenco dei compilatori che hai installato.

Se non c'e', devi installarlo.

Se e' stato installato, sulla parte sinistra ci sono le directory in uso.

Esempio:

base dir: C:\...\XC8\Vxx\bin

C comp: C:\...\Xc8\Vxx\xc8.exe

Non toccare la dir di "make command"

Se non l'hai installato, click su "add" (sulla sinistra)

Click su "browse" e cerca il compilatore (base dir con il file "bin" e type con "C18")

A questo punto dovresti ritrovarti tutti i paths completi.

Buon lavoro

Link al commento
Condividi su altri siti

grazie mille !! ci sono riuscito, un passo alla volta , pero 'nonostante gli ho scaricato il programma dentro i led non funzionano, la programmazone è andata a buon fine , pero devo dire che mi son sbagliato, per qualchge secondo ho dato 3,5v inversi..... ho causato danni al pic?

Link al commento
Condividi su altri siti

Livio Orsini
per qualchge secondo ho dato 3,5v inversi..... ho causato danni al pic?

Cosa significa? hai forse invertito l'alomentazione scambiando positivo con negativo? Se è così è quasi certo che hai fatto qualche martire.

Link al commento
Condividi su altri siti

mmmmm.... cavoli, si ho sbagliato ed ha anche scaldato!! pero si fa scrivere ,cancellare , verificare,

comunque ho dissaldato il pic ne ho messo uno uguale alla demoboard.... stessa roba , ho sbagliato qualcosa nel programma tipo mandarlo in run?

Link al commento
Condividi su altri siti

mi da l'errore configurazione dei bit ..

ora son passato a windows per provare con mplab ide , per provare , lo vedo molto piu complesso non trovo i sample project e non trovo la funzione dove mi prende un file hex e me lo scarica nel pic, ma tra mplab ide ed mplab x a livello pratico che differenza c'e qual'e meglio sono uguali? non vorrei sfasciarmi la testa ed andare nel pallone ...

Link al commento
Condividi su altri siti

niente, ho provato anche ad installare mplabx su windows e mi fa lo stesso mi da il seguente errore

Programming/Verify complete

The target device is not ready for debugging. Please check your configuration bit settings and program the device before proceeding.

prima , mi appare una finestra che mi dice che il watchdog time enable è ad on ed il single supply icsp enable bit è a on...

chi mi aiuta per favore????

Link al commento
Condividi su altri siti

Livio Orsini
Please check your configuration bit settings and program the device before proceeding.

Questo è il tipico messaggio di quando i bits di configurazione sono errati!

Apri il menù a tendina sulla voge configurazione e setta nel modo corretto i vari bits.

Prima però verifica che sia abilitato un dispositivo di programmazione e debugging.

Consiglio principale: leggi la documentazione microchip che credo sia chiamata "Quick start MPLABX (o qualche cosa di similare)" e segui pedissequamente le istruzioni.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

ho visto nella guida , ma di impostazioni di bit non ne parlano ,

ma come impostazioni di bit non dovrebbe essere gia settato visto che apro un progetto esempio?

la programmazione va a buon fine

*****************************************************

Connecting to MPLAB PICkit 3...

Firmware Suite Version.....01.28.57

Firmware type..............PIC18F

Target detected

Device ID Revision = 1c

The following memory area(s) will be programmed:

program memory: start address = 0x0, end address = 0x7fff

configuration memory

Programming...

Programming/Verify complete

mi dice cosi ma non funziona niente ...

Link al commento
Condividi su altri siti

a parte che sono andato nel menu dei bit di configurazione , se cambio lo stato di qualsiasi cosa viene la scrita rossa, non so se è un errore o lo visualiza cosi , ma poi per confermare i settaggi come si fa??

Link al commento
Condividi su altri siti

Non c'è bisogno di conferma, una voltaq cambiata l'opzione rimane sino al prossimo cambio.

Io uso ancora l'ultima versione di MPLab, quindi non conosco le particolarità di MPLabX, però la filosofia è immutata.

Link al commento
Condividi su altri siti

#include "p18cxxx.h"

void delay();

void delay() {

int counter = 0;

for (counter = 0; counter<10000; counter++) {

;

}

}

void main(void) {

TRISB = 0;

while (1) {

PORTB = 0x0F;

delay();

PORTB = 0x00;

delay();

}

}

questo è il sample project, io non sono ancora capace di programmare ma mi sa che manca qualcosa è per quello che non fa niente la demoboard , anche perche su un forum tedesco ho trovato una modifica di quel sample project che ho copiato ed incollato il file in c l'ho assemblato con xc8 ed ora la scheda funziona , diversamente dal programma originale ma funziona!

3: *

4: * Created on January 25, 2013, 18:09 PM */

5:

6: #pragma config FOSC = INTIO67

7: #pragma config WDTEN = OFF, LVP = OFF

8:

9: #include "p18f45k20.h"

10:

11: void delay();

12:

13: void delay() {

14: int counter = 0;

7F5A 0E00 MOVLW 0x0

7F5C 6E02 MOVWF 0x2, ACCESS

7F5E 0E00 MOVLW 0x0

7F60 6E01 MOVWF counter, ACCESS

15: for (counter = 0; counter<1000; counter++);

7F62 0E00 MOVLW 0x0

7F64 6E02 MOVWF 0x2, ACCESS

7F66 0E00 MOVLW 0x0

7F68 6E01 MOVWF counter, ACCESS

7F6A 5002 MOVF 0x2, W, ACCESS

7F6C 0A80 XORLW 0x80

7F6E 0F7D ADDLW 0x7D

7F70 0EE8 MOVLW 0xE8

7F72 B4D8 BTFSC STATUS, 2, ACCESS

7F74 5C01 SUBWF counter, W, ACCESS

7F76 A0D8 BTFSS STATUS, 0, ACCESS

7F78 D001 BRA 0x7F7C

7F7A D001 BRA 0x7F7E

7F7C D002 BRA 0x7F82

7F7E D00E BRA 0x7F9C

7F80 D00D BRA 0x7F9C

7F82 4A01 INFSNZ counter, F, ACCESS

7F84 2A02 INCF 0x2, F, ACCESS

7F86 5002 MOVF 0x2, W, ACCESS

7F88 0A80 XORLW 0x80

7F8A 0F7D ADDLW 0x7D

7F8C 0EE8 MOVLW 0xE8

7F8E B4D8 BTFSC STATUS, 2, ACCESS

7F90 5C01 SUBWF counter, W, ACCESS

7F92 A0D8 BTFSS STATUS, 0, ACCESS

7F94 D001 BRA 0x7F98

7F96 D001 BRA 0x7F9A

7F98 D7F4 BRA 0x7F82

7F9A D000 BRA 0x7F9C

16: }

7F9C 0012 RETURN 0

17: void main(void) {

18: int dummy = 0;

7F9E 0E00 MOVLW 0x0

7FA0 6E04 MOVWF 0x4, ACCESS

7FA2 0E00 MOVLW 0x0

7FA4 6E03 MOVWF dummy, ACCESS

19: /*init the RA0 as analog input*/

20: TRISA = 0x1; // set potentiometer at porta as input

7FA6 0E01 MOVLW 0x1

7FA8 6E92 MOVWF TRISA, ACCESS

21: ANSELbits.ANS0 = 1; // set RA0 to analog (=1, 0 = digital) -> this is important to potentiometer at RA0

7FAA 807E BSF ANSEL, 0, ACCESS

22: ADCON0bits.ADON = 1; // activate A/D unit

7FAC 80C2 BSF ADCON0, 0, ACCESS

23: /*init the RB0 as digital input*/

24: TRISB = 0x1; // set bit0 of portb to input because there is the push button at RB0

7FAE 0E01 MOVLW 0x1

7FB0 6E93 MOVWF TRISB, ACCESS

25: ANSELHbits.ANS12 = 0; // set RB0 to digital (=0, 1= analog) -> this is important to read button at RB0

7FB2 987F BCF ANSELH, 4, ACCESS

26: /*init the RD0..RD7(PORTD) as digital output*/

27: TRISD = 0; // all bits of portd are set 0 as output

7FB4 0E00 MOVLW 0x0

7FB6 6E95 MOVWF TRISD, ACCESS

28: PORTD = 0; // deactivate all led's

7FB8 0E00 MOVLW 0x0

7FBA 6E83 MOVWF PORTD, ACCESS

7FBC D000 BRA 0x7FBE

29:

30: while (1) {

7FFA D7E1 BRA 0x7FBE

31: if (PORTBbits.RB0 == 0) { //check if button is pressed (=0, 1= not pressed)

7FBE B081 BTFSC PORTB, 0, ACCESS

7FC0 D001 BRA 0x7FC4

7FC2 D001 BRA 0x7FC6

7FC4 D00C BRA 0x7FDE

32: ADCON0bits.GO_DONE = 1; // start A/D convert

7FC6 82C2 BSF ADCON0, 1, ACCESS

33: while(ADCON0bits.GO_DONE != 0); // wait till A/D convert done

7FC8 D000 BRA 0x7FCA

7FCA B2C2 BTFSC ADCON0, 1, ACCESS

7FCC D001 BRA 0x7FD0

7FCE D001 BRA 0x7FD2

7FD0 D7FC BRA 0x7FCA

34: dummy = ADRESH; // copy A/D result (high part) to leds -> dummy variable is only for better debugging

7FD2 CFC4 MOVFF ADRESH, dummy

7FD4 F003 NOP

7FD6 6A04 CLRF 0x4, ACCESS

35: PORTD = dummy;

7FD8 C003 MOVFF dummy, PORTD

7FDA FF83 NOP

36: } else {

7FDC D00B BRA 0x7FF4

37: PORTD = PORTD<<1; // move set led

7FDE 5083 MOVF PORTD, W, ACCESS

7FE0 2483 ADDWF PORTD, W, ACCESS

7FE2 6E83 MOVWF PORTD, ACCESS

38: if (PORTD == 0) {

7FE4 6683 TSTFSZ PORTD, ACCESS

7FE6 D001 BRA 0x7FEA

7FE8 D001 BRA 0x7FEC

7FEA D004 BRA 0x7FF4

39: PORTD = 0x1; // if all led's off activate one

7FEC 0E01 MOVLW 0x1

7FEE 6E83 MOVWF PORTD, ACCESS

7FF0 D001 BRA 0x7FF4

40: }

7FF2 D000 BRA 0x7FF4

41: }

42: delay();

7FF4 ECAD CALL 0x7F5A, 0

7FF6 F03F NOP

7FF8 D7E2 BRA 0x7FBE

43: }

44: }

7FFC EF00 GOTO 0x0

ora che dovrei avere capito almeno ad usare un po il programma ,a scaricare e caricare programmi cerchero di studiare il linguaggio c anche se non so se faccio la scelta migliore , voi che linguaggio mi consigliate (non ho basi di programmazione)

Link al commento
Condividi su altri siti

Il "C" è sicuramente la scelta migliore, anche perchè oltre al "C" c'è solo l'assembler e qualche ciofeca come, ad esempio, compilatori basic adattati ai micro PIC.

L'assembler comunque dovresti impararlo. E' più facile del "C" come sintassi, permette di fare più porcate, è molto "palloso" perchè devi scrivere tutto ed è 1 a 1 (una riga, una istruzione), però è praticamente obbligatorio conoscerlo perchè ti fa capire veramente come lavora la macchina e quali registri sono "toccate" da determiante operazioni. Poi, in caso di necessità, è il più veloce ed ottimizzato.

Imparare un linguaggio non significa saper programare. Prima bisognerebbe imparare a programamre che è una cosa indipendente dal linguaggio usato.

L'arte della programamzione è, principalmente, capire quale algoritmo impiegare per risolvere un determinato problema, come organizzare al meglio il programma per risolvere quell'algoritmo, come organizzare al meglio la programmazione.

Nel programma di esempio fai cambiare di stato le uscite della porta B con un tempo ottenuto da un ciclo for che retira 9999 volte l'incremento di una variabile.

Non so quale compilatore stai usando, ma tutti i compilatori "C" per PIC hanno una "built in function" che esegue ritardi; basta richiamarla specificando il tempo necessario (in µs o ms). In pratica poi il prcessore esegue qaulche cosa di simile a quello che hai fatto, però la lettura del programma è molto più comprensibile. Poi pensa a quando dovrai usare più ritardi differenti nella medesima funzione...

Certo che se quel compilatore espande 3 righe di "C" con tutta quella roba, non mi sembra il massimo dell'ottimizzazione.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

grazie mille livio ! quella versione di compilatore è la demo di xc8 gratuita , poi se imaprero a programmare acquistero la versione completa se non ne trovo un'altra gratuita ,

per cui dice che se avessi avuto un'altro compilatore quel programma scritto in c demo avrebbe funzionato??

Link al commento
Condividi su altri siti

Se non funziona non è perchè è compilato con la versione demo. Proprio per la versione demo Microchip dichara che l'ottimizzazione è scarsa, però non dichiara altri limiti o bugs.

Link al commento
Condividi su altri siti

per cui anche se sono alle prime armi mi conviene acquistare un compilatore? almeno rischio di tribulare meno?

cosa mi consigliate per l'acquisto di un libro dove mi da una buona base? penso sia inutile provare a programmare quando non conosco neanche l'architettura dei pic cosa dite?

grazie mille in anticipo!

Link al commento
Condividi su altri siti

per cui anche se sono alle prime armi mi conviene acquistare un compilatore? almeno rischio di tribulare meno?

Assolutamente no! La minor ottimizzazione del compilatore può solo portare ad un esguibile un poco più pesante, con maggior occupazione di memoria e minor velocità di esecuzione. Questo potrebbe essere un problema per applicazioni estreme, ma con le tue attuali conoscenze sei ben lontano dal poter gestire simili problematiche. :smile:

Per imparare a conoscere i PIC e la loro programmazione, ti consiglio di ricercare sul forum l'ottimo corso di Sergio Tanzilli; è gratuito, ben fatto ed è tarato proprio per i principianti.

Poi ci sono anche testi facili, prova a guardare nel sito di "futura Elettronica", se hanno ancora in vendita il manualetto di programmazione-istruzione sui PIC. Anche quello è abbastanza ben fatto.

Comincia a farti le ossa seguendo pedissequamente le indicazioni del corso che ho citato (ma ce ne sono altri gratuiti e ben fatti che trovi in rete). Devi proprio seguirlo passo passo, senza saltare nulla e senza proseguire prima di aver capito l'argomento trattato. Nel giro di poco tempo saprai dominare abbastanza bene i concetti fondamentali del micro, poi dipenderà solo da te la crescita.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...