Forum: PC-Programmierung [Mathe] Dipschalter ReverseEngineering


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von D a v i d K. (oekel) Benutzerseite


Lesenswert?

Hi,

ich stehe gerade auf dem Schlauch: Habe einen Dipschalter (X=ON)
und erkenne die Regelmäßigkeit/Formel nicht :(
1
XOOOO    0x154
2
3
XXOOO    0x54
4
5
OXOOO    0x4
6
7
OOOOO    0x554
8
9
OOXOO    0x514
10
11
OOOXO    0x54
12
13
OOOOX    0x55
14
15
XXXXX    0x
16
17
OXXXX    0x400
18
19
OOXXX    0x500
20
21
OOOXX    0x540
22
23
XOOXX    0x140

(habe nicht alle Varianten durchprobiert...)

Erkennt Jemand das Muster?

LG

: Bearbeitet durch Moderator
von Ron-Hardy G. (ron-hardy)


Lesenswert?

Geh weg Teufel!

Beitrag #7573051 wurde vom Autor gelöscht.
von Bruno V. (bruno_v)


Lesenswert?

Kannst Du bitte angeben, was 0x154 bedeutet?

Kannst bitte vom einzig sinnvollen Grundzustand (alle X = 0x0) 
ausgehend, einzelne Bits schalten?

Kannst Du bitte führende und nachfolgende Stellen als 0 mit 
aufschreiben? Du scheinst da nämlich durcheinander gekommen zu sein.

: Bearbeitet durch User
Beitrag #7573080 wurde vom Autor gelöscht.
von Daniel D. (danielduese)


Lesenswert?

Ja, was soll 0x154 sein. Das wäre eine Schreibweise für Hexadezimal 
Zahlen. Wo sollen so hohe Zahlen herkommen?
Programmcode?

von Manfred L. (egonotto)


Lesenswert?

Hallo,

wenn man den Schalter S4 S3 S2 S1 S0 nennt und definiert für J =  0 bis 
4:
Zj = 0 falls Sj ein
Zj = 1 falls Sj aus
so bekommt man mit der binären Zahl

0 Z4 0 Z3 0 Z2 0 Z1 0 Z0 0 0 oft, aber nicht immer das gewünschte 
Ergebnis.

XOOOO    0x154 passt
XXOOO    0x54  passt
OXOOO    0x4   falsch sollte 0x454 sein
OOOOO    0x554 passt
OOXOO    0x514 passt
OOOXO    0x54  falsch sollte 0x544 sein
OOOOX    0x55  passt
XXXXX    0x    passt
OXXXX    0x400 passt
OOXXX    0x500 passt
OOOXX    0x540 passt
XOOXX    0x140 passt

MfG
egonotto

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

ich verstehe immer noch nicht (trotz EgonOttos "Erklärung") wie man z.B.

> XOOOO    0x154 passt

da auf irgendwelche 1,5 und 4 Zahlenangaben kommt, und wieso das "passt"

von Bruno V. (bruno_v)


Lesenswert?

Wegstaben V. schrieb:
> ich verstehe immer noch nicht (trotz EgonOttos "Erklärung") wie
> man z.B.
>
>> XOOOO    0x154 passt
>
> da auf irgendwelche 1,5 und 4 Zahlenangaben kommt, und wieso das "passt"

Drehe X und 0 um zu 0 und 1:

> 01111

Füge die ungenutzten "Stellen"/Bits ein (hier als o statt 0)

> 0o1o1o1o1oo

Schreibe das als binärzahl, gruppiert zu viert

> 01 0101 0100

Schreibe als Hex

> 0x154

Beitrag #7573216 wurde vom Autor gelöscht.
Beitrag #7573252 wurde vom Autor gelöscht.
von D a v i d K. (oekel) Benutzerseite


Lesenswert?

Manfred L. schrieb:
> Hallo,
>
> wenn man den Schalter S4 S3 S2 S1 S0 nennt und definiert für J =  0 bis
> 4:
> Zj = 0 falls Sj ein
> Zj = 1 falls Sj aus
> so bekommt man mit der binären Zahl
>
> 0 Z4 0 Z3 0 Z2 0 Z1 0 Z0 0 0 oft, aber nicht immer das gewünschte
> Ergebnis.

Danke das scheint es zu sein.

Vielleicht noch ein wenig mehr Background.

Der komplette Dipschalter hat 10 Stellen.

12345ABCDE und gehört zu einer Funkfernbedienung.

"x154 55 1" gehört zu x2345xBCDE (durch etwas probieren scheint die 
letzte 1=ON und 4=OFF zu sein sowie die hiesige 55 zu A gehören, 
weswegen ich sie weggelassen habe.

Wenn ich also mit den Dips 1-5 spiele ändern sich die letzen 3 Zahlen 
beim betätigen von A_ON nie (analog die anderen Tasten)

Macht es dann mehr Sinn?

OXOOO    "0x4 55 1" ergibt sich mir aber auch rechnerisch noch nicht :(

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

D a v i d K. schrieb:
> OXOOO    "0x4 55 1" ergibt sich mir aber auch rechnerisch noch nicht :(

Bei mir auch nicht. Bruno bestätigt 454, und nicht 455 !

0x000 -> 10111 -> 1o0o1o1o1oo -> 1o0 o1o1 o1oo -> 100 0101 0100 -> 0x454

: Bearbeitet durch User
von Bruno V. (bruno_v)


Lesenswert?

Wegstaben V. schrieb:
> Bruno bestätigt 454,

Manni noch eher:

Manfred L. schrieb:
> OXOOO    0x4   falsch sollte 0x454 sein

Wegstaben V. schrieb:
> und nicht 455 !

die 55 kam jetzt erst dazu:

D a v i d K. schrieb:
> OXOOO    "0x4 55 1" ergibt sich mir aber auch rechnerisch noch nicht
damit korrigiert wäre Mannis Kommentar gewesen:
>> OXOOO    0x4 55 1  falsch sollte 0x454 55 1 sein

: Bearbeitet durch User
von D a v i d K. (oekel) Benutzerseite


Lesenswert?

Manfred L. schrieb:
> OXOOO    0x455   falsch sollte 0x454 sein
> OOOXO    0x545  falsch sollte 0x544 sein

Also scheinbar ist es auch noch ein techisches Problem, denn wenn ich 
die kritischen Codes erneut durchlaufe, so gibt es immer eine Taste, die 
genau den berechneten Wert liefern, die anderen tanzen dann leider aus 
der Reihe mit +1.

Aber dann weiß ich schon Mal, dass die Formel stimmt.
Vielleicht hat trotzdem noch Jemand eine Idee, wie es zu dieser 
Abweichung (nur bei einigen BasisCodes) kommt?

PS: ich habe zwei Sets und die zugehörigen Fernbedienungen senden die 
gleichen Codes. Bauteilchargenabweichung kann es daher wohl kaum sein. 
(Die Gegenstelle/Steckdose würde sonst ja auch nicht funktionieren ;)

: Bearbeitet durch User
von D a v i d K. (oekel) Benutzerseite


Lesenswert?

Manfred L. schrieb:
> 0 Z4 0 Z3 0 Z2 0 Z1 0 Z0 0 0

Gibt es einen Grund warum man die 0er hinter jedes Bit einfügt und zum 
Schluss sogar 00?

0x400 --> 10 00 00 00 00 0
0x500 --> 10 10 00 00 00 0
0x140 --> oo 10 10 00 00 0

von D a v i d K. (oekel) Benutzerseite


Lesenswert?

D a v i d K. schrieb:
> Manfred L. schrieb:
>> 0 Z4 0 Z3 0 Z2 0 Z1 0 Z0 0 0
>
> Gibt es einen Grund warum man die 0er hinter jedes Bit einfügt und zum
> Schluss sogar 00?
>
> 0x400 --> 10 00 00 00 00 0
> 0x500 --> 10 10 00 00 00 0
> 0x140 --> oo 10 10 00 00 0

Edit: Blöde frage, ergibt sich wenn man die ganze Zahl betrachtet:

0x154151  000101010100000101010001  "0001"  "0101"  "0100"  "0001" 
"0101"  "0001"

0x154451  000101010100010001010001  "0001"  "0101"  "0100"  "0100" 
"0101"  "0001"

0x154551  000101010100010101010001  "0001"  "0101"  "0100"  "0101" 
"0101"  "0001"

0x154511  000101010100010100010001  "0001"  "0101"  "0100"  "0001" 
"0001"  "0001"

0x154541  000101010100010101000001  "0001"  "0101"  "0100"  "0101" 
"0100"  "0001"

Und jetzt erkenne ich auch das Muster, wobei mir der Sinn nicht klar 
wird:
Wir haben auf der Empfangsseite einen 10er Dippschalter == 5er Dip auf 
der Sendeseite + ABCDE (Jeder Knopf hat ein AN/AUS)

Macht also 12 Binärwerte. Nun künzelt man diese 12 binär auf 24 binär, 
indem man immer eine leading 0 dazwischenschiebt. 24er Binär ist dann 
total einfach in 0x (Hex) umzuwandeln.

Solved!

Letzte Frage: Ist das ein gängiges Mittel in der Controllertechnik?

: Bearbeitet durch User
von Bruno V. (bruno_v)


Lesenswert?

D a v i d K. schrieb:
> Edit: Blöde frage, ergibt sich wenn man die ganze Zahl betrachtet:

David, ich verstehe nicht, was Du schreibst.

Wenn Du von "Abweichungen" schreibst, weiß ich nicht, welches Bit jetzt 
konkret falsch ist oder welche Beobachtung (X zu Zahl) Du jetzt genau 
meinst.

Ich weiß auch nicht, was Du mit Zahl meinst: eine 7-Segment-Anzeige auf 
der Fernbedienung? Mach doch mal ein Foto. Oder mit den 5 Dip-Schaltern, 
die Mal Hex-Schalter sind und manchmal mehr und manchmal weniger.

von Axel R. (axlr)


Lesenswert?

Ron-Hardy G. schrieb:
> Geh weg Teufel!

Recht hat er.
Er hat keinen DIP-Schalter, sondern eine Funkfernbedienung, bei der die 
DIP-Switches eine Muster hinterlassen und wir garnicht wussten, dass er 
da noch mehr DIP-Schalter hat, statt nur die gezeigten und große "Xse" 
und kleine in der Hex-Notation hier für zusätzliche Verwirrung stiften. 
Ein großes "X" means "dont kähr"! An ist "1" und aus ist "0"...

Ich wäre da ganz anders in diesen Thread eingestiegen, indem ich die 
Umgebung und Ansinnen erklärt hätte und DANN auf die DIP-Switches zu 
sprechen gekommen wäre.
Uns ein X0000 = 0x154 ohen weitere Erklärung anbieten? Kann man machen. 
Geht ja, wie man sieht. Nur beteiligen sich nicht alle, wie man auch 
unschwer erkennt.

von D a v i d K. (oekel) Benutzerseite


Angehängte Dateien:

Lesenswert?

Bruno V. schrieb:
Mach doch mal ein Foto. Oder mit den 5 Dip-Schaltern,
> die Mal Hex-Schalter sind und manchmal mehr und manchmal weniger.

Sorry für die Verwirrung. Entsteht wenn man selber nicht weiß wie es 
gelöst worden sein könnte UND der Hersteller den Dip invertiert 
ausließt.

von Hmmm (hmmm)


Lesenswert?

D a v i d K. schrieb:
> UND der Hersteller den Dip invertiert ausließt.

Das ist eher der Normalfall. Die Eingänge werden von Pullups (intern 
oder extern) auf Vcc gezogen, und der DIP-Schalter zieht sie im 
"On"-Zustand auf GND.

von Bruno V. (bruno_v)


Lesenswert?

D a v i d K. schrieb:
> ntsteht wenn man selber nicht weiß wie es
> gelöst worden sein könnte

?????
Du solltest lieber beschreiben, was ist, nicht was sich irgendjemand 
gedacht haben könnte.

Das Bild ist bisher das einzige, was überhaupt Sinn ergibt. Es ist sogar 
beschrieben, was die 5er-Blöcke bedeuten sollen.

Es ist jedoch (für mich) noch immer nicht erkennbar, wo Du

> "x154 55 1" gehört zu x2345xBCDE

die komischen Hexzahlen (hier "154 55 1") hernimmst. Mach doch BITTE! 
mal ein Foto davon, dass wir wissen, wovon Du redest.

: Bearbeitet durch User
von D a v i d K. (oekel) Benutzerseite


Angehängte Dateien:

Lesenswert?

Bruno V. schrieb:
> die komischen Hexzahlen (hier "154 55 1") hernimmst. Mach doch BITTE!
> mal ein Foto davon, dass wir wissen, wovon Du redest.

Foto der Hardware weiter oben.
ScreenShot der Software (Tasmota) hier:

von Bruno V. (bruno_v)


Lesenswert?

Und Du hast das Alles für offensichtlich gehalten? Ich fühle mich leicht 
veräppelt.

Naja, zum Glück ist ja jetzt alles geklärt.

D a v i d K. schrieb:
> Letzte Frage: Ist das ein gängiges Mittel in der Controllertechnik?

Der Mitschnitt bei 20:53:18 zeigt, warum es so gemacht wird!

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.