Pagina 1 di 1

Nomi dei registri e .h

MessaggioInviato: 23 mar 2014, 11:05
da wizard
Salve, uso da poco MPLABX e XC8 come compilatore
Ho il seguente problema: se scrivo

Codice: Seleziona tutto
TRISBbits.RB2=1;

nel main non ho problemi; tuttavia se sposto la scritta in un qualsiasi .h mi dà i seguenti errori
Questi si verificano per qualsiasi registro io scelga

power_width_modulation.h:14: warning: (374) missing basic type; int assumed
power_width_modulation.h:14: error: (984) type redeclared
power_width_modulation.h:14: error: (1098) conflicting declarations for variable "TRISBbits" (power_width_modulation.h:14)


Non riesco a capire cosa ridichiaro visto che è la prima volta che lo uso in tutto il progetto
Qualcuno ha mai trovato un problema del genere?

Annuncio che tra le svariate prove fatte, ho anche creato una nuova libreria che mi ridefinisse i registri e, giustamente, il compilatore mi dice che ci sono 2 dichiaraioni diverse dello stesso nome. Da ciò ho dedotto che il problema potrebbe essere dovuto al .h pic18f4550 che mi crea di default non appena creo il progetto.
Quindi una prova che vorrei fare è quella di fare in modo che escluda la lettura da questo file e mi vada a leggere dalla libreria creata da me...qualcuno sa come farlo?

Re: Nomi dei registri e .h

MessaggioInviato: 23 mar 2014, 11:42
da c1b8
Ho finalmente installato MPLab X, se posti tutto il codice posso fare qualche prova...

Re: Nomi dei registri e .h

MessaggioInviato: 23 mar 2014, 11:51
da wizard
ciao, sempre tu in mio soccorso :lol:
Allora, se faccio così va bene
Codice: Seleziona tutto
#include <xc.h>
#include "pic_config.h"
#include "power_width_modulation.h"

void main(void)
{
TRISBbits.TRISB2=0;
}


Se faccio così mi dà errore
Codice: Seleziona tutto
#ifndef POWER_WIDTH_MODULATION_H
#define   POWER_WIDTH_MODULATION_H

#include <xc.h>

TRISBbits.TRISB2=0;

#endif   /* POWER_WIDTH_MODULATION_H */

Re: Nomi dei registri e .h

MessaggioInviato: 23 mar 2014, 12:06
da c1b8
wizard ha scritto:ciao, sempre tu in mio soccorso :lol:

Ciao, già! mi spiace :mrgreen:

Non puoi scrivere
Codice: Seleziona tutto
TRISBbits.TRISB2=0;
così nel "nulla", devi metterlo dentro una funzione o una routine.
Lo stesso errore lo avresti anche se si trovasse in un .c ma all'esterno delle funzioni.

Re: Nomi dei registri e .h

MessaggioInviato: 23 mar 2014, 12:10
da wizard
c1b8 ha scritto:Ciao, già! mi spiace

:lol: no invece fa piacere avere una sorta di angelo custode :D

Ora va bene :roll: ma questa cosa mi risulta strana perché col C18 la potevo fare tranquillamente...perché c'è bisogno di metterla in una funzione?

Re: Nomi dei registri e .h

MessaggioInviato: 23 mar 2014, 14:05
da c1b8
Quello che puoi fare esternamente alle funzioni/routine è dichiarare una variabile o una struttura
Codice: Seleziona tutto
int pippo;

ed eventualmente inizializzarla:
Codice: Seleziona tutto
int pippo=0;

Dichiarazione ed inizializzazione devono essere contemporanee, una scrittura tipo:
Codice: Seleziona tutto
int pippo;
pippo=0;
è errata perché la seconda riga è una istruzione di assegnazione e non di inizializzazione e come tale deve essere eseguita internamente ad una routine/funzione.

Nel tuo caso stavi assegnado un valore ad un bit (TRISB2) in una riga diversa dalla dichiarazione del bit stesso.

Re: Nomi dei registri e .h

MessaggioInviato: 23 mar 2014, 14:24
da EcoTan
c1b8 ha scritto:è una istruzione di assegnazione e non di inizializzazione e come tale deve essere eseguita internamente ad una routine/funzione.

Ho scritto qualche programmino in C (anche qui fra gli articoli mi è capitato di allegarne uno) per la verità programmando soltanto tramite imitazione e per tentativi, i registri li imposto tranquillamente all'inizio del main program e poi vado in loop, il resto del lavoro lo svolgono le ISR.
Dunque è di sbagliato? Intanto posso dire che funziona.

Re: Nomi dei registri e .h

MessaggioInviato: 23 mar 2014, 17:04
da c1b8
EcoTan ha scritto:Dunque è di sbagliato?
Non capisco la domanda, scusa.
Tieni presente che il main() è un routine, particolare ma è una routine.

Re: Nomi dei registri e .h

MessaggioInviato: 23 mar 2014, 18:43
da EcoTan
OK grazie.

Re: Nomi dei registri e .h

MessaggioInviato: 23 mar 2014, 18:45
da wizard
Grazie anche da parte mia Foto Utentec1b8 O_/