Hallo Freunde!
Ich möchte aus 3 Byte einen 24bit Wert erzeugen, und diesen dann mit der
ASF-funktion "ultoa()" für die Ausgabe auf einem LCD-Display in einen
string umwandeln.
Grob umrissen ist das der code:
1 | uint8_t buffer[8];
|
2 | uint32_t result;
|
3 | uint32_t string[10];
|
4 |
|
5 | result = ((uint32_t)(buffer[0] << 16) & 0xFF0000) // spi_buffer[0]=0xFE
|
6 | + ((uint32_t)(buffer[1] << 8) & 0x00FF00) // spi_buffer[0]=0xDB
|
7 | + (uint32_t)(buffer[2] & 0x0000FF); // spi_buffer[0]=0xA9
|
8 | ultoa(result, &string, 16);
|
9 | lcd_print_string(string,0,0,&twi_lcd_packet); // Ausgabe: DBA9
|
10 |
|
11 | ultoa(0xFEDBA9, &string, 16);
|
12 | lcd_print_string(string,0,1,&twi_lcd_packet); // Ausgabe: FEDBA9
|
Bitshifte ich mir "result" zurecht fehlt das high-byte in der Ausgabe.
Übergebe ich ultoa den Wert "0xFEDBA9" direkt wird er komplett
ausgegeben.
Hat jemand eine Idee, was ich hier falsch mache?
Danke!
Holger.