uint16_t in Hex umrechnen

#6991411
Lesenswert?

Falls es um die String Ausgabe von Hex mit einem AVR ueber die serielle 
geht:

const unsigned char HEX[] PROGMEM = {"0123456789ABCDEF"};

void Printc(char c) {
   while(!(UCSR0A & (1 << UDRE0)));
   UDR0 = c;
}
.....
  unsigned char bl = pgm_read_byte(&HEX[val & 0x0F]);
  unsigned char bh = pgm_read_byte(&HEX[val >> 4]);
  Printc( bh );
  Printc( bl );
Beitrag #6991460 wurde von einem Moderator gelöscht.
OP (Firma: Hochschule Karlsruhe - Technik) #6991469
Lesenswert?

Oliver S. schrieb:
> Was meinst du mit "umrechnen"? Als Zahlenwert gibt es da nichts
> umzurechnen, einen Hex-String erzeugt dir (s)printf mit %x.
>
> Oliver


Die Situation :

Ich habe einen Sensorwert (uint16_t). Ich will den Wert in einem Message
Buffer von einem CAN-Modul schreiben, damit ich den Wert über CAN Bus
übertragen kann. Diese generierte Sensordaten müssen in Hexadezimal
umgewandelt werden, damit sie in den Message Buffer eingebunden werden
können.

Gruß, Nader
Gast #6991473
Lesenswert?

Nader A. schrieb im Beitrag #6991460:
> Diese generierte Sensordaten müssen in Hexadezimal umgewandelt werden,
> damit sie in den Message Buffer eingebunden werden können.

Wenn der Wert 0 ist, welche Bytes (und wie viele) sollen in den Puffer 
geschrieben werden.

Wenn Du dir darüber klar bist, das gleiche für den Wert 30. Falls nicht, 
Code oder Doku des CAN-Moduls (nicht HW sondern deren SW)
OP (Firma: Hochschule Karlsruhe - Technik) #6991481
Lesenswert?

A. S. schrieb:
> Nader A. schrieb im Beitrag #6991460:
>> Diese generierte Sensordaten müssen in Hexadezimal umgewandelt werden,
>> damit sie in den Message Buffer eingebunden werden können.
>
> Wenn der Wert 0 ist, welche Bytes (und wie viele) sollen in den Puffer
> geschrieben werden.
>
> Wenn Du dir darüber klar bist, das gleiche für den Wert 30. Falls nicht,
> Code oder Doku des CAN-Moduls (nicht HW sondern deren SW)

Insgesamt habe ich 4 Sensoren. In einer CAN-Nachricht kann man 8 Bytes 
Nutzdaten übertragen. Jeder Sensorwert hat zwei Bytes. Immer zwei Bytes 
für jeden Sensorwert werden in den Message Buffer geschrieben.
Gast #6991491
Lesenswert?

Nader A. schrieb:
> A. S. schrieb:
>
>> Nader A. schrieb im Beitrag #6991460:
>>> Diese generierte Sensordaten müssen in Hexadezimal umgewandelt werden,
>>> damit sie in den Message Buffer eingebunden werden können.
>>
>> Wenn der Wert 0 ist, welche Bytes (und wie viele) sollen in den Puffer
>> geschrieben werden.
>> Wenn Du dir darüber klar bist, das gleiche für den Wert 30. Falls nicht,
>> Code oder Doku des CAN-Moduls (nicht HW sondern deren SW)
>
> Insgesamt habe ich 4 Sensoren. In einer CAN-Nachricht kann man 8 Bytes
> Nutzdaten übertragen. Jeder Sensorwert hat zwei Bytes. Immer zwei Bytes
> für jeden Sensorwert werden in den Message Buffer geschrieben.

Du bekommst 2 Byte und sendest 2 Byte ... Das einfachste wäre, das 
gleiche Datenformat zu nehmen. Dann kannst Du die Bytes kopieren.

Wenn das nicht geht, musst Du uns sagen, wie die Datenformate sind. Hex 
hat dabei viele oder keine Bedeutung.

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