Forum: Mikrocontroller und Digitale Elektronik Gray Code in Binär Code umwandeln


von Daniel (Gast)


Lesenswert?

Hallo,

würde gerne einen 4 Bit Gray Code in einen Binär Code umwandeln. Ich 
habe den Code über eine Gray-Code Scheibe in meinen Controler eingelesen 
und in einer 8 Bit Char Variable abgespeichert. Die oberen 4 Bit habe 
ich ausmaskiert und würde nun gerne die 4 Bit Gray über einen 
Algorythmus in 4 Bit binär umwandeln. Kann mir vielleicht jamand helfen?
Vielen Dank im Voraus.

Gruß, DAni

von Gast (Gast)


Lesenswert?

Woran hapert es genau?

von Daniel (Gast)


Lesenswert?

Hallo,

ich würde die umwandlung gerne mit einem allgorythmus machen. Ich könnte 
den binärwert auch über einen swich case zuweisen das will ich aber 
nicht.

das habe ich gefunden: Binärcode X1 --> Graycode: X4 = ((X1*2) XOR X1) / 
2

ich muss das wahrscheinlich nach x1 auflösen. hab aber hier auch schon 
probleme.

oder gibts vielleicht auch was einfacheres?

von Gast (Gast)


Lesenswert?

Mal dir dochmal nebeneinander deinen 4-Bit Binärcode und den Graycode 
auf. Vielleicht kann man da schon alles erkennen.

von Marius W. (mw1987)


Lesenswert?

Nimm doch einfach nen Lookup-Table. Bei 4 Bit sind das nur 16 Einträge. 
Also 16 Byte belegter Flash-Speicher. Effizienter gehts wahrscheinlich 
nicht.
1
unsigned char gray2bin[16] = { ... }

Dekodierung geht dann einfach über
1
binaer = gray2bin[gray]
.

MfG
Marius

von Jochen (Gast)


Lesenswert?

Hi,
Here the a 32 Bit and a 4 Bit variant. The 4 Bit variant needs only one 
CPU cycle more than a table based approach.

Jochen

static uint32_t
GrayDecodeU32(uint32_t to_decode) {
        uint32_t result = to_decode ^ (to_decode >> 16);
        result ^= result >> 8;
        result ^= result >> 4;
        result ^= result >> 2;
        result ^= result >> 1;
        return result;
}

uint8_t
GrayDecodeU4(uint8_t t) {
         t = t ^ (t >> 2);
         return t ^ (t >> 1);
}

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.