[xmega] ultoa() funktioniert nach Bit-Shiften nicht richtig

OP #2825588
Lesenswert?

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.

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