mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Int zu String


Autor: chn (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;
}

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hex- oder dez-Datsrellung?

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
rbyte_blumenkohl = rbyte % 0x100;
rbyte_buletten = rbyte / 0x100;

pumpkin

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
low = (unsigned char) rByte;

Eine Klammer im casting vergessen.

MW

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ pumpkin,
hast recht, hab mich vertan.

MW

Autor: chn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
an Rahul

am besten wäre dez darstellung!

Autor: chn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
an pumpkin

rbyte_blumenkohl = rbyte % 0x100;
rbyte_buletten = rbyte / 0x100;

dann hätte ich zwie char mit je 8bit, nur wie kann ich die dann auf die 
serielles schnittstelle legen?

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die zwei acht bit werte legst du in den buffer der seriellen 
schnittstelle. (wenn ich dich richtig verstehe willst du den 
kladderadatsch wieder per SPI rausschieben?!?!)

pumpkin

Autor: chn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
an pumpkin

also muss ich nur die bits einzeln in den buffer der seriellen 
schnittstelle legen; verbindung erfolgt mit serieller schnittstelle (rx 
,tx) und nicht über spi (din, dout,...)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> also muss ich nur die bits einzeln in den buffer der seriellen
> schnittstelle legen

Hast du dir schon mal das Tutorial angeschaut?

http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

Nein, das musst du nicht. Die Serielle hat ein
Datenregister. Dort schreibst du dein Byte rein
und um den Rest kümmert sich die serielle
Schnittstellenkomponente im µC.

Autor: chn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok danke leute

mfg chn

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.