[C] - Création d'une fonction shift_left
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

[C] - Création d'une fonction shift_left



  1. #1
    invite3c35244f

    [C] - Création d'une fonction shift_left


    ------

    Bonjour,

    j'utilise le compilateur C18, et dans mon application j'utilise un convertisseur A/D MCP3204, et j'ai trouvé un driver pour communiquer entre le PIC et le convertisseur, mais le driver (trouvé dans la librairie du compilateur C de CCS) utilise une fonction shift_left, et je souhaiterai la reproduire pour pouvoir utiliser le driver avec C18...

    Pourriez vous m'aider à la créer (je ne trouve pas le fichier source de la fonction..)

    voila un exemple d'utilisation:
    Code:
    shift_left(&data,1,input(MCP3204_DOUT));
    &data : pointer sur la mémoire
    1: nombre de fois décalé
    input(MCP3204_DOUT): valeur 0 ou 1 a décaler

    Merci d'avance

    -----

  2. #2
    Seb.26

    Re : [C] - Création d'une fonction shift_left

    Et << ne te va pas ???

    PS: donne le prototype de ta fonction, car là c'est pas clair ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  3. #3
    invite3c35244f

    Re : [C] - Création d'une fonction shift_left

    Et << ne te va pas ???
    Si ça me convient bien , mais je souhaite créer une fonction pour pouvoir réutiliser le driver écrit pour un convertisseur A/D externe.

    voila comment elle est utilisé:
    Code:
    unsigned char read_adc_byte(unsigned char number_of_bits) 
    {
       unsigned char i,data;
    
       data=0;
       for(i=0;i<number_of_bits;++i) 
    	{
          MCP3204_CLK = 0;
          DELAY_10US(5);
          shift_left(&data,1,input(MCP3204_DOUT));
          MCP3204_CLK = 1;
          DELAY_10US(5);
       }
       return(data);
    }

    Et voila ce qui est écrit dans la documentation du compilateur CCS sur la fonction shift_left:
    Syntax:
    shift_left (address, bytes, value)
    Parameters:
    address is a pointer to memory, bytes is
    with, value is a 0 to 1 to be shifted in.
    Je souhaite créer cette fonction, ou une autre me permettant de réaliser ce que je veut faire...

    Merci d'avance Seb.26...

  4. #4
    Seb.26

    Re : [C] - Création d'une fonction shift_left

    bis: donne le prototype de ta fonction ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

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

    Re : [C] - Création d'une fonction shift_left

    En imaginant le prototype de ta fonction ... En traduisant le code de ton post ... Et en me demandant à quoi servirais de faire une fonction déjà faite (décidément, tu vas user ma boule de cristal )

    J'en arrive à :
    Code:
    void shift_left( unsigned char *dest, unsigned char nb, unsigned char data )
    {
      *dest <<= nb;
      *dest |= (data)?(1):(0);
    }
    Teste ça, et dis moi si c'est OK ...

    PS: mon code n'est OK que pour nb=1 ... sinon, il faut faire un for( ; ; )
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  7. #6
    invite3c35244f

    Re : [C] - Création d'une fonction shift_left

    donne le prototype de ta fonction ...
    Je suis désolé, mais je l'ai pas, je n'arrive pas à trouver la fonction justement, j'ai juste son utilisation...

    et je recherche sur le net la fonction, mais rien à faire...

  8. #7
    invite3c35244f

    Re : [C] - Création d'une fonction shift_left

    Je te remercie...

    par contre, peux tu m'éclairer sur la ligne
    Code:
     *dest |= (data)?(1):(0);
    je ne sais pas à quoi sert "?" et ":"...

    Je te remercie d'avance
    Je teste et je te redis...

  9. #8
    Seb.26

    Re : [C] - Création d'une fonction shift_left

    Citation Envoyé par jorg1n Voir le message
    Je suis désolé, mais je l'ai pas, je n'arrive pas à trouver la fonction justement, j'ai juste son utilisation...
    et je recherche sur le net la fonction, mais rien à faire...
    Essaye le bout de truc au dessus, ça devrait être OK ou pas loin ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  10. #9
    Seb.26

    Re : [C] - Création d'une fonction shift_left

    Citation Envoyé par jorg1n Voir le message
    je ne sais pas à quoi sert "?" et ":"...
    http://visualcplus.blogspot.com/2006...d-logical.html

    C'est pour être sur que l'on n'écrive pas plusieurs bits ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  11. #10
    Seb.26

    Re : [C] - Création d'une fonction shift_left

    La version complète (avec nb>1 ) ... et plus clair ...

    Code:
    void shift_left( unsigned char *dest, unsigned char nb, unsigned char data )
    {
      while(nb)
      {
        *dest <<= 1;
        if( data )
          *dest |= 1;
        nb--;
      }
    }
    Et une version "optimisée" pdv CPU mais plus grosse en code :

    Code:
    void shift_left( unsigned char *dest, unsigned char nb, unsigned char data )
    {
      if( data )
      {
        while(nb)
        {
          *dest <<= 1;
          *dest |= 1;
          nb--;
        }
      }
      else
      {
        *dest <<= nb;
      }
    }
    Je te laisse lire tout ça calmement ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  12. #11
    invite3e55ea01

    Re : [C] - Création d'une fonction shift_left

    Bonjour
    le ? et le : servent à faire un if
    ? correspond à if
    : correspond à else
    (condition) ? instruction si vrai : instruction si faux
    Cordialement
    Dumm

  13. #12
    invite3c35244f

    Re : [C] - Création d'une fonction shift_left

    Merci pour votre aide, la fonction marche correctement, enfin je n'ai pas regardé précisément, mais mon application marche correctement, enfin presque...si vous souhaitez jetez un petit coup d'oeil et apportez votre connaissance:

    http://forums.futura-sciences.com/el...n-mcp3204.html

    Merci encore

Discussions similaires

  1. [Biologie Cellulaire] Création d'une nouvelle
    Par invite5ee3ae94 dans le forum Biologie
    Réponses: 4
    Dernier message: 19/01/2009, 15h43
  2. Creation d'une eolienne
    Par inviteb955f10d dans le forum TPE / TIPE et autres travaux
    Réponses: 4
    Dernier message: 06/11/2008, 21h53
  3. Création d'une antenne de cb
    Par invite680fe1c7 dans le forum Électronique
    Réponses: 30
    Dernier message: 17/08/2008, 19h42
  4. Création d'une étoile
    Par Zozo_MP dans le forum Archives
    Réponses: 9
    Dernier message: 02/01/2008, 14h24
  5. création d'une radio!!!
    Par invite222d9700 dans le forum TPE / TIPE et autres travaux
    Réponses: 3
    Dernier message: 01/03/2007, 10h13
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...