Aller au contenu

Programmation sur PIC


Himura

Messages recommandés

Salut.

Je suis en train de porter un programme sur un pic 16F876A, mais malheureusement mplab me sort qu'il bouffe trop de mémoire et que la bank 0 est trop "petite" (forcément j'utilise un tableau 9x9 (tableau de type char) :eeek2:). Alors j'ai voulu stocker des données dans les autres bank, mais j'y arrive pas; j'ai d'abord essayé de "stocker" mon prog dans la bank 0 puis mon tableau dans la bank 2, mais à la compilation, mplab me dit: Fixup overflow in expression (loc 0x850 (0x828+40), size 1, value 0x110)

Pareil si je mets le tableau dans la bank 3. Ensuite j'ai essayé de mettre mon tableau dans la bank 0 puis le reste du programme dans la bank 1 (la bank 1 ne fait que 80 octets, c'est trop petit pour mon tableau de 81 octets). Seulement je sais pas comment, en C, on se place dans telle ou telle banque (je déclare mes variables comme ça: static bankx type variable , ou x est le numéro de la bank - quoique si je mets 2 ou 3 ca couille, comme dit plus haut). Donc pour le moment, mon tableau est "stocké" dans la bank 0, mes variables dans la bank 1 et apparemment mon prog "tourne" dans la bank0 (oui je débute la dedans :p ).

Bon si vous avez rien compris, déjà de savoir comment se "mettre" dans une bank m'aiderait (j'ai comme l'impression que les bank 0 et 1 marchent ensemble et que les 2 et 3 aussi). Merci bien :craint:

Lien vers le commentaire
Partager sur d’autres sites

Désolé de ne pouvoir t'aider pour le C car j'ai programmé cette année sur un pic 16F847 mais seulement en Assembleur!

Comme tu l'as dis, les banques 0/1 et 2/3 sont liées. En fait, le passage d'une bank à l'autre nécessite 2bits (vu qu'il y a 4 possiibilités). Ce sont les bits nommés RP0 et RP1 du registre STATUS (RP0= N°5, RP1= N°6 si je me souviens bien)

RP1 RP0

0 0 Bank0

0 1 Bank1

1 0 Bank2

1 1 Bank3

Donc, le point commun entre Bank0 et Bank1 est que RP1 est à zéro

Pour Bank2 et Bank3, il est à 1

Je ne sais pas commun tu peux modifier ses bits via C, mais c'est le principe de fonctionnement: Pour passer d'une banque à l'autre, tu modifie les bits RP0 et/ou RP1.

Si tu veux + d'info, tu peux télécharger le cours de Bigonoff, c'est pour programmer en assembleur mais ca devrait quand même t'aider!

Cours Bigonoff

Ce cours traite du 16F84 mais le 16F87 à la même base donc no stress pour ton prob!

Lien vers le commentaire
Partager sur d’autres sites

Merci pour vos réponses. En fait je sais pas comment modifier ces fameux bits RP0 et RP1 (et l'IRP il sert à quoi ?). Pour le cours de bigonoff, je les ai déjà récupéré, mais ca n'a pas résolu mon problème (d'ailleurs c'est un fou ce bigonoff :francais: , non mais vous avez vu les pavés qu'il a sorti ?? :cartonrouge: )

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...