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