[elektro] CCS->XC32

hg12345 hg12345 at freemail.hu
Tue Mar 12 08:25:16 CET 2019


 Hi,

a bites struktura definiális a C-ben így néz ki:

include <stdint.h>

struct pelda{<!-- -->
   uint8_t Valtozó1
  struct {<!-- -->
   unsigned bit0: 1;             // lehet előjeles vagy előjel nélküli is....
   unsigned bit1: 1;
   unsigned bit23:2;
   signed     bit4567:4;
  } bitek;
} varpelda;

érdemes a biteszelet definiót  egy union-ba foglalni, mert akkor a a teljes értékre is tudsz hivatkozni.

A bitszelet struct-nak nem szükséges nevet adni, ha a fordító elfogadja név nélküli struct- definicókat.  (#pragma  unname vagy valami hasonlóra kell keresni)

A bitszelet struct méret korlátozása általában a fordító adja meg, sokszor a uC regiszterméretével azonos, vagy az int változó méretével. 

Azt nem tudom, hogy C99 vagy melyi szabvány szerint része a C-nek, de ettől biztos működik.

Nem igazán érdemes egzotikus typedef declarációkat használni, ha nem szükséges, mióta a stdint tartalmazza a intXX_t változókat a uC fejlesztésekhez.... 

üdv




-------- Eredeti levél --------
Feladó: Ekati Bt. < ekati at kabelszat2002.hu (Link -> mailto:ekati at kabelszat2002.hu) >
Dátum: 2019 március 11 21:49:47
Tárgy: [elektro] CCS->XC32
Címzett: elektro at tesla.hu (Link -> mailto:elektro at tesla.hu)
 
CCS-ben egy stuktúra deklarálás
struct Pelda
{<!-- -->
uint8 Valtozo1;
int1 Valtozo2;
}
ugyan ez XC32-ben
struct Pelda
{<!-- -->
uint8_t Valtozo1;
uint8_t Valtozo2:1;
}
A Valtozo1 egy 1 byteos, a Valtozo2 egy 1 bites változó.
A Valtozo1-et elintézem egy
#define int8 int8_t
macro definiálással de a Valtozo2-t nem tudom hogyan lehetne megoldani,
hogy ne kelljen az összes CCS forrást átnézni és legfőképp átírni.
Definiálhatnék egy
#define int1 uint8_t
makrót is de akkor ugye minden egyes bit egy teljes byte-ban lesz tárolva.
Küzdött már valaki hasonló problémával?
NagyZé
-----------------------------------------
elektro[-flame|-etc]


More information about the Elektro mailing list