Equivalent make8()
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Equivalent make8()



  1. #1
    invite07b6682b

    Equivalent make8()


    ------

    Bonjour,

    J'ai besoin de "découper" un int de 32bits en int de 8 bits; pour celà j'ai trouvé la fonction make8(mon_int,offset). Mais cette fonction ne fonctionne que sur le compilateur ccs or je suis sous gcc.

    Ma question est donc, y a t-il un équivalent de la fonction make8 ou comment puis-je effectuer mon "découpage".

    Merci d'avance,

    -----

  2. #2
    Jack
    Modérateur

    Re : Equivalent make8()

    Donne-voir un exemple ou 2 pour comprendre ce que fait cette fonction.

    A mon avis, il doit y avoir moyen d'y arriver avec des décalage, ou des divisions entières.

    A+

  3. #3
    invite07b6682b

    Re : Equivalent make8()

    Je programme un microcontroleur et je souhaite stocker des infos dans une mémoire externe qui utilise des adresses 8 bits. Donc en gros il me faut segmenter mon adresse 32bits en 4 octets de 8 bits.

    Ceci donnerait :

    void write_ext_flash(int32 address, BYTE *data, int16 nbbytes) {
    int16 i;

    output_low(FLASH_SELECT);
    spi_write(PP);
    spi_write(make8(address,2)); //Premiere segementation
    spi_write(make8(address,1)); //Deuxième
    spi_write(make8(address,0)); //Et 3ieme
    for(i=0;i<nbbytes;i++)
    spi_write(data[i]);
    output_high(FLASH_SELECT);
    }

    Le reste du code (spi_write, output_low ...) n'est pas ce qui me pose problème.

    Un autre exemple plus bateau:

    int32 i;
    int j;

    j=make8(i,3);

    Merci,

  4. #4
    Jack
    Modérateur

    Re : Equivalent make8()

    je verrais bien:

    Code:
    BYTE make8(int32 data, int byteNum){
       return (data >> (byteNum*8)) & 0x0f;
    }
    Ca devrait te retourner l'octet de poids faible si byteNum = 0, le suivant si byteNum = 1, etc.

    A+

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

    Re : Equivalent make8()

    En effet tu voyais parfaitement.

    J'ai légèrement modifié ta fonction pour ségmenter et récupérer des adresses de 2 bytes/8 bits; mais tu m'avais fournis le principal.

    Merci de ton aide,
    Bonne journée

Discussions similaires

  1. [Brun] Equivalent ou non?
    Par roro1111 dans le forum Dépannage
    Réponses: 2
    Dernier message: 12/08/2010, 19h42
  2. equivalent
    Par inviteb3540c06 dans le forum Mathématiques du supérieur
    Réponses: 17
    Dernier message: 26/01/2009, 21h24
  3. equivalent
    Par inviteb3540c06 dans le forum Mathématiques du supérieur
    Réponses: 8
    Dernier message: 26/01/2009, 12h25
  4. équivalent
    Par inviteb3540c06 dans le forum Mathématiques du supérieur
    Réponses: 14
    Dernier message: 24/01/2009, 19h38
  5. équivalent
    Par invite6ea8e0e2 dans le forum Mathématiques du supérieur
    Réponses: 6
    Dernier message: 19/01/2009, 21h48