[C]- Comment fixer l'adresse d'une variable
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

[C]- Comment fixer l'adresse d'une variable



  1. #1
    jorg1n

    [C]- Comment fixer l'adresse d'une variable


    ------

    Bonjour,

    je travaille avec un PIC18 et le compilateur C18 de Microchip, et voila, en ce moment j'essaie de faire dialoguer mon PIC avec mon PC en liaison MODBUS RS485, et je rencontre quelques petits problèmes, mais, pour ce post, il s'agit de savoir comment on peut fixer l'adresse d'une variable.

    J'ai vu grâce à MPLAB, dans file register (mais aussi dans watch) que ma variable toto (qui est une short int) était à l'adresse 0x502, mais ce n'est pas moi qui l'ai fixé, et pour mon application j'ai besoin de savoir où elle se trouve, donc je souhaiterai fixé cette adresse.
    Y t'il une façon,un lieu où l'on peut fixer l'adresse d'une variable sans gêner le bon fonctionnement du programme?

    Merci d'avance

    -----

  2. #2
    simon.

    Re : [C]- Comment fixer l'adresse d'une variable

    Je serais curieux de savoir pourquoi tu aurais besoin d'une chose pareille.

  3. #3
    Seb.26

    Re : [C]- Comment fixer l'adresse d'une variable

    Citation Envoyé par jorg1n Voir le message
    j'ai besoin de savoir où elle se trouve, donc je souhaiterai fixé cette adresse.
    Y t'il une façon,un lieu où l'on peut fixer l'adresse d'une variable sans gêner le bon fonctionnement du programme?
    Tu veux fixer cette variable en RAM, ou alors savoir où elle se trouve ???

    * Pour la fixer en RAM : défini un BANK, et force la dans ce BANK (fichier du linker et #pragma)

    * Pour savoir où elle se trouve : &ma_variable ... voir les cours sur les pointeurs ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  4. #4
    jorg1n

    Re : [C]- Comment fixer l'adresse d'une variable

    Je serais curieux de savoir pourquoi tu aurais besoin d'une chose pareille.
    En fait, pour la communication en MODBUS, le maitre (ici mon PC) envoie une requête, et dans cette requête il y a :
    -l'adresse de l'esclave
    -le code de la fonction à réaliser
    -l'adresse du registre à lire <----
    -le nombre d'octets à lire
    -le CRC

    pour plus d'informations sur ça, j'ai ouvert un post:
    http://forums.futura-sciences.com/el...us-un-pic.html

    Et donc, il faut que le maitre connaisse l'adresse du registre (adresse ou se trouve la variable qu'il souhaite avoir, et que je dois lui envoyer..

    -> Réponse à Seb.26:
    Je souhite la fixer en RAM, afin de savoir exactement ou elle se trouve et pour que le mettre saches ou elle se trouve...
    Donc il s'agit de ta 1ère proposition Seb26, par contre, j'ai jamais fais ça!!

    Merci
    Dernière modification par jorg1n ; 23/07/2009 à 10h23.

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

    Re : [C]- Comment fixer l'adresse d'une variable

    Citation Envoyé par jorg1n Voir le message
    En fait, pour la communication en MODBUS, le maitre (ici mon PC) envoie une requête, et dans cette requête il y a :
    -l'adresse de l'esclave
    -le code de la fonction à réaliser
    -l'adresse du registre à lire <----
    -le nombre d'octets à lire
    -le CRC

    Et donc, il faut que le maitre connaisse l'adresse du registre (adresse ou se trouve la variable qu'il souhaite avoir, et que je dois lui envoyer..
    C'est AMA une mauvaise analyse du problème ...

    C'est à ton PIC de savoir où se trouve le registre (variable) ... en gros, le maitre te demande le registre 0x06, qui est la variable toto, Donc tu dois renvoyer le contenu de la variable toto ... dont importe peu l'adr ...

    Mais toi, tu as fait : je retourne directement le contenu à l'adr du "registre" ... donc déjà, c'est moche, mais en plus, si tu change de PIC (donc l'adr des bank de RAM peut changer) ça marche plus ... ... sans parler des risques que le maitre lise ta RAM, ou pire : y écrive des data ... ...

    En gros : << ça a cuit trop longtemps dans un four trop chaud ... >>
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  7. #6
    _asm_

    Re : [C]- Comment fixer l'adresse d'une variable

    Salut

    Comme le dis Seb26 renseigne toi sur les pointeurs ! C'est leurs but !

    http://chgi.developpez.com/pointeur/

  8. #7
    jorg1n

    Re : [C]- Comment fixer l'adresse d'une variable

    Merci pour ces explications,

    Donc si je comprend bien, l'adresse qui se trouve dans la requete du maitre est "bidon"..

    en fait, lors de la réception de la trame du maitre, imaginons, si je reçois comme adresse 0x200, moi je sais que 0x200 cela correspond à ma variable TOTO, donc je lui renvoi le contenu de ce qui se trouve à l'adresse de TOTO (avec &TOTO)?

    En fait c'est à moi d'associer les adresses demandées par le maitre à mes variables dans mon soft?
    Le raisonnement est il bon??

    Merci encore...

  9. #8
    Seb.26

    Re : [C]- Comment fixer l'adresse d'une variable

    Citation Envoyé par jorg1n Voir le message
    Donc si je comprend bien, l'adresse qui se trouve dans la requete du maitre est "bidon"..
    Oui, en quelque sorte ... ... elle correspond à un "numéro" de registre, et pas à l'adr à laquelle est vraiment ce registre dans le périphérique (ton PIC) ...

    Citation Envoyé par jorg1n Voir le message
    en fait, lors de la réception de la trame du maitre, imaginons, si je reçois comme adresse 0x200, moi je sais que 0x200 cela correspond à ma variable TOTO, donc je lui renvoi le contenu de ce qui se trouve à l'adresse de TOTO (avec &TOTO)?
    Exactement !
    ( utilise par exemple un tableau de pointeur pour faire l'indirection ... cela s'apelle une "LUT" ... )

    NB: si tu peux, utilise les "adr" de 0 à n ... ça fera un tableau plus petit si tu ne fais pas de "trous" ... tu peux mettre un offset ( +200 ) ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  10. #9
    simon.

    Re : [C]- Comment fixer l'adresse d'une variable

    Pour avoir fait un truc un peu similaire recemment, j'ai simplement mis toutes les variables susceptibles d'etre échangées dans un tableau.

  11. #10
    jorg1n

    Re : [C]- Comment fixer l'adresse d'une variable

    Ok, tout est clair maintenant,.... enfin pour ce sujet...

    Vous vous y connaissez en modbUS??

    Merci encore

Discussions similaires

  1. lambourdes sur marbres comment fixer ?
    Par invite874d80f3 dans le forum Bricolage et décoration
    Réponses: 1
    Dernier message: 16/04/2009, 15h26
  2. Comment fixer un PST sur un télescope
    Par jpminetti dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 7
    Dernier message: 14/04/2008, 20h28
  3. Distribution d'une variable non normale! Comment faire une analyse de variance?
    Par invite079aa2fb dans le forum Mathématiques du supérieur
    Réponses: 8
    Dernier message: 02/06/2007, 16h41
  4. Informatique - Matlab : Comment extraire le nom d'une variable
    Par invite03b35ee3 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 11/01/2007, 15h02
Découvrez nos comparatifs produits sur l'informatique et les technologies.