MECCANICA e DINTORNI

COSTRUIAMO LE NOSTRE CNC DIVERTENDOCI CON L'AIUTO DI TANTI PROFESSIONISTI ESPERTI
Oggi è gio mar 28, 2024 10:09

Tutti gli orari sono UTC +1 ora




Apri un nuovo argomento Rispondi all’argomento  [ 7 messaggi ] 
Autore Messaggio
 Oggetto del messaggio: dsPIC30F4011 dichiarazione variabili
MessaggioInviato: sab mar 23, 2013 18:29 
Non connesso
TORNITORE E FRESATORE
Avatar utente

Iscritto il: sab set 13, 2008 15:29
Messaggi: 1534
Località: Fornaci di Barga (LU)
Sto cominciando ad usare i dspic. Quello che non riesco a trovare nei manuali, è il modo di dichiarare un blocco di variabili, specificando in che punto della ram voglio che siano allocate.
Tutti i sistemi di dichiarazione che ho trovato collocano la prima variabile nella prima locazione libera (nel caso del processore in oggetto alla locazione 0x0800), e le altre a seguito. Ma se per qualche motivo voglio che più variabili (al limite anche tutte) siano posizionate a partire da un'altra locazione (ad esempio perchè alla locazione 0x0800 ho posizionato lo stack) come faccio?
Come compilatore uso mplab con il pacchetto c30 lite, anche se programmo in asm, perchè mi permette di utilizzare direttive di compilazione che nell'asm30 non ci sono...

Ciao e grazie a tutti!

_________________
Non accontentarti mai, scegli gli strumenti giusti, usali bene, non accettare compromessi, pretendi il successo. Poi ricomincia da capo.

Nel mondo esistono 10 tipi di persone:
-chi conosce il codice binario
-chi non conosce il codice binario


Top
 Profilo  
 
 Oggetto del messaggio: Re: dsPIC30F4011 dichiarazione variabili
MessaggioInviato: sab mar 23, 2013 19:26 
Non connesso
AMMINISTRATORE
Avatar utente

Iscritto il: sab ott 25, 2008 14:27
Messaggi: 3553
Località: Serenissima Repubblica Veneta
se ti puo' aiutare :

#include "p30f4011.h"
#include "p30fxxxx.h"
#include "LCD_44780.h"
#include "delay.h"
#include "qei.h"
#define FCY 30000000UL //Unsigned Long
#include "libpic30.h"

/* impostazioni micro :*/
_FOSC(CSW_FSCM_OFF & FRC_PLL16); /* Set up for FCR and PLL x 16 120 mhz fcy 30mhz 30 mips */
_FWDT(WDT_OFF); /* Turn off the Watch-Dog Timer. */
_FBORPOR(MCLR_EN & PWRT_OFF); /* Enable MCLR reset pin and turn off the power-up timers. */
_FGS(CODE_PROT_OFF); /* Disable Code Protection */


//-------------------------------------------------------------------//
// DEFINIZIONE COSTANTI //
//-------------------------------------------------------------------//

#define led1 LATFbits.LATF4
#define led2 LATFbits.LATF5
#define step LATEbits.LATE4
#define direzione LATEbits.LATE3
#define enable LATEbits.LATE0
#define reset LATEbits.LATE5

#define pulsante1 PORTDbits.RD2
#define pulsante2 PORTFbits.RF1
#define pulsante3 PORTFbits.RF0
#define pulsante4 PORTEbits.RE8
#define ventola PORTEbits.RE2
#define PWMVREF 400
#define PWMFREF 000
#define RAPPORTO_RIDUZIONE 0.05495
#define RAPPORTO_CONVERSIONE_CORRENTE 2.5615
#define FWD 1
#define RWD 0
// ingressi digitali

//#define LCD-BACK LATFbits.LATF6


//-------------------------------------------------------------------//
// VARIABILI GLOBALI //
//-------------------------------------------------------------------//
unsigned char state;
unsigned int pos_value;
unsigned int valore_eeprom[16];
unsigned int valore2_eeprom[16];
unsigned int table_ram[16];
char contatore_riga;
char contatore_riga1;
char contatore_riga_back;
unsigned char conferma_salvataggio;
unsigned char fase_ciclo;
unsigned int n_impulsi_fw;
unsigned int n_impulsi_rw;
unsigned int n_impulsi_pausa;
unsigned int n_impulsi;
unsigned char status_step;
unsigned char status_direzione;
unsigned int velocita_FW;
unsigned int velocita_RW;
unsigned int lunghezza_FW;
unsigned int lunghezza_RW;
unsigned int t_pausa;
unsigned int Tempo1;
unsigned int Tempo2;
unsigned int contatore_timer1;
unsigned int canale0;
unsigned int canale1;
unsigned int canale2;
unsigned int canale3;
unsigned int canale0_old;
unsigned int canale1_old;
unsigned int canale2_old;
unsigned int canale3_old;
unsigned int FIR_1;
unsigned int FIR_2;
unsigned int contatore_timer2;
unsigned int valore_corrente_start;
unsigned int valore_corrente_stop;
unsigned char fase_prog0;
int corrente_misurata;

//-------------------------------------------------------------------//
// INIZIALIZZAZIONE EEPROM //
//-------------------------------------------------------------------//

unsigned int _EEDATA(32) table0[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
unsigned int _EEDATA(32) table1[16] = {1, 30, 5, 5, 5, 0, 1, 8, 2, 1, 1, 3, 8, 14, 15, 16,};
unsigned int _EEDATA(32) table2[16] = {2, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,};
unsigned int _EEDATA(32) table3[16] = {3, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,};
unsigned int _EEDATA(32) table4[16] = {4, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,};

//-------------------------------------------------------------------//
// PROTOTIPI DI FUNZIONE //
//-------------------------------------------------------------------//

void _ISR _INT0Interrupt(void);
void _ISR _INT1Interrupt(void);
void _ISR _INT2Interrupt(void);
void _ISR _T1Interrupt(void);
void _ISR _T2Interrupt(void);
void _ISR _ADCInterrupt(void);
void QEI_setup(void);
void PWM_setup(void);
void ADC_setup(void);

_________________
- internet + cabernet
- V8 Power
l'esperienza non si compra ma si paga


Top
 Profilo  
 
 Oggetto del messaggio: Re: dsPIC30F4011 dichiarazione variabili
MessaggioInviato: dom mar 24, 2013 16:09 
Non connesso
TORNITORE E FRESATORE
Avatar utente

Iscritto il: sab set 13, 2008 15:29
Messaggi: 1534
Località: Fornaci di Barga (LU)
Eh... fino qui c'ero... però in questo modo il compilatore mette la prima variabile ("state" nel tuo esempio) alla locazione 0x800. Se voglio inziare da un'altra locazione non so come fare...

_________________
Non accontentarti mai, scegli gli strumenti giusti, usali bene, non accettare compromessi, pretendi il successo. Poi ricomincia da capo.

Nel mondo esistono 10 tipi di persone:
-chi conosce il codice binario
-chi non conosce il codice binario


Top
 Profilo  
 
 Oggetto del messaggio: Re: dsPIC30F4011 dichiarazione variabili
MessaggioInviato: ven apr 12, 2013 14:15 
Non connesso
AMMINISTRATORE
Avatar utente

Iscritto il: sab ott 25, 2008 14:27
Messaggi: 3553
Località: Serenissima Repubblica Veneta
Devi guardare il manuale del compilatore C30 li c'e' scritto come si dichiara , ci sono gli attributi far e near , da usare
piuttosto che altri

_________________
- internet + cabernet
- V8 Power
l'esperienza non si compra ma si paga


Top
 Profilo  
 
 Oggetto del messaggio: Re: dsPIC30F4011 dichiarazione variabili
MessaggioInviato: sab apr 13, 2013 15:39 
Non connesso
TORNITORE E FRESATORE
Avatar utente

Iscritto il: sab set 13, 2008 15:29
Messaggi: 1534
Località: Fornaci di Barga (LU)
Hai il link microchip del manuale?

_________________
Non accontentarti mai, scegli gli strumenti giusti, usali bene, non accettare compromessi, pretendi il successo. Poi ricomincia da capo.

Nel mondo esistono 10 tipi di persone:
-chi conosce il codice binario
-chi non conosce il codice binario


Top
 Profilo  
 
 Oggetto del messaggio: Re: dsPIC30F4011 dichiarazione variabili
MessaggioInviato: lun apr 15, 2013 13:02 
Non connesso
AMMINISTRATORE
Avatar utente

Iscritto il: sab ott 25, 2008 14:27
Messaggi: 3553
Località: Serenissima Repubblica Veneta
pagina 12 del manuale C30_users_guide

int foo __attribute__((section("mysection"),address(0x900)));

_________________
- internet + cabernet
- V8 Power
l'esperienza non si compra ma si paga


Top
 Profilo  
 
 Oggetto del messaggio: Re: dsPIC30F4011 dichiarazione variabili
MessaggioInviato: gio apr 18, 2013 22:30 
Non connesso
TORNITORE E FRESATORE
Avatar utente

Iscritto il: sab set 13, 2008 15:29
Messaggi: 1534
Località: Fornaci di Barga (LU)
thank you

_________________
Non accontentarti mai, scegli gli strumenti giusti, usali bene, non accettare compromessi, pretendi il successo. Poi ricomincia da capo.

Nel mondo esistono 10 tipi di persone:
-chi conosce il codice binario
-chi non conosce il codice binario


Top
 Profilo  
 
Visualizza ultimi messaggi:  Ordina per  
Apri un nuovo argomento Rispondi all’argomento  [ 7 messaggi ] 

Tutti gli orari sono UTC +1 ora


Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Cerca per:
Vai a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzione Italiana phpBB.it