Forum: Mikrocontroller und Digitale Elektronik Protokoll der seriellen Schnittstelle einer Zündung


von Christoph (Gast)


Lesenswert?

Ich habe eine programmierbare elektronische Zündung von 123ignition und 
möchte gerne mit einem Mikrocontroller drangehen. Ein Laptop ist doch 
eher unhandlich und auch die Programmierung könnte ich mir anders 
vorstellen.

Leider geschieht etwas auf der Leitung, was ich nicht verstehe, daher 
meine Bitte um Hilfe. Vielleicht verstehe ich auch nur das Protokoll 
nicht.

Erstmal eine Beschreibung der Ausgangssituation:
Die Zündung verwendet wird über ein USB-Kabel an den PC angeschlossen. 
Wenn der Verteiler sich nicht dreht, kann sie programmiert werden, sonst 
werden verschiedene Werte angezeigt: Drehzahl, Frühverstellung, 
Unterdruck, Temperatur und Strom durch die Zündspule. Die 
Drehzahlanzeige beginnt bei 500 U/min.
Die Zündung basiert auf einem Mega8 und verwendet für die Kommunikation 
einen FTDI-Chip, der eine serielle Schnittstelle emuliert. Man kann die 
Schnittstelle nicht auswählen, das Programm erkennt die Zündung selbst.

Ich habe nun folgendes untersucht:
Einstellung des Treibers: 9600 Baud, 8 Datenbits, 1 Stopbit, Parity 
none, kein Handshake.
Frühverstellung der Zündung: 0 Grad bei allen Drehzahlen.
Ich habe meine Bohrmaschine angeschlossen die mit ca. 1200 U/min dreht, 
die Anzeige geht dann brav auf 2400 (der Verteiler dreht mit halber 
Drehzahl)

Mit einem Terminalprogramm habe ich nun geschaut was an Daten von der 
Zündung kommt. Es scheint für jeden der oben genannten Werte ein Byte 
gesendet zu werden und ein Byte (Seitenvorschub) möglicherweise als 
Trenner. Ich habe das ermittelt, indem ich beim Originalprogramm bei 
gaaaanz langsamer Drehzahl geschaut habe, welche Anzeige muckt.

Hier die erhaltenen Werte:
langsam:
 43   0c   67   86   82
 63   43   0c   67   86   82
 63   43   0c   67   86   82
 63   43   0c   67   86   82
 63   43   0c   67   86   82
 63   43   0c   67   86

mittel (Anzeige ca. 1500 U/min):
 63   53   0c   67   86   82
 63   53   0c   67   86   82
 63   53   0c   67   86   82

schnell (Anzeige ca. 2300 U/min):
 63   53   0c   67   86   82
 63   53   0c   67   86   82
 63   43   0c   67   86   82
 63   53   0c   67   86   82
 63   43   0c   67   86   82
 63   53   0c   67   86   82
 63   53   0c   67   86   82

Der einzige Wert der sich ändert steht in der 2. Spalte, allerdings 
ändert sich das low Nibble nie. Die Vertauschung der beiden Nibbles 
bringts auch nicht, mir fehlen dann die Zwischenwerte.

Man kann bei der Zündung ein Log einschalten, das liefert bei gleicher 
Situation folgende Daten:

langsam:
410 00B 100 264 234 500
410 00B 100 264 234 500
410 00B 100 264 234 500

mittel:
410 01C 100 264 234 500
410 01D 100 264 234 500
410 01C 100 264 234 500

schnell:
410 02F 100 264 234 500
410 02F 100 264 234 500
410 02F 100 264 234 500
410 02F 100 264 234 500

Die erste Stelle scheint eine Kennung zu sein, worum es sich handelt, 
dann folgt ein Hex-Wert.
Die 2. Spalte ist hier schön nach Drehzahl differenziert.

Ich habe nun gedacht, dass ich vielleicht nur das Protokoll nicht 
verstehe, also habe ich einen MC dazwischengeschaltet, der auf der einen 
Seite einen USB-Host simuliert und auf der anderen Seite die serielle 
Schnittstelle. Damit das Original-Programm das als Zündung erkennt, habe 
ich sogar dieselbe VID, PID und Seriennummer vorgegaukelt (und ich habe 
gelernt, dass ein Rechner abstürzen kann, wenn man etwas Schlechtes in 
einen USB-Port steckt).
Zunächst habe ich einfach die Daten an den PC gesendet, die ich vorher 
selbst von der Zündung empfangen habe. Ergebnis: keine Regung der 
Anzeigen, nicht darstellbare Zeichen im Log.
Dann habe ich vermutet, dass das Originalprogramm vielleicht antworten 
muss oder erst mal zum anständigen Senden auffordert, also habe ich die 
Daten in beiden Richtungen weitergeroutet und auf einem LCD-Display 
angezeigt:
Im Betrieb sendet der Rechner nichts, sondern empfängt nur die Daten der 
Zündung. Im Stand sendet er wiederholt 0xFE und scheint auf eine Antwort 
der Zündung zu warten, die nicht kommt.

Ich bin ratlos und brauche Hilfe! Was mache ich beim Auslesen der 
Information falsch? Ich habe auch schon andere Baud-Raten etc. probiert 
- ohne Erfolg. Der Hersteller antortet nicht direkt und antwortet auf 
meine Anfrage im Forum leider nicht.

Ich muss dazu sagen, dass ich nicht der MC-Guru bin. Der geschilderte 
Versuchsaufbau ist mir schon ordentlich schwer gefallen. Ich hoffe 
daher, dass ich irgendwas übersehen habe.
Christoph

von Simsy Mone (Gast)


Lesenswert?

Christoph schrieb:
> Ich muss dazu sagen, dass ich nicht der MC-Guru bin.

Ne, scheinbar freier Mitarbeiter bei der Bravo der für
"Zeichen pro Seite" bezahlt wird

von Christoph (Gast)


Lesenswert?

Du hast natürlich recht, ist schon lang. Ich wollte halt gleich alle 
Fakten auf den Tisch legen und nicht erst auf Rückfrage. Wenn's noch 
mehr Leute nervt, mach ich's in Zukunft anders. Den Verweis zur Bravo 
hab ich allerdings nicht verstanden; war aber bestimmt lustig.
Ansonsten bin ich auch an Hilfe zu meinem Problem interessiert.

von fonsana (Gast)


Lesenswert?

Zuallererst ist wahrscheinlich das 0c das Zeilenende, also nicht:

Christoph schrieb:
> 63   53   0c   67   86   82
>  63   53   0c   67   86   82
>  63   43   0c   67   86   82

sondern
67 86 82 63 53 0c
67 86 82 63 43 0c
67 86 82 63 53 0c
67 86 82 63 53 0c

fonsana

von Martin I. (martin_i)


Lesenswert?

Wurde das Rätsel gelöst?
Ich stehe vor dem genau gleichen Problem und durchschaue das Protokoll 
nicht.

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.