meganoide Inserito: 14 settembre 2005 Segnala Inserito: 14 settembre 2005 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.
ifachsoftware Inserita: 14 settembre 2005 Segnala Inserita: 14 settembre 2005 (modificato) Ti allego una parte di esempio fatto con il 30F6010 , ti fa vedere come impostarei 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 QuiCiao /* 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 Loopint main(void){ InitMasterPic(); while(1) { OM0 = IM0 ? 1 : 0; } } Modificato: 14 settembre 2005 da ifachsoftware
meganoide Inserita: 15 settembre 2005 Autore Segnala Inserita: 15 settembre 2005 Ti ringrazio tantissimoDomani mattina la prima cosa che farò sarà provare queso programma.A buon rendere
Calogero Inserita: 18 ottobre 2006 Segnala Inserita: 18 ottobre 2006 - 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?
Livio Orsini Inserita: 18 ottobre 2006 Segnala Inserita: 18 ottobre 2006 Segui i links indicati da Ifach
Calogero Inserita: 18 ottobre 2006 Segnala Inserita: 18 ottobre 2006 molto bella la demoboard di pizza micro. Mi pare però che non sia adatta ai dspic in smd.
walterword Inserita: 19 ottobre 2006 Segnala Inserita: 19 ottobre 2006 una demoboard ha scopi di sviluppo e studio.Le caratteristiche e le risorse del micro sono le stesseNel tuo caso credo che tu abbia bisogno di una piattaforma da utilizzare per il tuo progetto
Calogero Inserita: 19 ottobre 2006 Segnala Inserita: 19 ottobre 2006 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 pensateDimenticavo, il tutto è per la tesi di laurea
ifachsoftware Inserita: 19 ottobre 2006 Segnala Inserita: 19 ottobre 2006 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
Calogero Inserita: 19 ottobre 2006 Segnala Inserita: 19 ottobre 2006 (modificato) 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: 19 ottobre 2006 da Calogero
ifachsoftware Inserita: 20 ottobre 2006 Segnala Inserita: 20 ottobre 2006 Sul sito della Microchip oppure nella confezione dell'ICD2 che serve per programmare in-circuit ...Ciao
Calogero Inserita: 23 ottobre 2006 Segnala Inserita: 23 ottobre 2006 (modificato) 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: 23 ottobre 2006 da Calogero
Calogero Inserita: 25 ottobre 2006 Segnala Inserita: 25 ottobre 2006 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
walterword Inserita: 27 ottobre 2006 Segnala Inserita: 27 ottobre 2006 MA COMPRATI UN BEL KIT PIZZAMICRO !!!!!!!!!!!Dentro al cd hai tutto
Calogero Inserita: 27 ottobre 2006 Segnala Inserita: 27 ottobre 2006 walterword+27/10/2006, 13:03--> (walterword @ 27/10/2006, 13:03) Va be, ho capito qual'è l'andazzo della discussione .......vedrò di darmi da fare da solo, grazie lo stesso.
Livio Orsini Inserita: 27 ottobre 2006 Segnala Inserita: 27 ottobre 2006 Puoi sempre studiarti le AN di microchip: ci sono tutte le informazioni necessarie per realizzare una scheda prototipo esono scaricabili gratuitamente dal sito microchip
Calogero Inserita: 27 ottobre 2006 Segnala Inserita: 27 ottobre 2006 (modificato) 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#dspche ne pensate? Modificato: 27 ottobre 2006 da Calogero
Livio Orsini Inserita: 28 ottobre 2006 Segnala Inserita: 28 ottobre 2006 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.
ifachsoftware Inserita: 29 ottobre 2006 Segnala Inserita: 29 ottobre 2006 Il connettore e' un RJ a 6 PoliPin 1 MCLRPin 2 +5VPin 3 GndPin 4 PGDPin 5 PGCPin 6 LiberoI pin del dsPIC sono MCLR , PGC , PGD Ciao
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora