Bonjour,
Pour situer mon niveau : j'ai fait de la programmation bas niveau en assembleur 68000 et 8086 pendant mes études il y a plus 20 ans (ça fait mal...).
J'ai repris en 2022 avec un projet sur PIC24FJ1024GB610. Voilà.
Après avoir trouvé des sujets qui tournent autour du pot, je n'ai toujours pas les idées claires sur la gestion de la RAM sur mon PIC. Soit les sujets ne traitent pas exactement mon cas, soit c'est en Anglais et ma compréhension reste approximative.
Dans mon programme en C, je déclare en global un tableau :
Ça compile sans problème. Mais lorsque je remplis le tableau ça plafonne à compteur = 26 :Code:char dummyElements [150][19]; //150 chaînes de 18 caractères
L'exécution se déroule sans plantage (par un coup de chance ?) et nbEcrits a toujours la bonne valeur.Code:for ( compteur = 0 ; compteur < 150 ; compteur ++) nbEcrits = sprintf (dummyElements [compteur], "%03d", compteur);
J'ai essayé :
mais ça plante à la compilation sur :Code:__eds__ char dummyElements [150][19] __attribute__ ((eds, page)); // même comportement sans le 'page'
Code:sprintf (dummyElements [compteur], "%03d", compteur);J'imagine que sprintf n'a pas le droit d'accéder à l'espace mémoire où a été installé le tableau ...error: passing argument 1 of 'sprintf' from pointer to non-enclosed address space
Comment allier la place pour un tel tableau avec une possibilité d'accès "universelle" ?
Merci de l'éclairage que vous pourrez m'apporter.
Laurent
-----