Home
Accesso / Registrazione
 di 

Guida per PIC 32

36 risposte [Ultimo post]
ritratto di OPGUIDO
Offline
Titolo: User++
Utente++
Ultima visita:
1 anno 38 settimane fa
Utente dal: 11/06/2011
Messaggi: 58

Ciao,conosco i PIC della famiglia 18F, ora vorrei coniscere i PIC32, mi dite dove scaricare delle guide (tutorial) in italiano che mi spieghino come usare/programmare i PIC32?
Linguaggio C. Compilatore MPLAB C32.
Grazie

ritratto di divivoma
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
10 settimane 5 giorni fa
Utente dal: 02/03/2011
Messaggi: 212
wow su google ci ho messo 2

wow su google ci ho messo 2 secondi...dovrebbe essere quello che fa al tuo caso ;)

http://www.silica.com/fileadmin/02_Products/Productdetails/Microchip/PIC32_Starter_Kits_Us...

fammi sapere

ciao

ritratto di divivoma
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
10 settimane 5 giorni fa
Utente dal: 02/03/2011
Messaggi: 212
oops, ti serve per forza in

oops, ti serve per forza in italiano?

ritratto di TardoFreak
Offline
Titolo: User+
Utente+
Ultima visita:
1 anno 29 settimane fa
Utente dal: 25/09/2011
Messaggi: 22
Più che le guide è molto

Più che le guide è molto utile guardare gli esempi forniti con il compilatore MPLAB C32 e con lo Starter kit a partire dal programma che fa lampeggiare il LED per andare verso altri esempi più complessi. La reference guide del compilatore e la documentazione della peripheral library sono altri due documenti importanti da leggere e da tenere sotto mano in modo da poterli consultare di frequente. Altre informazioni (nomi delle periferiche, bit, interrupts, vettori e compagnia cantante) le trovi nel file di definizione del processore della cartella ..\MPLAB C32\pic32mx\include\proc\
La documentazione è buona ma è in inglese.

ritratto di lucagiuliodori
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
1 settimana 5 giorni fa
Utente dal: 21/03/2011
Messaggi: 195
Ciao OPGUIDO, ti devo dare

Ciao OPGUIDO,

ti devo dare una notizia che forse non ti farà piacere: trovare guide in italiano sui PIC (in particolar modo sui PIC32) è come cercare l'acqua nel deserto. Se vai sul sito della Microchip e entri nella sezione dedicata ai PIC32 (http://www.microchip.com/en_US/family/32bit/) trovi veramente di tutto...anzi forse anche troppo.

Comunque, visto che già conosci i PIC18, non ti rimarrà difficile migrare ai PIC32: i nomi e il funzionamento delle periferiche sono più o meno gli stessi, cambiano il numero di bit per ogni registro (i PIC32 hanno registri a 32 bit a differenza dei PIC18 che hanno i registri a 16) e magari qualche nomenclatura, ma per il resto rimane simile a quello che trovi per un PIC18. Ad esempio, se consideri la periferica I2C, i registri, i nomi dei pin e le funzionalità sono le stesse di quelle che trovi in un PIC18 e così come l'I2C, anche le altre periferiche. Insomma, se già conosci i PIC18 non ti rimarrà difficile orientarti nei PIC32, tranquillo.

La cosa veramente diversa e rivoluzionaria, rispetto ai PIC precedenti, è la struttura della memoria, infatti, se prima in un PIC18 o PIC16 erano ben distinte Program Memory, RAM e EEPROM, ora sono tutte in un unica memoria (in realtà la EEPROM non è una vera e propria EEPROM, viene usata la program memory come EEPROM, scelta non proprio adatta) e l'organizazione e la gestione è tanto diversa quanto complicata. Comunque anche per questa cosa puoi stare tranquillo: se non hai particolari esigenze (ad esempio implementare un particolare Bootloader) non ti dovrai preoccupare della gestione della memoria, ci pensa il compilatore a farlo per te (visto che hai detto che usi il C).
Se parti da un esempio preparato dalla Microchip (come suggerito da TardoFreak) non avrai difficoltà a muovere i primi passi, anzi, sono sicuro che in poco tempo riuscirai a mettere insieme i pezzi del tuo progetto.

Comunque se hai bisogno di assistenza tecnica, puoi sempre aprire un Ticket sul sito di supporto della Microchip (questi li puoi scrivere anche in Italiano, riconoscono in automatico la lingua e ti rispondono in Italiano), che nella maggior parte delle volte riescono a risolverti i problemi.

Anche io sto lavorando da quasi un anno su un progetto con un PIC32 della Microchip, se hai bisogno di aiuto o consulenza fammi sapere.

Facci sapere.

Ardila (non verificato)
ritratto di Ardila
Salve a tutti, sono alla

Salve a tutti, sono alla disperata ricerca di un programmino che faccia qualcosa di banale su un pic32. sapete mica dire dire dove lo posso trovare? Per banale intendo un semaforo stradale o qualcosa del genere, Non riesco a trovare dei siti dove posso scaricare il programma in C già fatto

ritratto di divivoma
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
10 settimane 5 giorni fa
Utente dal: 02/03/2011
Messaggi: 212
Ma già fatto in che senso..?

Ma già fatto in che senso..? mica è una pizza :)
Non riesci a trovare almeno il codice poi lo compili tu per la tua architettura..?
Io credo di si..prova a vedere sul sito della microchip dove ci sono una miriadi di esempi e di guide che si possono implementare con l'architettura che ti serve..

Intanto qui trovi un corso sui pic:

http://www.settorezero.com/wordpress/corso-programmazione-pic-in-c-lezione-1-cose-un-micro...

ciao

ritratto di lucagiuliodori
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
1 settimana 5 giorni fa
Utente dal: 21/03/2011
Messaggi: 195
Sul sito della Microchip

Sul sito della Microchip trovi molto codice già implementato e che implementa anche delle funzioni semplicissime per qualsiasi tipo di PIC (anche il PIC32 quindi): http://www.microchip.com/wwwcategory/TaxonomySearch.aspx?show=Application%20Notes&ShowFiel...

Il link che ti ho mandato è la pagina di ricerca per le Application Note, limita la ricerca solo ai PIC32 e troverai parecchio codice che ti può interessare.

Facci sapere.

ps: ti conviene aprire un'altro topic nel forum?

ritratto di OPGUIDO
Offline
Titolo: User++
Utente++
Ultima visita:
1 anno 38 settimane fa
Utente dal: 11/06/2011
Messaggi: 58
Ancora grazie per il vosro

Ancora grazie per il vosro interessamento. Visto che al momento la documentazione è in inglese mi applichero a tradurlo col mio inglese scolastico (perchè non stavo attento in classe).
Ciao.

ritratto di divivoma
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
10 settimane 5 giorni fa
Utente dal: 02/03/2011
Messaggi: 212
chahah...ognuno ha le sue

chahah...ognuno ha le sue pecche tranquillo hahah :)..e poi oggi comunque trovi il traduttore di google..sembra sia migliorato un pò dai :)

ritratto di OPGUIDO
Offline
Titolo: User++
Utente++
Ultima visita:
1 anno 38 settimane fa
Utente dal: 11/06/2011
Messaggi: 58
Ancora grazie per il vosro

Ancora grazie per il vosro interessamento. Visto che al momento la documentazione è in inglese mi applichero a tradurlo col mio inglese scolastico (perchè non stavo attento in classe).
Ciao.

ritratto di lucagiuliodori
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
1 settimana 5 giorni fa
Utente dal: 21/03/2011
Messaggi: 195
Come ti dicevo, se già

Come ti dicevo, se già conosci i PIC18 non ti sarà difficile abituarti ai PIC32 e comunque una volta che sei entrato "un po' in confidenza" con l'inglese tecnico, vedrai che è più facile capire i concetti (tecnici ovviamente :) ) in inglese che in italiano.

Tienici aggiornati.
Ciao!

ritratto di stefano88
Offline
Titolo: User+
Utente+
Ultima visita:
2 anni 2 settimane fa
Utente dal: 12/09/2011
Messaggi: 29
Ciao OPGUIDO, vorrei farti

Ciao OPGUIDO, vorrei farti una domanda, perché per forza i PIC? Io uso Arduino, è molto più semplice rispetto ai PIC, devi fare qualcosa di particolare?

ritratto di TardoFreak
Offline
Titolo: User+
Utente+
Ultima visita:
1 anno 29 settimane fa
Utente dal: 25/09/2011
Messaggi: 22
Oddio, mettere a confronto un

Oddio, mettere a confronto un PIC32 con un Atmega ... 'nzomma.

ritratto di stefano88
Offline
Titolo: User+
Utente+
Ultima visita:
2 anni 2 settimane fa
Utente dal: 12/09/2011
Messaggi: 29
Per quanto riguarda la

Per quanto riguarda la facilità di costruzione attorno e tutto un'altra cosa, per non parlare anche del costo del programmatore per pic

ritratto di divivoma
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
10 settimane 5 giorni fa
Utente dal: 02/03/2011
Messaggi: 212
credo si riferisse in termini

credo si riferisse in termini di prestazioni... non ricominciamo ora il discorso sulla "semplicità che ha arduino..è quella di connettere il micro con altre periferiche e bla bla " :) ne abbiamo parlato a suon di commenti nel topic di banzi raga.. ;)

http://it.emcelettronica.com/arduino-siete-voi-massimo-banzi-22-subs-ita

ritratto di TardoFreak
Offline
Titolo: User+
Utente+
Ultima visita:
1 anno 29 settimane fa
Utente dal: 25/09/2011
Messaggi: 22
Beh, se vogliamo dirla tutta

Beh, se vogliamo dirla tutta l' AT90USB della Atmel ha un suo bootloader pre-programmato e quindi basta compare il micro, collegargli un quarzo, l' USB e due pulsanti ed hai fatto tutto. Ad un costo molto inferiore ad arduino e con prestazioni nettamente superiori.
Anche gli ARM hanno il bootloader in ROM e li si può programmare tramite seriale o USB.
I sistemi di sviluppo sono tutti ottimi e tutti free.
Il programmatore per il PIC32 costa 37 euro (in un famoso sito) ma lavori con una macchina a 32 che ti esegue un' istruzione (a 32 bit) in 12.5 ns. e puoi fare un ottimo debigging.
E' chiaro che poi non tutti hanno la stessa esperienza di progettazione e programmazione dei micro, quindi ad ognuno il suo sistema. Quello che per te può essere facile per me potrebbe dare solo rogne a non finire, per esempio.

Ardila! (non verificato)
ritratto di Ardila
Per prima cosa grazie a

Per prima cosa grazie a divivoma e lucagiuliodori.
Praticamente ho un pic32 quello base con solo il connettore usb, i 3 led colorati e rispettivi tasti.
Premesso che non ho mai smanettato con niente di elettronica, volevo conoscere le potenzialità di questo dispositivo.
Io non l'ho collegato ad altre periferiche.
Volevo sapere se era possibile caricare un banale programmino in C che faccia accendere i led, dopo aver fatto alcune istruzioni tipo: ogni tasto ha un valore fissato es 1, 4 e 9, il programma ti chiede di premerne uno il programma fa un confronto con un valore soglia già stabilito (esempio 5) in tal caso se ho pigiato un tasto 1 e 4 dà luce verde, nel caso abbia pigiato 9 dà luce rossa.
Praticamente volevo sapere quali erano le funzioni per leggere gli input e fare accender ele luci.

ritratto di lucagiuliodori
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
1 settimana 5 giorni fa
Utente dal: 21/03/2011
Messaggi: 195
Ciao Ardila!, sul

Ciao Ardila!,

sul suggerimento dato da TardoFreak ho dato un'occhiata agli esempi che ho io con il mio Starter Kit e se non mi sbaglio l'esempio che dici tu (o per lo meno simile) dovrebbe essere quello che si trova sotto la cartella "Port_IO" e che a sua volta si trova dentro la cartella "PIC32 Starter Kit".

Solitamente gli esempi Microchip hanno un file principale in cui trovi il "MainLoop" del programma implementato con un semplice "while(1) { ... }"; molto probabilmente se vuoi modificare il codice dell'esempio o inserire altro codice, devi agire su quella parte di codice.

Anche per la lettura dei pin configurati come ingressi e l'assegnazione del valore dei pin configurati come uscita, le operazioni da fare sono altrettanto semplici, infatti, la Microchip definisce delle strutture chiamate "PORTxbits" (dove al posto della "x" c'è la lettera della porta: A, B, ...) che all'interno hanno definiti i singoli pin della porta corrispondente quindi, se devi per esempio assegnare il valore ad un singolo pin, ti sarà sufficiente scrivere (prendendo come esempio il pin 0 della porta B): "PORTBbits.RB0=1;". Analogamente la lettura verrà eseguita nel seguente modo: "a=PORTBbits.RB0;", oppure "if(PORTBbits.RB0==1) { ... }".
La Microchip definisce tutti i registri come quelli delle porte vista ora: "REGISTRObits.BIT", dove "REGISTRO" è il nome del registro e "BIT" è il nome del bit da leggere e modificare e comunque i nome sono solidali con quelli che trovi nel datasheet.
Per esempio, per settare la direzione del pin della porta (ingresso o uscita) basterà impostare a "1" (per l'ingresso) o a "0" (per l'uscita) il bit del registro "TRIS" della porta corrispondente: "TRISBbits.TRISB1=1;".
Chiaramente l'assegnazione dei valori dei registri può essere fatta anche per valore, senza andare ad impostare i singoli bit: "PORTB=0x12345678;" (ricorda che in un PIC32 hai i registri a 32 bit).

Per quanto riguarda le potenzialità ti dico che i PIC32 sono i microcontrollori di fascia più alta tra i prodotti Microchip e per farti rendere meglio l'idea, come ti avevo accennato in un altro post se non mi sbaglio, utilizzano il set di istruzioni MIPS.

Se hai bisogno di altre delucidazioni facci sapere.

ritratto di TardoFreak
Offline
Titolo: User+
Utente+
Ultima visita:
1 anno 29 settimane fa
Utente dal: 25/09/2011
Messaggi: 22
PIC32 Starter Kit

Quel programma c'è già e lo danno proprio insieme al PIC32 Starter Kit (la scheda che tu hai) ma, ahimè, non ricordo come si chiama. In ogni caso lo trovi fra gli esempi.
Oltre ad accenderti i LED a seconda di come premi i pulsanti ti fa vedere come utilizzare la linea di debug per farti comparire nella finestra di output di MPLAB delle scritte o ricevere input da tastiera. Una funzione utilissima in fase di sviluppo dei programmi.
E' anche un' ottimo scheletro da utilizzare per la stesura dei tuoi futuri programmi.
Io l' ho anche trovato divertente :)

ritratto di ardila
Offline
Titolo: User
Utente
Ultima visita:
1 anno 31 settimane fa
Utente dal: 28/09/2011
Messaggi: 6
Grazie ad entrambi! Adesso ho

Grazie ad entrambi!
Adesso ho provato un po' a giocherellare: dagli esempi ho trovato quello del blink dei led, il codice è il seguente:

#include
/* PIC32 peripheral library */

int main(void)
{
int i;
/* setup LED */
mPORTDClearBits(BIT_0); /* Turn off LED0 on startup */
mPORTDSetPinsDigitalOut(BIT_0); /* Make RD0 (LED0) as output */
mPORTDClearBits(BIT_1); /* Turn off LED1 on startup */
mPORTDSetPinsDigitalOut(BIT_1); /* Make RD0 (LED1) as output */
mPORTDClearBits(BIT_2); /* Turn off LED2 on startup */
mPORTDSetPinsDigitalOut(BIT_2); /* Make RD0 (LED2) as output */
while(1) // go for ever
{
for(i=0; i<200000; i++); // put a delay
mPORTDToggleBits(BIT_0); /* turn ON LED0 */
for(i=0; i<200000; i++); // put a delay
mPORTDToggleBits(BIT_1); /* turn ON LED1 */
for(i=0; i<200000; i++); // put a delay
mPORTDToggleBits(BIT_2); /* turn ON LED2 */
};
return 0;
}

Se ho fatto bene (correggetemi se sbaglio) dopo aver aperto questo file nella finestra, ho cliccato sull'icona "Programm All Memories" e dalla finestra di output miha dato "DONE".
Poi ho cliccato sul tasto Run, ma mi si è aperta una finestrina con scritto "The project is out of the date, Built now?" Ho cliccato su Si ma nella finestra di output ho trovato scritto:
Build aborted. The project contains no source files.
BUILD FAILED: Thu Sep 29 22:52:37 2011

Ovviamente tutti i led non si sono accesi, soluzioni??

ritratto di divivoma
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
10 settimane 5 giorni fa
Utente dal: 02/03/2011
Messaggi: 212
mi pare ci sia qualcosa di

mi pare ci sia qualcosa di strano sull'include...

#include /* PIC32 peripheral library */

Mancano le librerie mi sa... dovrebbe esserci qualcosa tipo:

#include

Vedi di settare inoltre bene il path a cui punta il compilatore..altrimenti non vede i file sorgente..ossia questo che hai creato.. dovrebbe essere un .c

ciao

ritratto di lucagiuliodori
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
1 settimana 5 giorni fa
Utente dal: 21/03/2011
Messaggi: 195
Ciao Ardila, se ti ha dato

Ciao Ardila,

se ti ha dato l'avviso "The project is out of the date, Built now?" vuol dire che il progetto che hai scritto non lo hai ancora compilato e quindi hai si programmato il microcontrollore ma non so con che cosa :) se vuoi toglierti questa curiosità se vai su sul menù "view" trovi la voce "memory", se ci clicchi ti dovrebbe comparire la Program Memory con dentro le istruzioni con cui è programmato o deve essere programmato il micro.

A parte questa cosa, che ti si risolve non appena compili il progetto, il tuo problema è che il progetto non trova file da dover compilare.
Per poter capire quale sia il problema ho due domande:
- che versione di MPLAB stai usando?
- hai aperto solamente il file ".c" oppure hai aperto proprio il file di progetto (o meglio di workspace)?

Ti spiego: l'MPLAB per lanciare la compilazione non deve avere solamente il file ".c" che deve compilare, ha bisogno di una serie di altre informazioni come per esempio il tipo di micro da usare, il compilatore da usare, ecc...
Se apri solo il file ".c" mancano una serie di informazioni che non gli permettono di eseguire la compilazione.
Nella cartella dove hai trovato il file ".c" dovresti trovare anche un file con estensione "mcp" e uno con estensione "mcw"; il primo è il file di progetto e il secondo è il file di "workspace". Io consiglio sempre di aprire il secondo (quello di workspace) perchè così facendo oltre ad aprirti il file di progetto, ti carica anche una serie di impostazioni che caratterizzano l'ide, come per esempio la posizione e la dimensione delle finestre (insomma è come se apri il progetto con in più una serie di settaggi per l'ambiente grafico).
Nella cartella del progetto potresti trovare più file "mcp" o "mcw", questo perchè la Microchip solitamente usa lo stesso codice per più tipi di microcontrollori creando quindi semplicemente nuovi progetti ed utilizzando lo stesso file ".c" (magari con qualche "define" all'interno del codice). Se è così tu scegli quello corrispondente al tuo micro.

Una volta aperto il file di progetto o il workspace, dovresti trovare aperta una finestra che contiene tutti i file di progetto organizzati in cartelle, se non la trovi vai sul menù "View" e clicca sulla voce "Project". Se avvi la compilazione (menù "project" voce "build all") non ti dovrebbe dare più quel tipo di errore (magari altri, come di solito :) ).
A questo punto puoi programmare (o fare il debug se hai uno strumento di debug) e vedere se funziona.

Effettivamente la parte di include che hai riportato è strana, sicuro di aver copiato bene? Comunque e ti compila vai tranquillo.

Facci sapere.

ritratto di Fabrizio87
Offline
Titolo: User++
Utente++
Ultima visita:
1 anno 44 settimane fa
Utente dal: 30/01/2011
Messaggi: 91
Noia è superiore usavamo i

Noia è superiore usavamo i seguenti programmi secondo quale tipo di microcontrollori volevano lavorarci sopra:
PIC 10 Simulator IDE
PIC Simulator IDE
PIC 18 Simulator IDE
Z80 Simulator IDE
AVR Simulator IDE

Dopo verso la fine ho incominciato a usare il linguaggio c quindi usavamo gcc-pic
È infine la scuola aveva comprato development board EasyPIC3 ,
E questo aveva il suo proprio compilatore in linguaggio C e BAsic

ritratto di ardila
Offline
Titolo: User
Utente
Ultima visita:
1 anno 31 settimane fa
Utente dal: 28/09/2011
Messaggi: 6
Ok, grazie Lucagiuliodori,

Ok, grazie Lucagiuliodori, grazie x le dritte finalmente scaricando la versione 8.41 sono riuscito a fare girare il programmino che blinca i led ovvero li fa accendere e spengere in seguenza. Adesso mi dovrò esercitare un po' per fare il programmino che dicevo ovvero assegnare un numero a ciascun tasto tipo 2 (tasto A) 5 (tasto B) 7 (tasto C) poi a seconda del tasto che premo viene confrontato il dato memorizzato sul pic tipo ad esempio 5.
Quindi se premo tasto A mi dà luce verde, tasto B luce gialla, tasto c luce rossa.

scritto in uno pseudo linguaggio sarebbe:

int a=2
int b=5
int c=7
int d=5

scanf tasto A
A=a
if a printf luce verde
else
scanf tasto B
B=b
if b=d
printf luve gialla
else
scanf tasto C
C=c
if c>d
printf luce rossa

Vorrei un po' un aiuto su come potrebbe essere possibile scrivere questo codice, nel senso se devo chiamare una funzione o altro, il problema è che che non ho mai scritto niente in C.

ritratto di lucagiuliodori
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
1 settimana 5 giorni fa
Utente dal: 21/03/2011
Messaggi: 195
Ciao ardila, vedo che sei

Ciao ardila,

vedo che sei riuscito a trovare l'esempio della Microchip giusto, bene.

Non sapevo che non avessi mai scritto nulla in C...ti conviene dare un occhiata ai tutorial che trovi in rete (ti consiglio il sito www.html.it, ha molte guide utili anche a chi è alle prime armi) e comunque, da quelle poche righe di pseudo-codice che vedo mi sembra che proprio proprio a digiuno di programmazione non sei, quindi non ti dovrebbe essere difficile iniziare a programmare in C.

Comunque sia per il software che dovrai implementare non dovrai fare grandi cose o modifiche, basta che vai dentro il blocco di codice del "while(1) { ... }" (che sarebbe la MainLoop del codice) e dentro la funzione "ChangeNotice_Handler" (che sarebbe la funzione che gestisce il lampeggio tramite interrupt) e commenti tutto quello che c'è dentro (di solito per questi esempi semplici c'è solo il necessario e non ci sono chiamate a funzioni di qualche libreria, quindi puoi commentare senza problemi; per commentare in C o usi la doppia barra "//" per commentare una singola riga, oppure per commentare più righe insieme, puoi usare "/*" per aprire il commento e "*/" per chiuderlo. Fai attenzione a chiudere sempre i commenti, altrimenti il compilatore considera tutto come un commento); a questo punto dentro il blocco "while(1) { ... }" inserisci il seguente codice:

#define val_thr 5
char val;

if(PORTDbits.RD6 == 0)
val=2;
else if(PORTDbits.RD7 == 0)
val=5;
else if(PORTDbits.RD8 == 0)
val=7;

if(val PORTDbits.RD0 == 1;
else if(val==val_thr)
PORTDbits.RD1 == 1;
else if(val>val_thr)
PORTDbits.RD2 == 1;

il nome "val_thr" è una "define" così se vuoi modificare la soglia di discriminazione basta che modifichi il valore definito all'inizio del codice.

All'inizio del codice trovi le seguenti due righe di codice:
PORTSetPinsDigitalOut(IOPORT_D, BIT_0 | BIT_1);
PORTSetPinsDigitalIn(IOPORT_D, BIT_6 | BIT_7);

sostituiscile con le due seguenti:
PORTSetPinsDigitalOut(IOPORT_D, BIT_0 | BIT_1 | BIT_2);
PORTSetPinsDigitalIn(IOPORT_D, BIT_6 | BIT_7 | BIT_7);

sono per settare la direzione dei pin dei led e dei pulsanti rispettivamente.

Non sono sicuro sui pin che pilotano i led e i pulsanti ma settando in modo corretto quelli dovrebbe funzionare.

Facci sapere.

ritratto di ardila
Offline
Titolo: User
Utente
Ultima visita:
1 anno 31 settimane fa
Utente dal: 28/09/2011
Messaggi: 6
Nada, adesso (forse) c'è un

Nada, adesso (forse) c'è un altro problema.
Ho scaricato il codice che mi avevi detto, però poi apro mplab faccio apri dall'icona verde e non apri dall'icona gialla carico il file .mcw e poi però mi si blocca l'MPLAB ovvero viene una finestra con scritto: "target device ID (00038000) does not match expected device ID (00007000).
cliccando su ok, poi dopo un po' il programma mplab rimane sullo stato "non risponde" poi si risblocca e a questo punto carico il programma in memoria e poi run, il programma gira ma se pigio qualsiasi pulsante non fa niente.

Mettendo le modifiche che mi hai suggerito mi dice built failed fin dall'inizio

ritratto di telegiangi61
Offline
Titolo: User+
Utente+
Ultima visita:
16 settimane 1 giorno fa
Utente dal: 28/05/2010
Messaggi: 31
Utente PREMIUM
Tutorial C18

Ciao Ardila,

secondo me anche il tutorial che trovi su Laurtec.com puo' esserti utile per comprendere il linguaggio C e le sue strutture, immediatamente trasportabili sul Pic32.

http://www.laurtec.it/tutorial/cad-e-software

La guida C18 Step By Step e' utilissima e completa, offrendo da subito spunti ed esempi.

non so se qualcuno te lo abbia gia' suggerito, ma qualcosa che fa al caso tuo potresti trovarlo qui dove fanno un esempio simile al tuo e proprio con la scheda che hai.
http://dev.emcelettronica.com/debugging-pic32-how-to-start

Per il resto devi andare su uno dei tanti siti dedicati, io attingo spesso dal sito www.mypic32.com dove trovi molti esempi e discussioni sul forum specifiche per questo tipo di processore.

http://www.mypic32.com/web/guest/resources

quando avrai fatto pratica ti staranno molto stretti i 3 pulsanti e i 3 led disponibili sullo starter kit.
Ti consiglio la scheda di espansione distribuita anc da Farnell Italia
MICROCHIP - DM320002 - BOARD, I/O EXPANSION FOR PIC32
che attraverso il connettore da 120 poli sotto la scheda starter kit ti porta fuori tutti i pin e le funzioni (e sono proprio tante) per poter fare tutto quello che ti viene in mente.

L'anno scorso c'era una societa' Umbra che aveva realizzato 5 o 6 tipi di schede di espansione molto interessanti per gli starter kit Pic32

http://www.innovactive.it/post/2010/06/18/Primi-passi-con-il-PIC32.aspx

Non so se le vendono ancora (su Ebay non li vedo piu'), pero' ricordo che dal sito si potevano scaricare alcuni progetti da poter studiare.

ritratto di ardila
Offline
Titolo: User
Utente
Ultima visita:
1 anno 31 settimane fa
Utente dal: 28/09/2011
Messaggi: 6
Cmq ieri l'altro quando

Cmq ieri l'altro quando scrissi un po' l'esempio in pseudo codice, lo scrissi male infatti non lo scrissi tutto, lo riscrivo meglio adesso:

int a=2
int b=5
int c=7
int d=5

scanf tasto A
A=a
if a>d
printf luce rossa

scanf tasto B
B=b
if b=d
printf luce gialla

scanf tasto C
C=c
if c printf luce verde

ritratto di ardila
Offline
Titolo: User
Utente
Ultima visita:
1 anno 31 settimane fa
Utente dal: 28/09/2011
Messaggi: 6
RIUSCITO !!!!

#include <plib.>

const int LED1 = BIT_0;
const int LED2 = BIT_1;
const int LED3 = BIT_2;
const int SW1 = BIT_6;
const int SW2 = BIT_7;
const int SW3 = BIT_13;

int main()
{
int n;
int s=2;
int m=5;
int z=8;
int rif=5;
mPORTDSetPinsDigitalIn(SW1 | SW2 | SW3 );
mPORTDSetPinsDigitalOut(LED1 | LED2 | LED3);
while (1) {

n=mPORTDReadBits(SW1);

if (s<rif)
if (n) mPORTDClearBits(LED1);
else mPORTDSetBits(LED1);
if (s==rif)
if (n) mPORTDClearBits(LED2);
else mPORTDSetBits(LED2);
if (s>rif)
if (n) mPORTDClearBits(LED3);
else mPORTDSetBits(LED3);

n=mPORTDReadBits(SW2);

if (m<rif)
if (n) mPORTDClearBits(LED1);
else mPORTDSetBits(LED1);
if (m==rif)
if (n) mPORTDClearBits(LED2);
else mPORTDSetBits(LED2);
if (m>rif)
if (n) mPORTDClearBits(LED3);
else mPORTDSetBits(LED3);

n=mPORTDReadBits(SW3);

if (z<rif)
if (n) mPORTDClearBits(LED1);
else mPORTDSetBits(LED1);
if (z==rif)
if (n) mPORTDClearBits(LED2);
else mPORTDSetBits(LED2);
if (z>rif)
if (n) mPORTDClearBits(LED3);
else mPORTDSetBits(LED3);

}
return 0;
}

ritratto di lucagiuliodori
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
1 settimana 5 giorni fa
Utente dal: 21/03/2011
Messaggi: 195
Ciao ardila, cerchiamo di

Ciao ardila,

cerchiamo di andare per ordine nella risoluzione dei problemi:

- fai bene ad aprire il file di workspace con "l'icona apri verde" perchè è proprio quella che ti permette di aprire gli workspace.
Anche se mi sembra una cosa strana visto che la Microchip da questo esempio proprio per lo starter kit, l'errore "target device ID (00038000) does not match expected device ID (00007000)." che ti viene restituito dovrebbe essere perchè il dispositivo che c'è settato nel progetto non è quello che hai sull'hardware. A questo punto ho una domanda: quando apri il workspace, hai già lo strumento di sviluppo già collegato al processore?! Fai caso se il PIC selezionato per il progetto (lo vedi in fondo a sinistra nella barra di stato dell'MPLAB) è quello che tu hai nell'hardware, comunque sia per cambiarlo basta che vai sul menù "Configure" e seleziona la voce "Select Device".

- il fatto che ti da "Buld Failed" fin dall'inizio bisogna capire perchè; di solito il "Buld Failed" è preceduto da una serie di errori che ti fanno capire perchè la compilazione non è andata a buon fine. Magari manca qualche definizione o c'è qualche definizione sbagliata, il codice che ti ho suggerito l'ho fatto senza hardware sotto mano, quindi sicuramente non c'è qualcosa che non è corretto.

- riguarda il tuo ultimo codice che hai scritto: ti consiglio di utilizzare delle "#define LED1 BIT_0" anzichè "const int LED1 = BIT_0;" così risparmi spazio in ram. Ci sono degli "if" poco chiari, come per esempio "if (srif)", "if (mrif)" e "if (zrif)", effettivamente questi "if" non producono nessun effetto nel flusso del software.
Quello che hai fatto non è un vero software che fa il confronto, quello che fai è di accendere un determinato LED se un determinato pulsante risulta premuto, alla fine il risultato che vedi è lo stesso ma non è proprio il software che volevi realizzare.

Facci sapere.

ritratto di ardila
Offline
Titolo: User
Utente
Ultima visita:
1 anno 31 settimane fa
Utente dal: 28/09/2011
Messaggi: 6
domani metterò il codice in C

domani metterò il codice in C che ho scritto x il comparatore
Purtroppo l'avevo già pubblicato, ma come successo altre volte il copia incolla non ha funzionato per bene e quindi si sono mangiati alcuni caratteri titpo l'uguale

a presto e un saluto a tutti

ritratto di Emanuele
Offline
Titolo: Moderator
Moderatore
Ultima visita:
12 ore 54 min fa
Utente dal: 28/07/2007
Messaggi: 1022
Utente PREMIUM
HTML e caratteri speciali

Per inserire il codice all'interno dell'articolo è opportuno usare i seguenti accorgimenti:

SIMBOLO MINORE: utilizzare il carattere speciale &lt seguito da ; (senza spazi)
SIMBOLO MAGGIORE: utilizzare il carattere speciale &gt seguito da ; (senza spazi)

Tramite l'anteprima potete verificare la giusta visualizzazione

ritratto di lucagiuliodori
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
1 settimana 5 giorni fa
Utente dal: 21/03/2011
Messaggi: 195
Grazie Emanuele, non ci avevo

Grazie Emanuele, non ci avevo pensato a questa cosa e mi sono accorto solo ora che anche il mio articolo mancava dei segni di maggiore o minore. Questo è il codice in cui mancava: "val>val_trh"

ritratto di Ardila_2
Offline
Titolo: User+
Utente+
Ultima visita:
1 anno 27 settimane fa
Utente dal: 27/10/2011
Messaggi: 14
Ciao Luca, sono Ardila

Ciao Luca, sono Ardila purtropo ho dovuto rifare un profilo nuovo perchè tutte le volte mi diceva sempre password errata all'accesso. Non so se è questa la sezione giusta del forum, in tal caso forse apro un topic vuovo. Il PIC mi sta davvero appassionando, dopo aver risolto il progetto del comparatore con il PIC 32 adesso sempre per i bisogni universitari mi devo cementare in un'altra cosina.
Volevo fare una misura dei watt che può assorbire un determinato elettrodomestico: frigorifero, lavatrice, lavapiatti ecc. Ho poi bisogno di buttare fuori tale lettura da una porta ethernet, il tutto quindi usando un powerline. Siccome è un po' impossibile, per le mie consocienze, fare eseguire tale operazione da un powerline avrei pensato di mettere un PIC che faccia la lettura della potenza assorbita dall'elettrodomestico attaccato in parallelo al powerline e che tale PIC mandi poi la lettura sull'interfaccia ethernet del powerline in modo poi da prendere tale valore.
Forse sarebbe meglio eprire un novo topic?
Ho possibilità di aiuto per questo progetto?

ritratto di lucagiuliodori
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
1 settimana 5 giorni fa
Utente dal: 21/03/2011
Messaggi: 195
Bè sicuramente se apri

Bè sicuramente se apri un'altro topic è più pertinente alla tua richiesta ma credo che comunque non ti banna nessuno (dovresti sentire Emanuele per questo, lui ti sa dire meglio).

Comunque, tornando alla tua richiesta, non ho ben capito come deve funzionare il progetto: devi misurare la potenza assorbita da un utilizzatore (lavatrice, lavastoviglie, frigorifere, ...) e inviare il risultato su Ethernet giusto? Parli anche di "powerline" ma non riesco a capire cosa centra in questo caso...

Comunque per quanto riguarda la parte Ethernet non c'è problema perchè la Microchip mette a disposizione lo stack necessario fino a livello "HTTP".
Per quanto riguarda il monitorare la potenza assorbita il problema è più hardware che software in quanto per il microcontrollore devi utilizzare semplicemente un convertitore AD e quindi convertire il valore in maniera opportuna.

Fammi sapere.

ritratto di Ardila_2
Offline
Titolo: User+
Utente+
Ultima visita:
1 anno 27 settimane fa
Utente dal: 27/10/2011
Messaggi: 14
Grazie di tutto x ora. Ho

Grazie di tutto x ora.
Ho aperto un topic nuovo sempre nella sezione microcontrollori.
Aspetto che si scateni la valanga di risposte tue, di Emanuele e altri

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 1 utente e 32 visitatori collegati.

Utenti online

Ultimi Commenti