Jedna lepiaca (ako spojit dva bajty do int)

Josef Štengl ok1ced na nagano.cz
Čtvrtek Leden 5 12:35:07 CET 2017



Dne 5.1.2017 v 11:40 tomas mainzer napsal(a):
> nevim jaky mate prekladac a indiana v procesoru (pripadne je treba prehodit b[0],b[1]) ale  lze i takto:
>
>
> typedef struct tagintb {
> union {
>  struct {
>    int16_t i;   //2B int
>   };
>   struct {
>     uint8_t b[2]; //1+1B array
>   };
>   };
> } intb;
> ..
>
> intb b;
> b.b[0]=Wire.read();
> b.b[1]=Wire.read();
> return(b.i);
>
>
>
> 2017-01-05 11:09 GMT+01:00 balu <balu na k-net.fr <mailto:balu na k-net.fr>>:
>
>     Ked sa uz o tom lepeni ve sroubarne bavime, mal by som jednu zaciatocnicku...
>
>     MCP3428 na ktory som sa pytal funguje vyborne, teraz by som rad dalej spracoval data... Po I2C zbernici dostavam data
>     z AD prevodnika, idu po sebe dva bajty, najprv horny a potom spodny. Vystup ma byt signed 16-bitovy integer.
>
>     Otazka je ako ich spravne skombinovat do jedneho intu? V tom hnusnom prostredi pre ten hnusny procesor ma int dva
>     bajty, ziadnu portovatelnost na ine platformy nepotrebujem. Mozeme skusit dve riesenia, jedno co bude fungovat v tomto
>     konkretnom pripade a jedno genericke, uplne korektne. Rad by som sa naucil ako nato...
>
>     dakujem,
>     b.
>
>
>
>      // read channel value
>      Wire.requestFrom(0x68, 2);    // request 2 bytes from slave device #68
>      while (Wire.available()) { // slave may send less than requested
>        byte bhigh = Wire.read();
>        byte blow = Wire.read();
>        return( ((unsigned int)bhigh << 8) + blow ); <<<--- tutoka
>        }
>     _______________________________________________
>     HW-list mailing list  -  sponsored by www.HW.cz <http://www.HW.cz>
>     Hw-list na list.hw.cz <mailto:Hw-list na list.hw.cz>
>     http://list.hw.cz/mailman/listinfo/hw-list <http://list.hw.cz/mailman/listinfo/hw-list>
>
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>


Další informace o konferenci Hw-list