Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Kde se koná výstava fotografií Luďka Vojtěchovského?

V dnešní soutěži hrajeme o:



chybné přečtení hodnoty char se znaménkem při čtení z SPI - přetypováním?

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: chybné přečtení hodnoty char se znaménkem při čtení z SPI - přetypováním?

Autor: sdfgdsgfsdfg ♂

10:54:48 10.09.2014

efendi napsal/a

Po sběrnici SPI se dotazuji periferního zařízení, které má odpovídat 16 bit Integerem. Příchozí data vyčítám uložením z SCI bufferu dvakrát po sobě (High byte a Low byte) do proměnné unsigned char. Poté je spojím funkcí do jednoho integeru:
MergeHiLoByte(uns_hbyte, uns_lbyte) ((uns_hbyte <<8)|uns_lbyte)
Jo to funguje perfektně, pokud na straně periferie zařízení odpoví předem katalogem stanoveným formátem unsigned int. Průšvih nastává, když potřebuju vyčíst několik málo druhů hodnot, které jsou podle katalogu Signed Integer, tedy se znaménkem. Nejenže z té funkce nic nevyleze. Jak mám splichtit pomocnou proměnnou pro vyčtení bufferu abych uspokojil jak přijímaný signed, tak unsigned char a dále jak to teoreticky funguje při "přetypování" a co musím upravit?



asi tezko muzes abys mohl chytat chvilku unsigned a chvilku signed, jak je chces rozlisit?!?! to by musel chodit zase nejaky jiny flag.
nebo ti jde jen o upravu funkce aby fungovala ciste pro signed hodnoty?

Citovat příspěvek

 

chybné přečtení hodnoty char se znaménkem při čtení z SPI - přetypováním?

Autor: efendi ♂

7:54:10 01.09.2014

Po sběrnici SPI se dotazuji periferního zařízení, které má odpovídat 16 bit Integerem. Příchozí data vyčítám uložením z SCI bufferu dvakrát po sobě (High byte a Low byte) do proměnné unsigned char. Poté je spojím funkcí do jednoho integeru:
MergeHiLoByte(uns_hbyte, uns_lbyte) ((uns_hbyte <<8)|uns_lbyte)
Jo to funguje perfektně, pokud na straně periferie zařízení odpoví předem katalogem stanoveným formátem unsigned int. Průšvih nastává, když potřebuju vyčíst několik málo druhů hodnot, které jsou podle katalogu Signed Integer, tedy se znaménkem. Nejenže z té funkce nic nevyleze. Jak mám splichtit pomocnou proměnnou pro vyčtení bufferu abych uspokojil jak přijímaný signed, tak unsigned char a dále jak to teoreticky funguje při "přetypování" a co musím upravit?

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: