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 ---
Forum général sur le langage C !

Modérateur : Jérémy

Compilateur MikroC mysteres et boules de suif
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#1 Message par paulfjujo » mar. 28 janv. 2020 18:41

Bonsoir,


Avec un 16F1619 en test, je viens de subir de drole (ou plutot tres bizarres comportement) du compilateur
Les tests tournent autour de ces 4 lignes simples de code

voir les captures d'ecran...

Code : Tout sélectionner


 ODCONB
.B4 = 1;  // 1=open drain  output   SDA
 ODCONB.B6 = 1; // 1=open drain output   SCL
 ODCONB.B5 = 0;  // 0=push pull   input  RX
 ODCONB.B7 = 0;  // 0=push pull output   TX

avec lesquelles , le compilateur est OUT ... plus assez d'espace ROM
en supprimant la derniere ligne .. je recupere 14 mots .. et la compilation passe OK
en supprimant 2 derniere lignes => 15 mots
en supprimant 3 derniere lignes => 16 mots
en supprimant les 4 lignes => 66 mots ? <--- pourquoi pas 17 mots ?

et en ecrivant de facon plus directe les bits dans la variabe

Code : Tout sélectionner

  ODCONB=0b01010000;
j'ai alors 72 mots dispo , donc ecriture bien plus efficace.
et si je supprime cette nouvelle ligne je retombe à 66 mots restant ???
alors que la taille libre restante devrait augmenter au dela de 72 !

j'ai gardé ODCONB=0b01010000;
et mon appli semble tourner correctement . avec 7% free en ROM et 2,6% en RAM free

C'est quand meme étonnant que le rajout de 4 modifs de bit puisse consommer 66 mots !
sur les vieux 16F il y avait le probleme de changement de bank et là ???

nota: j'avais déja remarqué , que plus on s'approche des limites hautes en ROM, plus on peut tomber sur des cas Bizaroides..
Peut etre y a t-il des explication au niveau ASM ?


MikroC_16F1619_Mysteres_et_boules_de_gommes_2020_01_28.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 45 invités