Hilfe beim reverse engineering: Wer kennt diese 1Wire-Form?

Der chaotische Hauptfaden

Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese

Antworten
andreas6
Beiträge: 4157
Registriert: So 11. Aug 2013, 15:09

Re: Hilfe beim reverse engineering: Wer kennt diese 1Wire-Fo

Beitrag von andreas6 »

Auch wenn ich den Aufdruck der beiden parallelen Cs nicht lesen kann, sind die ungewöhnlich groß. Bis Du sicher, den richtigen Wert eingebaut zu haben? Ansonsten fehlt der Schaltung ein Elko an der Speisung.

MfG. Andreas
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Hilfe beim reverse engineering: Wer kennt diese 1Wire-Fo

Beitrag von Bumbum »

Hallo Andreas,

ja, die sind auch für 630V... Aber andere hatte ich wie gesagt nicht da.

Viele Grüße,
Andreas
andreas6
Beiträge: 4157
Registriert: So 11. Aug 2013, 15:09

Re: Hilfe beim reverse engineering: Wer kennt diese 1Wire-Fo

Beitrag von andreas6 »

Löte mal noch 100µF an die Speisespannung auf der Karte, das schadet nie. In solchen simulierten Schaltungen werden diese Puffer standardmäßig nicht eingezeichnet, aber in der Praxis braucht man sie.

MfG. Andreas
Benutzeravatar
xoexlepox
Beiträge: 4815
Registriert: So 11. Aug 2013, 19:28
Wohnort: So etwa in der Mitte

Re: Hilfe beim reverse engineering: Wer kennt diese 1Wire-Fo

Beitrag von xoexlepox »

Dabei ist folgendes hübsches Werk entstanden:
Das sieht doch ganz gut aus!
Es wird zwar eine 1 ausgegeben, wenn ein Signal anliegt und eine 0, wenn man es wegnimmt.
Dabei spielt das Signal aber leider keine Rolle. Die Frequenz ist also völlig egal.
Ist das denn notwendig, bzw. hast du auch Impulse mit anderen Trägerfrequenzen mit auf der Leitung? Oder benötigst du eine Information über die Amplitude des Signals? Das war aus den Oszillogrammen nicht zu erkennen. Naja, was macht die Schaltung schon? Die trennt die Gleichspannung ab, verstärkt die Trägerschwingung, richtet sie gleich, glättet sie etwas, und bringt das Ergebnis so etwa auf Logikpegel.

Laut Simulation sollte das ab ca. 0.7Vss Trägersignal, mit Trägerfrequenzen von 200kHz bis 2MHz, und mit Pulsweiten von 15µs bis etliche ms funktionieren. Aber ok, nun hast du ja eine "modernere" Lösung gefunden...
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Hilfe beim reverse engineering: Wer kennt diese 1Wire-Fo

Beitrag von Bumbum »

Hallo xoexlepox,

ich bin mir nicht sicher, ob ich dich verärgert habe mit meiner "modernen" Lösung. Das kommt beim übertragen von Textnachrichten nicht immer ganz rüber. Ich werde deine Tipps selbstverständlich noch ausprobieren. Warum ich eine Lösung per Software vorziehe ist, weil ich deine Schaltung leider nicht ganz nachvollziehen kann. Wenn diese aber besser funktioniert setze ich diese selbstveständlich ein. Leider hat sie in meinen Augen nicht gut funktioniert und ich war ratlos, ob das so sein soll und wenn nicht, wie ich mit der Fehlersuche anfangen soll.
Tatsächlich habe ich sie deshalb bis jetzt nur am Frequenzgenerator und nicht am Rad getestet, was ich mal nachholen sollte...

Ob ich andere Trägerfrequenzen oder Amplituden benötige bin ich mir nicht sicher. Deshalb habe ich eingangs die Messungen gezeigt. Ich unterstelle mir aber selbst dabei Messfehler, was von euch ja teilweise auch vermutet wird.

Ich werde weiter testen und berichten.

Viele Grüße,
Andreas
Benutzeravatar
xoexlepox
Beiträge: 4815
Registriert: So 11. Aug 2013, 19:28
Wohnort: So etwa in der Mitte

Re: Hilfe beim reverse engineering: Wer kennt diese 1Wire-Fo

Beitrag von xoexlepox »

...ob ich dich verärgert habe mit meiner "modernen" Lösung.
Nö, ich habe mich gefreut, daß du die Schaltung überhaupt aufgebaut hast. Daß das Teil nicht so funktioniert, wie du es dir vorgestellt hast, beruht vermutlich auf einem Kommunikationsproblem. Ich bin beim Entwurf von der mir bekannten Problemstellung ausgegangen. Aber deine Variante hat durchaus auch ihre Vorteile: a) Du verstehst sie. b) Du bist bei der Erstellung bestimmt nicht dümmer geworden. c) Sie lässt sich auch zum "Senden" umstricken ;)
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Hilfe beim reverse engineering: Wer kennt diese 1Wire-Fo

Beitrag von Bumbum »

Hallo xoexlepox,

na dann ist ja alles prima. Ich habe heute mal deine Schaltung um die genannten 100µF zur Stütze erweitert und dann ans Fahrrad angeschlossen. Folgendes ist dabei rausgekommen:
Tasten.jpg
Da habe ich mal Tasten gedrückt und juhu es könnten Bits sein! Leider geht das Signal dann sehr lange weiter wie in der 4. Messung zu sehen. Meine Vermutung: Für die Tasten reichen bestimmt 2 oder 3 Bytes, der Rest ist einfach zu ignorieren. Also habe ich das ganze mal aufgezoomt, die grobe Zeit gemessen (ca. 4,5ms) und dann versucht zwei Bytes zu erahnen:
2Bytes.jpg
Das ergab aber nur Kopfkratzen. Entweder sind die Bits komisch codiert, oder ich sehe den Wald vor lauter Bäumen nicht.

Ich habe deshalb mal die Zeitspanne zwischen den nachfolgenden "leeren" Nadelimpulsen gemessen und versucht diese Spanne auf das Signal anzubringen:
Signal.jpg
Aber irgendwie half das nichts gegen das Kopfkratzen. Kann einer von euch da ein Muster erkennen?

Viele Grüße,
Andreas
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Hilfe beim reverse engineering: Wer kennt diese 1Wire-Fo

Beitrag von Bumbum »

Ah, Nachtrag: Das blaue ist das Ausgangssignal, (Channel 2), gelb ist Eingangssignal (Channel 1)
Benutzeravatar
xoexlepox
Beiträge: 4815
Registriert: So 11. Aug 2013, 19:28
Wohnort: So etwa in der Mitte

Re: Hilfe beim reverse engineering: Wer kennt diese 1Wire-Fo

Beitrag von xoexlepox »

Ich habe heute mal deine Schaltung um die genannten 100µF zur Stütze erweitert und dann ans Fahrrad angeschlossen.
Wenn du den gleichen Versuch nun noch einmal mit deiner µC-Lösung vornimmst, und recht ähnliche Signale dabei herauskommen, weisst du, ob beide Schaltungen (für diesen Anwendungsfall) brauchbar sind. Welche Schaltung du im Endeffekt zur Signalanalyse verwendest, ist dann egal.
Folgendes ist dabei rausgekommen
Das sieht doch schon halbwegs brauchbar aus! Daß (und warum) die Aufzeichnung des Eingangssignals mehr "Mondstand" als ein Digitalsignal ist, wurde ja schon erklärt. Ich denke, du solltest die Zeitablenkung nicht langsamer als "1ms/div" einstellen, damit du keinen Mist misst.

Da die kürzesten Impulse so etwa 100µs lang sind, würde ich mal davon ausgehen, daß das so etwa die Dauer einer "Bitzelle" ist. Demzufolge könnten die "Bytes" eine Folge von 10 oder 11 Bits (ein Startbit -immer "1"-, 8 oder 9 Datenbits, und ein oder zwei Stopbit -immer "0"-) sein. Dann würde deine Theorie von etlichen "leeren" ("0xff"-) Bytes (nur Startbits) auch "passen". Und das "erste Byte" in deinem Oszillogramm wäre dann eine Präambel, die ein Datenpaket einleitet.

Ein komplettes Datenpaket auf dem Scope in Bits zu "zerlegen" wird sicher eklig, aber dafür kannst du ja einen µC beschäftigen, der das Startbits detektiert, und dann die folgenden Bitzellen (mittig) samplet. Damit hast du schon mal Bytes, die du weiter analysieren kannst. Alles was du dafür brauchst, ist eine möglichst genaue Schätzung/Messung der Länge einer Bitzelle, um das Programm zu schreiben, welches die Signale weiter auseinanderpopelt.

Edith meint: Falls du bei der Bitzellenschätzung auf 104µs kommst, könnte das "9k6" sein, und dann sollte (nach "Augenschätzung") die Präambel "0x10" sein ;)
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Hilfe beim reverse engineering: Wer kennt diese 1Wire-Fo

Beitrag von Bumbum »

Hallo xoexlepox,

das mit den 9600 Baud ist ein prima einwand. Es sind allerdings nur 50µs für ein Bit. Da kommen aber auch 19200 Baud in Frage.

Ich habe, wie von dir vorgeschlagen meine µC-Schaltung noch mal dran gehängt. Das Ergebnis ist exakt das gleiche. Naja fast, das Ausgangssignal sieht mit meiner Schaltung etwas genauer aus. Da wir jetzt von einer seriellen Datenübertragung ausgehen, habe ich mal schnell per Software den Ausgang invertiert. Dsa ist vielleicht wichtig zu wissen für die folgenden Messungen.

Der Abstand zwischen den Nadeln ist ca. 1090µs. Wenn ich von ca. 50µs für ein Bit ausgehe komme ich also auf 21 Bit??? Bei 19200 Baud sind das 1092 µs für ein Byte. Gibts eine Halb-Bit-Übertragung, die dieses Signal erklären könnte? Dann könnte man auf 1 Start-Bit, 8 Datenbits und 1,5 Stop-Bits kommen... (Kopfkratz ;) )

Ich habe mir dann noch die Mühe gemacht und das ganze Signal in der hohen Auflösung "durchgekurbelt". Es ist tatsächlich ein Datenstrom mit einer Länge von ca. 1,82 Sekunden! Ingsesamt bin ich auf 1670 Dieser Spitzen gekommen. Das kommt irgendwie alles hin: 1670 Byte * 1092µs = 1,823 Sekunden. Das wäre perfekt für eine serielle Übertragung, deren logische 1 als 1MHz-Signal codiert wird, und einfach 1668x 0xFF nach den ersten zwei Bytes übertragen wird.

Also habe ich mal versucht das erste "Byte" anzuschauen. Ich habe einfach mal 7 aufeinanderfolgende gezoomte Datenströme geknipst:
Daten.jpg
Die horziontalen Cursor-Linien würde den Zeitbereich ca. 1090µs anzeigen. Aber --> Kopfkratz, kein Muster zu erkennen. Auch wenn man davon ausgehen würde, dass sich das ganze einschwingt ist keine passende Start-Bedingung zu erkennen. Sieht jemand von euch was?

Viele Grüße,
Andreas
Benutzeravatar
xoexlepox
Beiträge: 4815
Registriert: So 11. Aug 2013, 19:28
Wohnort: So etwa in der Mitte

Re: Hilfe beim reverse engineering: Wer kennt diese 1Wire-Fo

Beitrag von xoexlepox »

Das Ergebnis ist exakt das gleiche. Naja fast, das Ausgangssignal sieht mit meiner Schaltung etwas genauer aus.
So habe ich das auch erwartet! Daß die digital erzeugten Flanken steiler und "sauberer" sind, als das analog aufbereitete Signal, ist auch klar... Wenn du nun noch die Kopplung des Kanals "CH2" von "AC" auf "DC" schaltest (oder den Tastkopf mal abgleichst?), dann sieht das Oszillogramm auch "richtig eckig" aus ;)
Gibts eine Halb-Bit-Übertragung, die dieses Signal erklären könnte?
Solche Verfahren gibt es. Aber die werden nur eingesetzt, wenn sowohl Takt, als auch Daten übertragen werden müssen, oder wenn es darum geht, daß das Digitalsignal "gleichstromfrei" sein soll. Aber danach sehen die Signale nicht aus.
Das wäre perfekt für eine serielle Übertragung, deren logische 1 als 1MHz-Signal codiert wird, und einfach 1668x 0xFF nach den ersten zwei Bytes übertragen wird.
Ja, irgend so etwas wird das wohl sein. Ich könnte mir auch vorstellen, daß der Datenstrom bei einem Kommunikationsbedarf begonnen wird, die vorliegenden (zwei/drei?) Bytes gesendet werden, und dann auf dem Bus bis zum "Timeout" leere Bytes übertragen werden, falls keine weitere Anforderung auftaucht. Denn 1.8s pro "Datentelegramm" kommt mir ziemlich lange vor für die Betätigung eines Tasters. Der Taster wird doch im "Normalbetrieb" bestimmt auch mal in kürzeren Intervallen betätigt...
Ich habe einfach mal 7 aufeinanderfolgende gezoomte Datenströme geknipst
Was mir bei den Oszillogrammen aufgefallen ist, ist ein sehr schmaler Impuls an der rechten Seite der Bilder 4, 5, und 7. Ist das wirklich ein Signal, oder könnte das auch ein Artefakt sein, welches von deiner "Demodulation" erzeugt wird? Auf den vorherigen Oszillogrammen ist mir ein solch schmaler Impuls noch nicht aufgefallen.

Nun wirst du wohl ein Programm schreiben müssen, welches die Bitfolgen (mit verschiedenen Abtastraten?) aufzeichnet, und dann versuchen, da irgendein Muster drin zu finden. Als "Trigger" würde ich "Erste Flanke nach ein paar Sekunden Inaktivität" empfehlen.
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Hilfe beim reverse engineering: Wer kennt diese 1Wire-Fo

Beitrag von Bumbum »

Hallo xoexlepox,

die schmalen Impulse habe ich immer wieder mal. Ich gehe da auch von einem Artefakt bei der Demodulation aus. Ganz sauber ist die leider nicht. Ich finde aber die Ursache nicht in meinem Code. Meine Vermutung ist, dass das alles doch etwas zu schnell für den AVR ist. Ich wollte z.B. das Ausgangssignal über INT0 an- und ausschalten, aber es hat mir ständig Interrupts "verschluckt". Deshalb das Polling für den Ausgang. Aber bei 19200 Baud sollte da die eine oder andere vergessene Welle nicht sehr schlimm sein.

Ich werde mich mal dran machen einen zweiten Controller zu suchen und eine Abtastung vorzunehmen. Ich habe ursprünglich überlegt das am PC zu machen über einen RS232-Wandler, aber ich finde leider keine Start- und Stop-Bits...

Viele Grüße,
Andreas
Antworten