Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
MPLAB XC8 et delay_ms mysterieux bug
- paulfjujo
Expert- Messages : 2551
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Bonjour à tous,
Je dois être abonné aux cas libidineux !
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)
le message d'erreur :
je n'ai pas d'autre message d'erreur !
je verifie de partout où j'ai utilisé CPrint ... (107 occurences !)
et en particulier ICI :
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);
cette fois le message est bien lié au delai ??
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 ..

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,

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

and approximately 50,659,000 for other devices.

sur un autre document Microchip ...
_delay
An error will result if the delay period requested is not a constant expression
or

-------------------------------------------------
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

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 ..
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité