Passage de l'assembleur vers C pour PIC
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Passage de l'assembleur vers C pour PIC



  1. #1
    invite95375788

    Passage de l'assembleur vers C pour PIC


    ------

    Bonjour à tous,

    J'ai un problème pour passer de l'assembleur au C (compilateur CCS pour PIC).
    Je déclare un tableau d'entier à une adresse précise (pour PIC18F) de la manière suivante:

    Code:
    ORG             0x200
    SINE_TABLE
    ; on remplit la mémire flash avec notre table sinus à l'aide
    ; de 'db' (define byte) qu'il faut mettre deux par deux
    ; voir pour cela la partie 5 de présentation des PICs
    ; de Bigonoff
            db  0x80,0x83
    	db  0x86,0x89
    	db  0x8c,0x8f
    	db  0x92,0x95 
            ....
    A l'aide de la définition précédente je mets en mémoire flash ma table
    Je souhaite faire exactement pareil en C CCS !!

    J'ai essayé:
    Code:
    #org 0x200,0x2FF
    #asm ASIS
    SINE_TABLE
            db  0x80,0x83
    	db  0x86,0x89
    #endasm
    Mais il refuse de compiler cela. En fait il attend un mnémonique et apparemment pas une table....

    Bref si qq connait comment passer de l'assembleur au C je suis preneur.

    Merci d'avance

    -----

  2. #2
    marmotte

    Re : Passage de l'assembleur vers C pour PIC

    1) Pourquoi n'utilises tu pas C18 pour tes pic 18F ?

    2) Sous C18 ont procède de la sorte pour déclarer tes tableaux en flash:

    rom const char table[][20] = { "string 1", "string 2", "string 3", "string 4" };

    rom const char *rom table2[] = { "string 1", "string 2", "string 3", "string 4" };

    #pragma romdata const_table
    const rom char my_const_array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    If the world doesn't change today, what would it be tomorrow?

  3. #3
    sdec25

    Re : Passage de l'assembleur vers C pour PIC

    Bonjour,
    Citation Envoyé par elrix Voir le message
    Bref si qq connait comment passer de l'assembleur au C je suis preneur.
    Lire la doc du compilateur.
    Sinon, faire comme marmotte te l'a conseillé.
    Dernière modification par sdec25 ; 25/09/2008 à 12h11.

  4. #4
    invite95375788

    Re : Passage de l'assembleur vers C pour PIC

    Je n'utilise pas C18 car historiquement j'ai commencé avec le compilateur C de CCS donc il faudrait que je refasse de nombreuses routines en C18.

    Pour déclarer les tableaux sous CCS c'est un peu pareil:
    const int8 truc[10];

    ca marche bien mais je ne suis pas sur qu'il aligne correctement les données dans la mémoire flash.

    En fait en assembleur j'ai fait un générateur DDS qui marche plutot pas mal et je souhaite conserver ma routine en assembleur. Par contre toute la gestion classique et les routines de pilotage d'afficheur LCD (nokia3310) je les ai en C et je ne veux pas les recoder.

    De plus dans ma boucle j'utilise un TBLRD* et je me sers du fait que l'on dispose de 16 bits en flash pour stocker deux mots de 8 bits (d'ou le fait de mettre une ligne db et deux données derrière et je sais pas comment le compilateur C gère cet alignement.

    Donc je cherche quelqu'un qui a déjà été confronté a ce problème sinon je compilerai des essais en C CCS et en C18 pour voir comment il gère l'accés à la flash.

    En tout cas merci de votre réponse !!

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

    Re : Passage de l'assembleur vers C pour PIC

    Bon j'ai trouvé la solution...mas il est tard qd même

    il faut dans le code en C mettre:
    #org adresse_debut,adresse_fin {} // les crochets pour réserver l'espace mémoire pour que le compilo ne mette rien ici
    #rom adresse_debut = {
    0xFFFE, 0xFDFC, etc... } // bien mettre des valeurs codées sur 16 bits qui vont ensuite être répartis en 2x8bits dans la mémoire flash du PIC18

    Tout ca pour réaliser un géné DDS sur PIC18F. Pour l'instant je monte trés facilement sans filtre de sortie à prés de 50kHz. Bien sur c'est rien par rapport aux circuits spécialisés mais il me fallait un géné surtout pour couvrir la gamme audio et un peu plus donc c'est OK. Je vais rajouter plusieurs formes d'ondes, un ecran LCD de nokia 3310 et ca fera un GBF tout à fait honnête.

    Merci encore aux intervenants...

Discussions similaires

  1. [Néolithique] Passage vers l'agriculture
    Par invite0e4ceef6 dans le forum Archéologie
    Réponses: 56
    Dernier message: 15/08/2015, 20h56
  2. aide pour PIC 16F877 vers PC via port serie (transfert de données)
    Par invite1c4b6700 dans le forum Électronique
    Réponses: 8
    Dernier message: 08/05/2009, 01h47
  3. Passage de 128 vers 256~~512 Ram
    Par inviteb51dd4ec dans le forum Matériel - Hardware
    Réponses: 11
    Dernier message: 29/09/2005, 00h30
Découvrez nos comparatifs produits sur l'informatique et les technologies.