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; }
> 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
> 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
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?
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...
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
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,...)
> 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-Tutorial#Der_UART 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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.