Bonjour,
j'ai un souci de programmation en ce moment, et je souhaiterai vérifier la taille de la pile mémoire, mais quelle paramètre faut il regarder dans la documentation?
Pour informations, il s'agit du PIC18F4685..
Merci d'avance
-----
Bonjour,
j'ai un souci de programmation en ce moment, et je souhaiterai vérifier la taille de la pile mémoire, mais quelle paramètre faut il regarder dans la documentation?
Pour informations, il s'agit du PIC18F4685..
Merci d'avance
Personne n'aurait une petite idée sur la question...
J'ai beau scruter la documentation...impossible...
Merci d'avance
31 je crois ... Mais la datasheet doit savoir ça bien mieux que nous ...
<< L'histoire nous apprend que l'on apprend rien de l'histoire. >>
Je te remercie...
En effet page 31 chapitre "Memory Organisation" , on peut voir Stack Level 1 ... Stack Level 31, mais c'est 31 quoi?
Ma question est surement un peu bete mais je ne trouve pas de solution a mon probleme alors je cherche toutes les possibilitées..
Merci encore
bah ... 31 "cases" je pense ...
<< L'histoire nous apprend que l'on apprend rien de l'histoire. >>
Salut,
Les PIC18 ont une pile HW qui contient donc des adresses. Donc 31 niveaux d'emboitement max ;=)
Tu peux trouver la (vieille) documentation de toute la famille PIC18 ici :
http://ww1.microchip.com/downloads/e...Doc/39500a.pdf
LE chapitre 7 montre la STACK et ses utilisations. 31 niveaux de pile max.
Par programme tu peux à tout moment savoir ou en est la pile (STKPTR) et ce qui est dur la pile en lisant les registres TOSU/TOSH/TOSL (Top Of Stack Upper/High/Low).
NB : si tu utilises le mode d'instructions PIC18 ETENDU, des instructions sont ajoutées qui optimisent l'opération du compilateur car il devient possible de créer une pile avec un frame pointer pour le passage des paramètres.
a+
Et savez vous comment je pourrais augmenter la taille de la pile mémoire?
Je vous remercie d'avance
Salut,
Comme je l'ai dit précédemment c'est une pile HARDWARE donc on ne peut pas augmenter sa taille.
Pour quelle raison veux-tu augmenter sa taille :
* beaucoup de fonctions imbriquées ?
* problème de passage de paramètres ?
a+
Bonjour,
j'utilise une librairie de gestion pour un afficheur graphique LCD 128x64, et l'envoi des données sur l'afficheur est faussé.Pour quelle raison veux-tu augmenter sa taille :
Et d'après le concepteur de la librairie, il s'agirait de la taille de la pile mémoire..
Par contre je me pose une question, voila avant j'utilisais un 18F4620, mais pour des raisons de mémoire programme insuffisante, j'ai opté pour le 18F4685..et depuis ça marche moins bien...
mais en regardant ses caractéristiques de mémoire, on peut voir :
Data Memory (Bytes) 3328
alors que sur le 18F4620:
Data Memory (Bytes) 3968
Le problème pourrait il venir aussi de la??
Sinon, comment pourrais résoudre ce problème.
Merci d'avance
Et je'ai une autre question concernant les PIC, la taille de la pile est donc limité à 31, mais est elle modifiable??
Car pour mon problème , lorsque je travaillais avec un PIC18F4620, mon programme (programme simple et cour) tournait correctement (affichage correct sur mon 128x64) et depuis le passage sur le 18F4685, j'ai un problème d'affichage alors qu'il s'agit du meme programme...
Merci encore
Mais on t'a dit que NON !! Ce n'est pas une limitation logicielle, mais hardware, dans la fabrication du composant.Et je'ai une autre question concernant les PIC, la taille de la pile est donc limité à 31, mais est elle modifiable??
Mais ceci est la pile d'appel des sous programmes, là ou sont stockées les adresses de retour quand tu appels des fonctions.
La pile de passage des paramètres (qui semble etre la cause de ton probleme) est gérée avec les pointeurs FSR0 et FSR1 du PIC.
Je te remercie...
Y a t'il moyen de régler se problème au point de vue soft?
Faut il agir sur les variables?
Avez vous une petite astuce?
et sinon pour mon autre question:
Cela peut il venir de la? est ce lié?Par contre je me pose une question, voila avant j'utilisais un 18F4620, mais pour des raisons de mémoire programme insuffisante, j'ai opté pour le 18F4685..et depuis ça marche moins bien...
mais en regardant ses caractéristiques de mémoire, on peut voir :
Data Memory (Bytes) 3328
alors que sur le 18F4620:
Data Memory (Bytes) 3968
Le problème pourrait il venir aussi de la??
MErci encore
Salut
Le 18F4685 possède plus de mémoire programme (le programme peut être plus long), mais a moins de RAM (moins de place pour stocker variables)
Si il n'y a pas assez de RAM, ça peut créer des problèmes pour la pile qui n'aura plus assez de place pour sauvegarder le contexte.
C18 donne l'occupation mémoire. Fais View > Memory Usage Gauge
ps: la data memory, ça peut être de la RAM ou de l'EEPROM. C'est pour ça que je précise toujours