Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

liaison SPI et masque (langage C)



  1. #1
    mitonin

    liaison SPI et masque (langage C)


    ------

    Bonjour tout le monde, je ne voulais pas ressortir un vieux topic alors je re-poste.

    Je dois faire la même chose que là http://forums.futura-sciences.com/el...aison-spi.html (sauf que je suis pas sur PIC mais bon ça on s'en fiche).

    donc d'après la discussion, apparemment il faudrait faire qq du genre

    U16 XAccel;

    XAccel = ( (U16) (spi_read_byte() & 0x3F ) ) << 8;
    XAccel |= spi_read_byte();
    Merci à Micka_ch pour ça.

    Seulement, il y a quelquechose que je ne comprends pas: pourquoi à la fin XAccel nn'est pas décalé? (car on a un nombre sur 2 octets alors que l'on ne reçoit que 14 bits), on va pas avoir une valeur 4 fois trop grande?

    voici les données du précédent exemple: Pièce jointe 241986

    De plus je ne comprend pas pourquoi il faut faire &0x3F, ça modifie l'angle si on a un 1 un MSB, nan?

    ou alors je me suis planté dans mon raisonnement ^^


    bref, si quelqu'un pouvait éclairer ma lanterne

    -----

  2. Publicité
  3. #2
    DAUDET78

    Re : liaison SPI et masque (langage C)

    Citation Envoyé par mitonin Voir le message
    voici les données du précédent exemple: Pièce jointe 241986
    ton lien ne marche pas ....
    J'aime pas le Grec

  4. #3
    mitonin

    Re : liaison SPI et masque (langage C)

    Arf zut,

    le voici:

    186956-masque-c-liaison-spi-accel.png

    désolé

  5. #4
    Murayama

    Re : liaison SPI et masque (langage C)

    Bonjour!

    Il y a un problème de méthode. C'est incomplet.
    En gros, vous avez 14 bits de données:

    xx.. .... | .... ....
    (1) (2)
    Le | sépare les 2 bytes.
    Si vous dites uint16 xaccel, vous réservez .... .... | .... ....
    pour vos données.

    Quand vous faites spi_read_bytes & 0x3F, vous obtenez le (1), mais
    à droite.

    xaccel = 0000 0000 | 00.. ....

    si vous le shiftez de 8 vers la gauche, vous allez avoir:

    xaccel = 00.. .... | 0000 0000

    Et si vous ajoutez le (2), vous aurez:

    xaccel = 00.. .... | .... ....

    Ce qui veut dire que vous n'aurez jamais un nomnbre négatif dans xaccel
    puisqu'il commencera toujours par 0.

    Réfléchissez bien à comment faire pour avoir le vrai nombre directement.
    C'est facile, il y a 2 instructions.

    Pascal

  6. A voir en vidéo sur Futura
  7. Comparatifs

    Gagnez du temps et de l'argent grâce à nos comparatifs de produits. Parmi nos sujets :
  8. #5
    mitonin

    Re : liaison SPI et masque (langage C)

    Ca, j'avais compris.

    Je crois que grâce à cette explication, j'ai mieux cerné mon incompréhension alors:

    j'ai 14 bits de données (qui arrivent en MSB first),

    pour moi, ça ne collait pas car je recevais d'abord 8 bits et ensuite 6 bits (or, d'après ce que j'ai compris ici, c'est l'inverse).

    Je n'arrive pas trop à comprendre pourquoi, je ne crois pas que je reçoive 14 bit sur 2 octets, il me semble que je ne reçoive que 14 bits tout court.

    Pouvez-vous m'éclairer sur ce point?

    merci,

    Mitonin

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/01/2014, 14h07
  2. MAsque en C et liaison SPI
    Par Titoune971 dans le forum Électronique
    Réponses: 12
    Dernier message: 27/06/2012, 16h28
  3. Masque de plongée
    Par FnX9 dans le forum Chimie
    Réponses: 9
    Dernier message: 31/03/2011, 18h13
  4. Masque sur une variable en C
    Par Pilou81 dans le forum Électronique
    Réponses: 4
    Dernier message: 27/04/2010, 20h22
Découvrez nos comparatifs produits sur l'informatique et les technologies.