J'ai passé plusieurs heures à chercher un probleme inexistant, car mal aiguillé
par le message d'erreur signalé par le compilo ...
17/11/2023
Probleme signalé sur CPrint ... utilisé auparavant à outrance sans probleme
CPrint sert à envoyer un message string constant sur le terminal YAT (via UART1)
Code : Tout sélectionner
//en ligne 430 du main.c
void CPrint (const char *T1)
{
while(*(T1)>0)
{
while(PIR3bits.U1TXIF==0);
U1TXB=*(T1);
T1++;
}
} le message d'erreur :
Code : Tout sélectionner
C:/MPLABX_Projects/18F27k42_RFID_reader_2023-11.X/RC522_SPI_Hardw.X.c:207::
error: (1098) conflicting declarations for variable "_CPrint"
(C:/MPLABX_Projects/18F27k42_RFID_reader_2023-11.X/main.c:430) je verifie de partout où j'ai utilisé CPrint ... (107 occurences !)
et en particulier ICI :
Code : Tout sélectionner
CPrint("\r\nModif bloc de 16 cars sur La Carte presentée\r\n");
txt=&TEXTE[0];
strcpy(txt, p2+8);
Print(txt);CRLF1();
CPrint("Vous avez 4 sec. pour presenter le Jeton ou la Carte\r\n ");
__delay_ms(4000);
et une reminescence neuronale,
m'aiguille sur l'usage de __delai_ms(4000);utilisé juste apres un CPrint ...
(qui au passage etait utilisé dans ma version (fonctionelle) en MikroC 7.60)
sachant que pour MPLABX , et l'usage de grand delais (en secondes ) j'avais déja rajouté une fonction __delay_xSec(xx);
---------------------------------------------------------------------------------
Microchip docu:
https://microchip.my.site.com/s/article ... tionaility
__delay_ms(x) // request a delay in milliseconds
The macro argument must be a constant expression. An error will result if these macros
are used without defining the oscillator frequency symbol, the delay period requested
is too large or the delay period is not a constant.
The delay argument must be a constant
and less than approximately 179,200 for PIC18 devices
c'est FAUX and approximately 50,659,000 for other devices.
c'est presque ça !sur un autre document Microchip ...
_delay
An error will result if the delay period requested is not a constant expression
or
is too large (greater than 50,463,240 instructions).-------------------------------------------------
18/11/2023
FOSC=64MHz 1 cycle=0.0625µS
50,659,000 * 0.0625= 3 166 187.5µS > 3166 mS !
1er Test avec
__delay_ms(3166); // ERROR
C:/MPLABX_Projects/18F27k42_RFID_reader_2023-11.X/main.c:2103:: error: (1274)
delay exceeds maximum limit of 50 463 240 cycles
50 463 240 * 0.0625 => 3153952 µS -> >3153 mS
2em test avec
__delay_ms(3153); // BUILD SUCCESSFUL (total time: 11s)
3em Test
retour avec __delay_ms(4000);
C:/MPLABX_Projects/18F27k42_RFID_reader_2023-11.X/main.c:2103:: error: (1274)
delay exceeds maximum limit of 50 463 240 cycles
ET NON PLUS lié à CPrint(.. constaté la veille
J'en perds mon latin ( d'autant que je n'en ai jamais fait !)la seule différence est que j'ai redémarré mon PC ce matin !
Le compilateur XC8 doit etre bugué quelques part ....
ou probleme de gestion memoire PC
ou gestion memoire PIC18
gestion "ramasse miettes" apres plusieurs compilations ?
EN Résumé :
ATTENTION aux messages d'erreur proposés par XC8
qui peuvent aiguiller vers de fausses pistes à suivre ...
Nota :
Consolation : j'ai vu bien pire avec MikroC qui ne sait pas gerer le bon numero de ligne
du probleme en cause ..
