Créer grand tampon sur un pic18f avec compilateur c18 à puce
Question
En utilisant le compilateur Microchip C18 avec un pic18f, je veux créer un « grand » tampon de 3000 octets dans l'espace de données du programme.
Si je mets cela dans la main () (sur la pile):
char tab[127];
J'ai cette erreur:
Error [1300] stack frame too large
Si je l'ai mis dans mondiale, j'ai cette erreur:
Error - section '.udata_main.o' can not fit the section. Section '.udata_main.o' length=0x0000007f
Comment créer un grand tampon? Avez-vous tutoriel sur la façon de gérer grand tampon sur pic18f avec c18?
La solution
Voici un tutoriel sur exactement ceci: http://www.dwengo.org/ trucs-astuces / grands-variables
En gros, vous déclarez votre variable dans une section spéciale, et un pointeur vers dans la section par défaut:
#pragma udata DATA // section DATA
int large_table[768];
#pragma udata // return to default section
int *table_ptr = &large_table[0];
Ensuite, vous mettez à jour le script éditeur de liens pour définir la grande section en ajoutant quelque chose comme ceci:
DATABANK NAME=data START=0x200 END=0x7FF PROTECTED
SECTION NAME=DATA RAM=data
Notez qu'il n'y a généralement pas de mémoire non cartographiées dans lequel vous pouvez simplement mettre votre section DATA, mais les tampons USB sont généralement mon premier choix à canibalize (sauf si vous avez besoin d'USB dans le même projet bien sûr ...)