PDA

View Full Version : [C] problema delay


CL4UD1O83
05-06-2008, 09:49
ciao a tutti,
sto sviluppando un programma in C per i dsPIC e ho bisogno di inserire un ritardo. ho trovato il file delay.h allegato al compilatore ma non riesco a capire come si usa. vi allego il file:
/* Change the following definition to match the instruction frequency
of the application in MIPS (MHz) */
#define Fcy 30000000

void Delay( unsigned int delay_count );
void Delay_Us( unsigned int delayUs_count );

#define Delay200uS_count (Fcy * 0.0002) / 1080
#define Delay_1mS_Cnt (Fcy * 0.001) / 2950
#define Delay_2mS_Cnt (Fcy * 0.002) / 2950
#define Delay_5mS_Cnt (Fcy * 0.005) / 2950
#define Delay_15mS_Cnt (Fcy * 0.015) / 2950
#define Delay_1S_Cnt (Fcy * 1) / 2950

se io chiamo nel programma la funzione

Delay( Delay_1S_Cnt );

il compilatore mi dice "undefined reference to `Delay'", dove sbaglio?
grazie in anticipo.

banryu79
05-06-2008, 10:52
Ovviamente, a parte l'include del header file dove c'è la dichiarazione della funzione immagino tu abbia anche linkato il file oggetto (o quello che è) della libreria.
Puoi postare il comando che usi per lanciare il processo di compilazione?

CL4UD1O83
05-06-2008, 11:14
ehh...mi cogli impreparato! per quanto riguarda la compilazione la faccio partire da MPLAB, per quanto riguarda il file oggetto...dove lo trovo? ho linkato le librerie coff, il file header per il dsPIC30F4011 e un file gld e fino ad ora con CAN e UART non ho avuto bisogno di linkare nient'altro. il vero problema mi sa che è dovuto al fatto che non c'è nessun file .c dove sono definite le funzioni o sbaglio?

banryu79
05-06-2008, 11:55
ehh...mi cogli impreparato! per quanto riguarda la compilazione la faccio partire da MPLAB, per quanto riguarda il file oggetto...dove lo trovo? ho linkato le librerie coff, il file header per il dsPIC30F4011 e un file gld e fino ad ora con CAN e UART non ho avuto bisogno di linkare nient'altro. il vero problema mi sa che è dovuto al fatto che non c'è nessun file .c dove sono definite le funzioni o sbaglio?

Bhe, il file .coff è il file oggetto, però non so se sia il file che contiene la definizione della funzione dichiarata nell'header in questione.

MPLAB non sapevo cosa fosse, ho googleato e ho visto che è l'IDE in cui sviluppi, quindi immagino che per lanciare il processo di compilazione tu devi solo pigiare un bottone.

Non riesci a risalire alla riga di comando per la compilazione? O magari al makefile?
Probabilmente trovi queste informazioni nel setting del Progetto...

PS.: file gdl, CAN e UART non so cosa siano :D

CL4UD1O83
05-06-2008, 13:57
Bhe, il file .coff è il file oggetto, però non so se sia il file che contiene la definizione della funzione dichiarata nell'header in questione.

la risposta temo sia no! il problema è che non sapendo dove recuperare la definizione è meglio che cambi strada...mi scriverò una funzione "grezza" che mi genera un ritardo.


Non riesci a risalire alla riga di comando per la compilazione? O magari al makefile?
Probabilmente trovi queste informazioni nel setting del Progetto...

ora ci provo...

PS.: file gdl, CAN e UART non so cosa siano

CAN e UART sono le due periferiche di cui ho già sfruttato parecchie funzioni scritte da Microchip senza avere problemi, scusami non sono stato chiaro. il file .gdl è uno script che serve al linker per funzionare...

grazie mille per la risposta!

banryu79
05-06-2008, 14:49
la risposta temo sia no! il problema è che non sapendo dove recuperare la definizione è meglio che cambi strada...mi scriverò una funzione "grezza" che mi genera un ritardo.


Sei hai tempo "a perdere" potresti cercare su internet uno di quei tools che ti permettono di ottentere un dump di un file .coff (e anche di altri formati, tipo .elf et similia) così vedi se lì dentro c'è la funzione o meno.