[PIC24FJ] - Déclaration d'un tableau / Erreur sur 'rom' et 'far'
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

[PIC24FJ] - Déclaration d'un tableau / Erreur sur 'rom' et 'far'



  1. #1
    jorg1n

    [PIC24FJ] - Déclaration d'un tableau / Erreur sur 'rom' et 'far'


    ------

    Bonjour,

    il y a quelques temps, j'avais posté une librairie de gestion d'un GLCD pour un PIC18:
    http://forums.futura-sciences.com/el...irie-glcd.html

    Et je souhaiterai l'utiliser avec un PIC24FJ256DA206...

    Par contre, lors de la compilation avec le compilateur C30, par exemple, j'ai des erreurs sur ces déclarations:
    Code:
    const far rom unsigned char Font[96][7];
    const far rom unsigned char FontSmall[10][7];
    const far rom unsigned char Font18[12][16];
    const far rom unsigned char FontBOLD[12][7];
    il me donne ce compte rendu pour chacune des déclarations:
    C_Files\GLCD.c:10: error: syntax error before 'rom'
    C_Files\GLCD.c:10: error: syntax error before 'unsigned'
    Je ne vois pas comment résoudre le problème...

    Merci d'avance

    -----

  2. #2
    RISC

    Re : [PIC24FJ] - Déclaration d'un tableau / Erreur sur 'rom' et 'far'

    Salut Jorg,

    Je te conseille de lire le manuel du compilateur...

    Tu utilises la syntaxe du compiulateur C18.

    Pour le C30 c'est plutôt du style __attribute__ ((space(prog))) au lieu de ROM

    a+

  3. #3
    jorg1n

    Re : [PIC24FJ] - Déclaration d'un tableau / Erreur sur 'rom' et 'far'

    Bonsoir RISC,

    Je vais donc lire de plus près la doc du compilateur...

    Je suis preneur pour les conseils!

    Merci d'avance

  4. #4
    jorg1n

    Re : [PIC24FJ] - Déclaration d'un tableau / Erreur sur 'rom' et 'far'

    Bonjour,

    après avoir lu la documentation du compilateur C30 concernant , je n'arrive toujours pas à convertir mes déclarations faites en C18 en C30...
    Le changement est un peu dur!!!

    Merci d'avance à ceux qui pourront m'aider


    Voila les documentations des compilateurs:

    Documentation du Compilateur C30:
    http://ww1.microchip.com/downloads/e...ide_51284f.pdf

    Documentation du Compilateur C18:
    http://ww1.microchip.com/downloads/e...ide_51288j.pdf
    Dernière modification par jorg1n ; 12/10/2011 à 08h59.

  5. A voir en vidéo sur Futura
  6. #5
    jorg1n

    Re : [PIC24FJ] - Déclaration d'un tableau / Erreur sur 'rom' et 'far'

    Voila ce que j'ai trouvé dans la documentation du C30:
    En C18 : far int gVariable;
    EN C30 : __attribute__((far)) int gVariable;
    Et

    En C18 : rom int gArray[6] = {0,1,2,3,4,5};
    En C30 : __attribute__((section(".romda ta"), space(prog) ))
    int gArray[6] = {0,1,2,3,4,5};
    Mais je n'arrive pas à convertir ma déclaration:
    const far rom unsigned char Font[96][7];
    D'après ce que m'a dit RISC, on met : __attribute__ ((space(prog))) au lieu de ROM

    Mais j'arrive pas à "assembler" ma déclaration "const far rom"...

    Merci d'avance

  7. #6
    jorg1n

    Re : [PIC24FJ] - Déclaration d'un tableau / Erreur sur 'rom' et 'far'

    Bonjour,

    Personne n'aurait ne petite idée...

    Bon après midi à tous!

  8. #7
    RISC

    Re : [PIC24FJ] - Déclaration d'un tableau / Erreur sur 'rom' et 'far'

    Salut Jorg,

    Quelle taille de FLASH utilises-tu ?
    L'attribut far n'est nécessaire que si ton programme est > 64KB.
    Est-ce le cas ?

    Si c'est le cas il va aussi falloir changer le modèle mémoire pour la compilation (c'est plus simple que de déclarer chaque tableau et chaque fonction en far...).

    a+

  9. #8
    jorg1n

    Re : [PIC24FJ] - Déclaration d'un tableau / Erreur sur 'rom' et 'far'

    Merci RISC,

    alors en fait, la librairie était utilisée à la base avec un PIC18F6722 et mon programme utilisait quasiment toute la mémoire programme (Memory Gauge : 65005 / 65536), mais maintenant, avec le PIC24FJ256DA206, j'ai deux fois plus de mémoire programme, et je pense que mon programme de ne dépassera pas la taille de mon ancien programme sur le PIC18F6722, ou alors très peu.

    Que me conseilles tu?

    Merci d'avance

  10. #9
    RISC

    Re : [PIC24FJ] - Déclaration d'un tableau / Erreur sur 'rom' et 'far'

    Salut,

    De mon expérience, un programme en PIC24 est plus gros qu'en PIC18 je pense donc que tu vas déborder si tu étais à la limite.
    Cela dépend également du fait que tu utilises l'optimisation ou pas...et de la tailles de tes tables en ROM si tu en as.
    Dès que l'on dépasse les 64Ko, l'éditeur de liens crie...car en mode par défaut (near) les pointeurs sont codés sur 16 bits. Lorsque l'on dépasse les 64Ko, il faut dire au compilateur de générer des pointeurs sur 24 bits.

    La méthode la plus simple (mais pas la plus efficace en terme de mémoire) :
    Project > Build options > project > onglet "MPLAB C30" > Category "Memory Model" > au moins large "code model" mais certainement aussi large "data model" et "large scalar model"

    Avec ces options, il devient je crois pas nécessaire de préciser FAR (à vérifier)
    L'attribut __attribute__((space(prog))) n'est pas nécessaire en général si tu précises const (et que tu as le bon modèle mémoire...)

    Donc il devrait suffire d'écrire : const unsigned char Font[96][7] = ...;

    a+
    Dernière modification par RISC ; 19/10/2011 à 15h23.

  11. #10
    jorg1n

    Re : [PIC24FJ] - Déclaration d'un tableau / Erreur sur 'rom' et 'far'

    Merci RISC pour ces explications...

    je vais appliquer cela, et je ferai un retour.

    Bonne soirée

  12. #11
    jorg1n

    Re : [PIC24FJ] - Déclaration d'un tableau / Erreur sur 'rom' et 'far'

    Bonjour,

    alors, tout marche parfaitement!! encore merci RISC.

    Je vais encore avoir besoin de ton aide par contre, j'ai maintenant ce message de warning:
    C_Files\GLCD.c:744: warning: missing braces around initializer
    C_Files\GLCD.c:744: warning: (near initialization for 'FontSmall[0]')
    Et voila ma déclaration:
    Code:
    const unsigned char FontSmall[10][7] = {
    	0x3E,0x41,0x41,0x3E,0x55,0x55,0x55,	//	48	0
    	0x42,0x7F,0x40,0x55,0x55,0x55,0x55,	//	49	1
    	0x62,0x51,0x49,0x46,0x55,0x55,0x55,	//	50	2
    	0x22,0x49,0x49,0x36,0x55,0x55,0x55,	//	51	3
    	0x18,0x14,0x12,0x7F,0x55,0x55,0x55,	//	52	4
    	0x27,0x49,0x49,0x31,0x55,0x55,0x55,	//	53	5
    	0x3C,0x4A,0x49,0x31,0x55,0x55,0x55,	//	54	6
    	0x71,0x09,0x05,0x03,0x55,0x55,0x55,	//	55	7
    	0x36,0x49,0x49,0x36,0x55,0x55,0x55,	//	56	8
    	0x46,0x49,0x29,0x1E,0x55,0x55,0x55,	//	57	9
    };
    Tu vois quelquechose qui cloche?

    Merci d'avance,

    Bon weekend à tous

  13. #12
    Tryph

    Re : [PIC24FJ] - Déclaration d'un tableau / Erreur sur 'rom' et 'far'

    Salut,

    le warning dit qu'il manque des accolades autour d'une initialisation.

    tu devrais peut être essayer (aucune garantie de résultat) d'entourer chaque ligne par des accolades pour "coller" au schéma de tableau à 2 dimensions.
    un truc dans ce genre là:
    Code:
    const unsigned char FontSmall[10][7] = {
    	{0x3E,0x41,0x41,0x3E,0x55,0x55,0x55},	//	48	0
    	{0x42,0x7F,0x40,0x55,0x55,0x55,0x55},	//	49	1
    	{0x62,0x51,0x49,0x46,0x55,0x55,0x55},	//	50	2
    ...
    Dernière modification par Tryph ; 21/10/2011 à 15h28.

  14. #13
    RISC

    Re : [PIC24FJ] - Déclaration d'un tableau / Erreur sur 'rom' et 'far'

    Salut,

    Il suffit de regarder un bon bouquin de C ou un tutoriel car rien ne diffère du C ANSI dans la déclaration d'un tableau de constantes pour le compilateur C30 qui est basé sur GCC.

    a+

  15. #14
    jorg1n

    Re : [PIC24FJ] - Déclaration d'un tableau / Erreur sur 'rom' et 'far'

    Merci !!

    Je suis allez voir quelques cours sur la déclaration des tableaux et c'est bien comme cela qu'il fallait faire:

    Code:
    const unsigned char FontSmall[10][7] = {
    	{0x3E,0x41,0x41,0x3E,0x55,0x55,0x55},	//	48	0
    	{0x42,0x7F,0x40,0x55,0x55,0x55,0x55},	//	49	1
    	{0x62,0x51,0x49,0x46,0x55,0x55,0x55},	//	50	2
    	{0x22,0x49,0x49,0x36,0x55,0x55,0x55},	//	51	3
    	{0x18,0x14,0x12,0x7F,0x55,0x55,0x55},	//	52	4
    	{0x27,0x49,0x49,0x31,0x55,0x55,0x55},	//	53	5
    	{0x3C,0x4A,0x49,0x31,0x55,0x55,0x55},	//	54	6
    	{0x71,0x09,0x05,0x03,0x55,0x55,0x55},	//	55	7
    	{0x36,0x49,0x49,0x36,0x55,0x55,0x55},	//	56	8
    	{0x46,0x49,0x29,0x1E,0x55,0x55,0x55}	//	57	9
    };
    Merci encore pour votre aide...

    Bonne fin de journée à tous

Discussions similaires

  1. Communication SPI sur PIC24fJ
    Par number8one dans le forum Électronique
    Réponses: 3
    Dernier message: 16/11/2010, 20h40
  2. Question rapide sur la capacité d'un CD-ROM
    Par invite2f9f3808 dans le forum TPE / TIPE et autres travaux
    Réponses: 2
    Dernier message: 17/10/2010, 19h31
  3. aide pour declaration de tableau
    Par LABTOOL48 dans le forum Électronique
    Réponses: 2
    Dernier message: 08/04/2010, 08h29
  4. declaration d'un binaire sur PIC
    Par ABN84 dans le forum Électronique
    Réponses: 11
    Dernier message: 20/03/2008, 13h52
  5. problème avec lecteur DVD-ROM et graveur CD-ROM
    Par invite82e3a8ee dans le forum Matériel - Hardware
    Réponses: 10
    Dernier message: 03/06/2006, 07h58
Découvrez nos comparatifs produits sur l'informatique et les technologies.