Forum: Mikrocontroller und Digitale Elektronik Benötige Hilfe beim Bitwackeln


von Matthias (matthiasm)


Lesenswert?

Hi zusammen,

ich suche einen Weg um die 2 Werte miteinander zu vereinen um das 
gewünschte Ergebnis zu erziehlen:

Wert1: 0b00010000
Wert2: 0b00000000

Ergebnis: 0b00000000
--------------------------------
Wert1: 0b00010001
Wert2: 0b00000000

Ergebnis: 0b00000001
--------------------------------
Wert1: 0b00001110
Wert2: 0b11110000

Ergebnis: 0b11111110
--------------------------------

Der Rechenweg muss immer der Selbe sein.

Stehe ich grad auf dem Schlauch oder ist es nicht möglich diese drei 
Operationen mit dem selben Rechenweg zu lösen?

Das erste Bit (Stelle 1) kann also vom Wert 1 direkt in das Ergebnis 
wandern. Nur mit den restlichen 7 Bits komme ich nicht klar...

Danke, Gruß
Matthias

: Bearbeitet durch User
von Cyblord -. (cyblord)


Lesenswert?

Das ist völlig sinnfrei. Gibt's dahinter ein System welches du in einem 
Satz beschreiben kannst oder wird das ein Zahlenrätsel?
Sag mal wozu das machen willst.

: Bearbeitet durch User
von Pandur S. (jetztnicht)


Lesenswert?

Das Problem ist noch unterbestimmt. Wir benoetigen viel mehr 
infomationen

von Matthias (matthiasm)


Lesenswert?

Ja, es geht um die Umwandlung eines 28.0 Wertes in Hex um diesen über 
einen SPI Bus zu übertragen.

Es scheitert jetzt an diesem letzten Schritt. Alle anderen Werte 
stimmen.

Was ich noch vergessen hatte:

Wert2 = Wert1^0x08



Aus dem Herstellerforum hab ich diesen Rechenweg gefischt:

float fParam = 1.0;
unsigned short usAddress = 0x0004;

long param223;
long param227;

param223 = fParam * 0x800000;
param227 = param223 + 0x8000000;

param_hex[3]=(unsigned char)param227;  //get byte 3 (LSBs) of parameter 
value
param_hex[2]=(unsigned char)(param227>>8); //get byte 2 of parameter 
value
param_hex[1]=(unsigned char)(param227>>16); //get byte 1 of parameter 
value
param_hex[0]=(unsigned char)(param227>>24);
param_hex[0] = param_hex[0] ^ 0x08;

RegisterWrite(0x68, usAddress, 4, param_hex);

Funktioniert wie gesagt auch bis auf diesen letzten Schritt. Dort häng 
ich nun...

von Falk B. (falk)


Lesenswert?

@Matthias Machmal (matthiasm)

>Ja, es geht um die Umwandlung eines 28.0 Wertes in Hex um diesen über
>einen SPI Bus zu übertragen.

Was soll ein 28.0 Wert sein? Eine Festkommazahl mit 28 Bit Vorkomma und 
0 Bit Nachkomma?

>Wert2 = Wert1^0x08

>Aus dem Herstellerforum hab ich diesen Rechenweg gefischt:

Um welchen IC handelt es sich? Datenblatt? Siehe Netiquette.

von Matthias (matthiasm)


Lesenswert?

Falk B. schrieb:
> Was soll ein 28.0 Wert sein? Eine Festkommazahl mit 28 Bit Vorkomma und
> 0 Bit Nachkomma?

Ja.

>Wert2 = Wert1^0x08
>
>>Aus dem Herstellerforum hab ich diesen Rechenweg gefischt:
>
> Um welchen IC handelt es sich? Datenblatt? Siehe Netiquette.

ADAU1452 von Analog Devices.

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

Rieche nur ich hier die Salami?

Was hast Du überhaupt vor?
Bitte in einfachen Sätzen, daß auch ich Das verstehen kann.

MfG

von Joe F. (easylife)


Lesenswert?

Meine Güte plapperst du konfus daher.

Warum denn Q28.0 in "hex" umwandeln, um es per SPI zu übertragen.
Q28.0 ist nichts anderes als eine signed 32-bit Zahl, wobei die oberen 4 
bit alle Vorzeichenbits sind.
Kann man also trotzdem einfach in 4 Bytes über SPI übertragen.

Da du den Beitrag aus dem "Herstellerforum" ja nicht verlinkt hast, tue 
ich dies mal:
https://ez.analog.com/thread/78737

Da ist eine Funktion zu sehen, die offensichtlich Q5.23 verwendet.
Was das mit deinen Q28.0 zu tun haben soll ist mir schleierhaft.
Auch ist dieser dort genannte Codeschnipsel wenig selbsterklärend.
Was soll denn "param223" und "param227" sein.
Und was das "param_hex[0] = param_hex[0] ^ 0x08;" soll weiss auch nur 
der werte Herr Programmierer selbst.
Genauso wie was diese Funktion mit "hex" zu tun haben soll. Für Q28.0 
(und auch für Q5.23) in hex bräuchte man 8 Bytes.

Definiere dein Problem (Ziel) klar und nachvollziehbar, und dann kann 
dir geholfen werden. So hat das jedenfalls keinen Sinn.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Matthias M. schrieb:
> ich suche einen Weg um die 2 Werte miteinander zu vereinen

Was soll denn "vereinen" sein?
Mit den 3 Zahlenpaaren kann niemand was anfangen.
Gib doch einfach die Formel an, die Du berechnen willst.

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
Noch kein Account? Hier anmelden.