- Messaggi: 25
- Ringraziamenti ricevuti 0
Quando usare l'istruzione #pragma
11 Anni 3 Mesi fa #1
da ter2
Quando usare l'istruzione #pragma è stato creato da ter2
Salve a tutti, sono di nuovo qui a cercare di carpire i vostri segreti di programmazione!
Leggendo il C18-Step by step mi sono imbattuto nell'esempio sui Timers, dove per settare la configurazione dei registri si usa l'istruzione #pragma.
Nei miei progetti ho sempre usato scrivere nei vari bit come se fossero delle normali variabili.
Quindi la domanda è: qual'è la differenza dei due modi di settare i registri ?
Quando è bene usare una e l'altra?
Grazie ragazzi per l'aiuto che mi date!
Leggendo il C18-Step by step mi sono imbattuto nell'esempio sui Timers, dove per settare la configurazione dei registri si usa l'istruzione #pragma.
Nei miei progetti ho sempre usato scrivere nei vari bit come se fossero delle normali variabili.
Quindi la domanda è: qual'è la differenza dei due modi di settare i registri ?
Quando è bene usare una e l'altra?
Grazie ragazzi per l'aiuto che mi date!
Si prega Accedi o Crea un account a partecipare alla conversazione.
- ter2
- Autore della discussione
- Junior Member
Riduci
Di più
11 Anni 3 Mesi fa #2
da shinshi
Risposta da shinshi al topic Quando usare l'istruzione #pragma
Ciao,
#Pragma è una direttiva che dai al compilatore e non è una vera istruzione eseguita dal programma. Serve per settare i registri di configurazione (anche detti fuses) dell'hardware del PIC che non è possibile modificare da programma ma solo al momento della programmazione. La direttiva #Pragma viene usata anche per altri scopi, nell'esempio dei Timer di pag 172 viene anche utilizzata per indicare al compilatore una porzione specifica della memoria programma dove memorizzare il codice, ovvero i vettori di interruzione.
Registri invece accessibile da riga di programma vengono utilizzati come dici tu, tipo una variabile, come ad esempio il registro T0CON per l'impostazione del Timer0.
Saluti
Luca
#Pragma è una direttiva che dai al compilatore e non è una vera istruzione eseguita dal programma. Serve per settare i registri di configurazione (anche detti fuses) dell'hardware del PIC che non è possibile modificare da programma ma solo al momento della programmazione. La direttiva #Pragma viene usata anche per altri scopi, nell'esempio dei Timer di pag 172 viene anche utilizzata per indicare al compilatore una porzione specifica della memoria programma dove memorizzare il codice, ovvero i vettori di interruzione.
Registri invece accessibile da riga di programma vengono utilizzati come dici tu, tipo una variabile, come ad esempio il registro T0CON per l'impostazione del Timer0.
Saluti
Luca
Ringraziano per il messaggio: bassfender
Si prega Accedi o Crea un account a partecipare alla conversazione.
- shinshi
- Elite Member
Riduci
Di più
- Messaggi: 293
- Ringraziamenti ricevuti 29
11 Anni 2 Mesi fa #3
da il duro
Risposta da il duro al topic Quando usare l'istruzione #pragma
Salve a tutti, prima di tutto volevo ringraziarvi per il tempo che spendete a rispondere alle nostre domande, dopo una lotta con il nuovo IDE xc8, con il vostro aiuto ho risolto molti errori,
però l'ultima esecuzione mi dà questi errori.
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory `C:/Users/Noe/MPLABXProjects/memoriz_infra_telec.X'
make -f nbproject/Makefile-default.mk dist/default/production/memoriz_infra_telec.X.production.hex
make[2]: Entering directory `C:/Users/Noe/MPLABXProjects/memoriz_infra_telec.X'
make[2]: Leaving directory `C:/Users/Noe/MPLABXProjects/memoriz_infra_telec.X'
make[1]: Leaving directory `C:/Users/Noe/MPLABXProjects/memoriz_infra_telec.X'
make[2]: *** No rule to make target `inc/delay.h', needed by `dist/default/production/memoriz_infra_telec.X.production.hex'. Stop.
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
BUILD FAILED (exit value 2, total time: 297ms
Grazie ragazzi per l'aiuto che mi date!
però l'ultima esecuzione mi dà questi errori.
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory `C:/Users/Noe/MPLABXProjects/memoriz_infra_telec.X'
make -f nbproject/Makefile-default.mk dist/default/production/memoriz_infra_telec.X.production.hex
make[2]: Entering directory `C:/Users/Noe/MPLABXProjects/memoriz_infra_telec.X'
make[2]: Leaving directory `C:/Users/Noe/MPLABXProjects/memoriz_infra_telec.X'
make[1]: Leaving directory `C:/Users/Noe/MPLABXProjects/memoriz_infra_telec.X'
make[2]: *** No rule to make target `inc/delay.h', needed by `dist/default/production/memoriz_infra_telec.X.production.hex'. Stop.
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
BUILD FAILED (exit value 2, total time: 297ms
Grazie ragazzi per l'aiuto che mi date!
Si prega Accedi o Crea un account a partecipare alla conversazione.
- il duro
- New Member
Riduci
Di più
- Messaggi: 7
- Ringraziamenti ricevuti 0
11 Anni 2 Mesi fa #4
da shinshi
Risposta da shinshi al topic Quando usare l'istruzione #pragma
Ciao,
L'errore mi pare che ti dica che non trova il file inc/delay.h. Controlla i percorsi inseriti nel campo Include directories delle proprietà del progetto.
Saluti
Luca
L'errore mi pare che ti dica che non trova il file inc/delay.h. Controlla i percorsi inseriti nel campo Include directories delle proprietà del progetto.
Saluti
Luca
Si prega Accedi o Crea un account a partecipare alla conversazione.
- shinshi
- Elite Member
Riduci
Di più
- Messaggi: 293
- Ringraziamenti ricevuti 29
11 Anni 2 Mesi fa #5
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Quando usare l'istruzione #pragma
Oltre a controllare i percorsi, accertati di aver incluso anche delay.c .
Saluti,
Mauro
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.