Vai al contenuto
PLC Forum


Dspic - Primo approccio


meganoide

Messaggi consigliati

Sono un vecchio programmatore di Pic e li ho sempre trovati molto semplici da usare anche perchè ben documentati; Ultimamente ho deciso di utilizzare i DsPic date le loro prestazioni, ma sto trovando una miriade di problemi e gli esempi che mette a disposizione Microchip non mi funzionano. Qualcuno potrebbe mandarmi anche un semplice esempio di programma in C30 FUNZIONANTE dato che non sono riuscito nemmeno ad impostare correttamente il moltiplicatore a PLL per spingere il microcontrollore a 30Mips.

A proposito:

Il DSPIC che uso è 30f3013 a 28 pin ed ho impostato l'opzione per "_Fosc" XT_PLL16 con

un quarzo esterno a 7,36MHz ma la velocità ottenuta è di 10Mips.

Chi sa spiegarmi il motivo?

Grazie.

Link al commento
Condividi su altri siti


Ti allego una parte di esempio fatto con il 30F6010 , ti fa vedere come impostare

i parametri del micro (usa quarzo da 7,5Mhz e x 16 quindi 30MIPS) , l'inizializzazione delle porte e accende un'uscita in base al pulsante premuto.

Se cerchi altri esempi li trovi sul sito della Microchip dove c'e' anche un forum ; oppure se cerchi delle schede per realizzare dei prototipi rapidi con esempi allegati in C per fare delle prove , le trovi Qui

Ciao :)

/*

IFACH SOFTWARE - Calpe , Costa Blanca

-------------------------------------

Program name : dsPicMaster.h

Last Update : 14/Sep/2005

Language ... : MPLAB C30

Edit by .... : Claudio Rossi ... Rouge

(I love when a software comes together !)

*/

#define __dsPIC30F6010__

#include "p30f6010.h"

#include <stdio.h>

#include <ports.h>

#include <timer.h>

#include <uart.h>

#include <qei.h>

// Define degli Ingressi

#define IM0 PORTGbits.RG8 // Ingresso 1

// Define delle Uscite

#define OM0 LATBbits.LATB8 // Uscita 1

/*

IFACH SOFTWARE - Calpe , Costa Blanca

-------------------------------------

Program name : Esempio.c

Last Update : 14/Sep/2005

Language ... : MPLAB C30

Edit by .... : Claudio Rossi ... Rouge

(I love when a software comes together !)

*/

#include "dsPicMaster.h"

_FOSC(CSW_FSCM_OFF & XT_PLL16);

_FBORPOR(PBOR_ON & BORV_42 & PWRT_64 & MCLR_EN);

_FWDT(WDT_OFF & WDTPSA_512 & WDTPSB_16);

_FGS(CODE_PROT_OFF);

void InitMasterPic(void)

{

ADPCFG = 0xFFFF; // Tutte digitali le analogiche

// RA0 = XXX

// RA1 = XXX

// RA2 = XXX

// RA3 = XXX

// RA4 = XXX

// RA5 = XXX

// RA6 = XXX

// RA7 = XXX

// RA8 = XXX

// RA9 = Ingresso :

// RA10 = Ingresso :

// RA11 = XXX

// RA12 = XXX

// RA13 = XXX

// RA14 = Ingresso :

// RA15 = SLAVE_ACK (/INT3)

LATA = 0x0000;

TRISA = 0xFFFF; // Imposta la Porta A

// RB0 = Ingresso : PGD

// RB1 = PGC

// RB2 = Uscita :

// RB3 = Ingresso : Z Encoder

// RB4 = A Encoder

// RB5 = B Encoder

// RB6 = Uscita :

// RB7 = Uscita :

// RB8 = Uscita :

// RB9 = Uscita :

// RB10 = Uscita :

// RB11 = Uscita :

// RB12 = Uscita :

// RB13 = Uscita :

// RB14 = Uscita :

// RB15 = Uscita :

LATB = 0x0000;

TRISB = 0x003B; // Imposta la Porta B

// RC0 = XXX

// RC1 = Ingresso :

// RC2 = XXX

// RC3 = Ingresso :

// RC4 = XXX

// RC5 = XXX

// RC6 = XXX

// RC7 = XXX

// RC8 = XXX

// RC9 = XXX

// RC10 = XXX

// RC11 = XXX

// RC12 = XXX

// RC13 = Ingresso : QUARZO OROLOGIO

// RC14 = QUARZO OROLOGIO

// RC15 = XXX

LATC = 0x0000;

TRISC = 0xFFFF; // Imposta la Porta C

// RD0 = Output :

// RD1 = Output :

// RD2 = Output :

// RD3 = Output :

// RD4 = Output :

// RD5 = Output :

// RD6 = Output :

// RD7 = Output :

// RD8 = Output :

// RD9 = Output :

// RD10 = Output :

// RD11 = Output :

// RD12 = Output :

// RD13 = Output :

// RD14 = Output :

// RD15 = Output :

LATD = 0x0000;

TRISD = 0x0000; // Imposta la Porta D

// RE0 = Ingresso :

// RE1 = Ingresso :

// RE2 = Ingresso :

// RE3 = Ingresso :

// RE4 = Ingresso :

// RE5 = Ingresso :

// RE6 = Ingresso :

// RE7 = Ingresso :

// RE8 = Ingresso :

// RE9 = Ingresso :

LATE = 0x0000;

TRISE = 0xFFFF; // Imposta la Porta E

// RF0 = Uscita :

// RF1 = Uscita :

// RF2 = Ingresso :

// RF3 = Uscita :

// RF4 = Ingresso :

// RF5 = Uscita :

// RF6 = Ingresso :

// RF7 = Uscita :

// RF8 = Ingresso :

LATF = 0x0000;

TRISF = 0x0154; // Imposta la Porta F

// RG0 = Ingresso :

// RG1 = Ingresso :

// RG2 = SCL I2C

// RG3 = Uscita : SDA I2C

// RG4 = XXX

// RG5 = XXX

// RG6 = Ingresso :

// RG7 = Ingresso :

// RG8 = Ingresso :

// RG9 = Ingresso :

LATG = 0x0000;

TRISG = 0x3F7; // Imposta la Porta G

}

// Main Loop

int main(void)

{

InitMasterPic();

while(1)

{

OM0 = IM0 ? 1 : 0;

}

}

Modificato: da ifachsoftware
Link al commento
Condividi su altri siti

  • 1 year later...

- Conoscete qualche demoboard per dspic (sia per case dip che smd)?

- Oltre al compilatore C30 , ne esistono altri in C?

- Dove posso trovare qualche semplice script in C(oltre a quello di questo topic) per

iniziare a darci un'occhiata?

Link al commento
Condividi su altri siti

una demoboard ha scopi di sviluppo e studio.

Le caratteristiche e le risorse del micro sono le stesse

Nel tuo caso credo che tu abbia bisogno di una piattaforma da utilizzare per il tuo progetto

Link al commento
Condividi su altri siti

esattamente: ho bisogno di una scheda che contenga il dspic, che mi metta a dispozione gli I/O, l'alimentazione e il connettore per la programmazione ICP.

Eventualmente potrei realizzarla io, ma non so quali sono i pin di programmazione e se tra il connettore per il programmatore e questi pin, il collegamento è diretto o ci sta qualche componete. Pensare che nel datasheet trovo un eventuale schema?

IL dspic che dovrei utilizzare è un 30F3010: devo controllare un dispositivo dove ci sono due motori DC con encoder da controllare in posizione e un altro motore DC da controllare in forza (con anello di corrente). IL feedback per quest'ultimo sono 4 sensori di forza, non so ancora di che tipo, chedo con uscita analogica.

Non so se la versione 28 pin basti oppure devo usare la smd. Voi che ne pensate

Dimenticavo, il tutto è per la tesi di laurea rolleyes.gif

Link al commento
Condividi su altri siti

La scheda segnalata usa un dsPIC 30F4011 ti gestisce fino a 8 ingressi analogiche ed 1 Encoder (che se usato ti riduce a 5 gli ingressi analogici) ; col quarzo da 7,5MHz ha 30MIPS di potenza di calcolo oltre a svariate uscite PWM che la rendono particolarmente indicata per il controllo di motori.

Penso che possa essere un'ottima base per farti capire di cosa stai parlando e fare tutte le prove necessarie per imparare (questo prima di tirare in piedi dispositivi SMD con tutti i relativi problemi e costi ...)

Ciao wink.gif

Link al commento
Condividi su altri siti

prenderò in considerazione la scheda, ma di certo con il denaro dell'università ne posso acquistare/costruire una sola, quindi se questa non risulta adatta allo scopo finale, posso considerarne l'acquisto solo di tasca mia.

Come avvo accennato nel mio precedente post, se volessi realizzare una ad hoc, dove trovo gli schemi per la parte della programmazione ICP?

Modificato: da Calogero
Link al commento
Condividi su altri siti

Sul datasheet del 30F3010 non ho trovato lo schema per l'ICSP, ma solo i piedini che vengono usati. Cercando sul sito microchip ho trovato gli schemi per ICSP per le serie inferiori, ma non per i dspic. Ho cercato anche nella documentazione del ICD2: c'è uno schema simile a quello per la serie 16F, ma non parla del dspic. Non credo che lo schema sia identico per tutte le mcu.

Potreste postarmi lo schema ho indicarmi l'application note esatta?

Supponedo di aver relizzato la motherboard predisposta per ICSP e utilizzare il fiser-programmer (è un clone dell'Epic) e meprog (l'evoluzione di Epicwin) che sono in grado di programmare i dspic: a livello software basta inserire l'opzione per la programmazione ICSP (l'opzione che aggiunge il flag -icsp alla compilazione) o c'è da fare altro?

Modificato: da Calogero
Link al commento
Condividi su altri siti

Mi pare di capire che tutti quelli che usano l'icsp con i dspic non si sono fatti la scheda da se, ma hanno acquistato quella di pizzamicro. Sareste allora così gentili da mandarmi la sezione dello schema elettrico riguardante l'icsp?

Grazie

Link al commento
Condividi su altri siti

walterword+27/10/2006, 13:03--> (walterword @ 27/10/2006, 13:03)

Va be, ho capito qual'è l'andazzo della discussione wallbash.gif .......vedrò di darmi da fare da solo, grazie lo stesso.

Link al commento
Condividi su altri siti

Puoi sempre studiarti le AN di microchip: ci sono tutte le informazioni necessarie per realizzare una scheda prototipo esono scaricabili gratuitamente dal sito microchip

Link al commento
Condividi su altri siti

X Livio:

E' quello che sto cercando di fare. Potresti per favore dare un'occhiata al mio post di giorno 23-10? Ho scritto i dubbi che mi sono venuti cercando sul sito microchip. Grazie ciao.

dimenticavo:l'unico schema che ho trovato dove esplicitamente si parla di dspic è qui:

http://www.sprut.de/electronic/pic/icsp/icsp.htm#dsp

che ne pensate?

Modificato: da Calogero
Link al commento
Condividi su altri siti

Sul datasheet del 30F3010 non ho trovato lo schema per l'ICSP, ma solo i piedini che vengono usati. Cercando sul sito microchip ho trovato gli schemi per ICSP per le serie inferiori, ma non per i dspic.

Non c'è differenza tra DSPIC e PIC. La programmazione avviene trasferendo i dati come fosse un bus I2C: c'è un clock sincrono ed una linea di dati. E' anche indispensabile portare la linea del MR al livello di tensione previsto per la programmazione.

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...