Pages: [1]   Go Down
Author Topic: comment transformer 2 btys de 8 oct en 1 de 16 ou cumuler les 2 de 8  (Read 514 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour,

je galère un peu ...(beaucoup en fait!)

je ne trouve pas comment cumuler et non additionner deux bites de 8 octes en 1 seul de 16 octes!

je m'explique :

je récupéré Bty1 sur 8 oct en binaire et Bty2 en 8 oct en binaire aussi je dois cumuler soit lire sur 16octs la valeur binaire pour la transformer en hex ou décimale !!

voir pièce jointe (parviens pas a mètre photo)

exemple j'ai 1er byte : 0000 0001       2eme: 0000 1101
et je veux 000 0001 0000 1101 et pas (00000001+00001101) 

merci
a+ gf


* Capture.JPG (78.04 KB, 1100x446 - viewed 12 times.)
Logged

Arduino leonard

Bretagne
Offline Offline
Full Member
***
Karma: 2
Posts: 196
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Voir word(h,l) dans le site Arduino/ reference
Logged

...ils embarquèrent la logique, coupèrent les cordons, alors, libérés de leurs chaînes, une immensité s'ouvrait devant eux...

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Le texte façon SMS ça fait mal aux yeux ...

Ce que tu cherche à faire c'est du bitwise.
Code:
uint8_t val1, val2;
uint16_t val3;

val3 = ((uint16_t) val1 << 8) | val2;
-> Tu décales val1 de 8 bits vers la gauche (bits de poids fort) puis tu faits un OU "bits à bits" des 8 bits de poids faibles.
« Last Edit: January 13, 2013, 10:38:53 am by skywodd » Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

France
Online Online
Faraday Member
**
Karma: 36
Posts: 3450
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
-> Tu décales val1 de 8 bits vers la droite (bits de poids fort)
Moi j'aurais dit vers la gauche smiley-wink
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Moi j'aurais dit vers la gauche smiley-wink
Heu oui l'autre droite effectivement smiley-mr-green
J'edit, ni vue, ni connu smiley-razz
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

OK et merci pour les infos ! super

merci papybricol je te confirme ça marche nickel !!

skywodd merci a toi aussi j’avais bien essayé de transformer uint8_t en uint16_t mais pas réussi !!
j'essai avec ta formule aussi pour voir le plus simple et le moins consommateur de mémoire !!

Merci pour votre rapidité et efficacité! smiley-grin
a+
gf

Logged

Arduino leonard

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

skywodd merci a toi aussi j’avais bien essayé de transformer uint8_t en uint16_t mais pas réussi !!
j'essai avec ta formule aussi pour voir le plus simple et le moins consommateur de mémoire !!
Si on y regarde de plus prés :
Code:
// Arduino.h
uint16_t makeWord(uint16_t w);
uint16_t makeWord(byte h, byte l);

#define word(...) makeWord(__VA_ARGS__)

// WMath.cpp
unsigned int makeWord(unsigned int w) { return w; }
unsigned int makeWord(unsigned char h, unsigned char l) { return (h << 8) | l; }

Donc au final ça revient à faire ma formule, mais sans le savoir smiley-wink
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Pages: [1]   Go Up
Jump to: