Int zu String

Gast #482897
Lesenswert?
• ▲
▼
hallo,

ich benutze einen 16bit ad wandler um Messwerte von einem Sensor 
einzulesen.
die Bits, welche ich vom ad wandler bekomme werden in eine "unsigned 
int" variable gespeichert.
Wie kann ich die diese variable nun in einen "char" umwandeln um sie auf 
die serielle schnittstelle legen zu können?


Programm zum einlesen der einzelnen bits vom ad wandler:

unsigned int spi_readData()
{
  int i;
  unsigned int rByte=0;

  CS=0;

  for(i=0;i<16;i++)
  {
    rbyte<<=1;
    rByte|=DIN;

    SCLK=0;
    SCLK=1;

  }

  CS=1;
  return rByte;
}
Gast #482904
Lesenswert?
• ▲
▼
> for(i=0;i<16;i++)
> {
>    rbyte<<=1;
>    rByte|=DIN;
>    SCLK=0;
>    SCLK=1;
>  }


for(i=0;i<16;i++)
{
    rByte|=DIN;
    if (rbyte < 15) rbyte<<=1;

    SCLK=0;
    SCLK=1;
}
Das ist mir als erstes aufgefallen. Du schiebst bevor du schreibst. Das 
bedeutet, dass das MSB immer 0 ist (wenn die Variable vor dem 
Schleifendurchlauf gelöscht wird.
Ansonsten:
unsigned char low,high;
low = (unsigned char rByte;
high = rByte >> 8;

MW
Gast #482915
Lesenswert?
• ▲
▼
> Das bedeutet, dass das MSB immer 0 ist [...]

halte ich für ein gerücht. die wird in jedem fall zum schluss oben 
'rausgeschoben'. ergo: irrelelvant. und die typecast aktion finde ich 
auch mehr als bedenklich - imho sollte man das nur von klein nach groß 
machen, umgedreht nur wenn man weiss was da tatsächlich geschieht.

pumpkin
Gast #482931
Lesenswert?
• ▲
▼
rInt sei Rückgabewert:

unsigned char s[6];
uint_16 n = 10000;
unsigned char i=0;

s[0]= '0';
s[5] = '\0';
while (rInt>0)
{
  while (rInt>=n)
  {
    s[i]++;
    rInt -= n;
  }
  n /= 10;
  i++;
}


oder guck in die K&R-Bibel...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren