PROMOS fórum

FRED - grafické vývojové prostředí => FRED - platforma PL2 (CCPU) => Téma založeno: anonym 20.10.2010, 12:25:41



Název: Zmena poradi bajtu
Přispěvatel: anonym 20.10.2010, 12:25:41
Do CCPU se nam dostava (z atypickeho merice) protokolem Modbus floatove cislo, ale ma opacne poradi bajtu. Dostavame 0x12345678, potrebovali bychom 0x78563412 a ve vysledku z toho udelat float. Lze to nejak v CCPU dosahnout?


Název: Re: Zmena poradi bajtu
Přispěvatel: libor 20.10.2010, 13:55:44
Tuto konverzi lze provést, jedná se o využití SW hradel.

Nejprve je nutné si číslo rozdělit na 2 dvojbajtové části (WORDy) a jejich jednotlivé bajty mezi sebou prohodit (viz první obrázek).

Následně je potřeba opět ze 2 WORDů složit jedno 4bajtové číslo, takže provedeme posun horního WORDu o 16 bitů doleva (vynásobením 65536) a čísla sečteme. Výsledek "přetypujeme" na float přivedením na vstup nějakého floatového modulu - v příkladu jsem použil Aplus (přičítaná hodnota je 0.0, aby neovlivnila výsledek). Vše je vidět na přiloženém obrázku nebo v ukázkovém projektu, který je také v příloze.

(připojené soubory vidí pouze registrovaní uživatelé (http://forum.elsaco.cz/index.php?action=register))