Forum: Mikrocontroller und Digitale Elektronik S1D13505 Protokoll Interpreter


von Matthias (Gast)


Lesenswert?

Hallo,

ich habe wieder mal mit einem interessanten Phänomen zu kämpfen. Ich 
habe ein älteres Gerät bei dem das Display nur noch ein 
Schachbrettmuster zeigt. Der Displaycontroller ist vom eigentlichen 
Display abgesetzt und ist ein S1D13505.
Jetzt dachte ich mir als kleine Spielerei, ein neues Display zu verbauen 
und als Protokollübersetzer einen ATmega164 werkeln zu lassen. Als 
erstes wollte ich mir die Kommandos über die Serielle rausdumpen lassen.
Als das nicht geklappt hat, habe ich mit dem Oszi das CS zum 
Displaycontroller angesehen. Ohne ATmega sieht man mehrere Kommandos, 
bei denen das CS für 40µs Low wird. Mit ATmega ändert sich weder der 
Pegel noch die Flankensteilheit. Allerdings kommen auf dem CS nur noch 
ein paar Pulse, die für ca. 5µs auf Low gehen.
Es ist gerade so, als wenn der Hauptrechner etwas zurückliest und 
entsprechend reagiert. Das sollte aber in der Init-Sequenz aber 
eigentlich nicht sein.
Hat jemand eine Idee?

von Stefan F. (Gast)


Lesenswert?

Matthias schrieb:
> Mit ATmega ändert sich weder der Pegel noch die Flankensteilheit.
> Allerdings (ändert sich etwas)

Was genau ändert sich denn zuerst. Offenbar beeinflusst dein ATmega oder 
deine Schaltung die Kommunikation. Damit fängt es an, untersuche das.

Schaltplan, Quelltext und Foots vom Aufbau könnten hilfreich sein, damit 
wir über dein Gerät reden, nicht über etwas anderes das wir im Kopf 
ausdenken.

von Matthias (Gast)


Angehängte Dateien:

Lesenswert?

Anbei Schaltplan und S1D1305 als pdf.

von Stefan F. (Gast)


Lesenswert?

Ist das das Gerät, an welches du das neue andere Display anschließen 
willst?

Wo ist jetzt dein ATmega164 als Protokollübersetzer eingeschleift?

von Matthias (Gast)


Lesenswert?

Der Schaltplan zeigt den Übersetzer. Es ist zwar ein ATmega16 
eingezeichnet, aber der war gerade nicht verfügbar. Der 164 ist 
pinkompatibel.
Von dem Gerät habe ich keinen Schaltplan.
Am S1D13505 ist ein kurzes (10cm) Flachbandkabel angelötet. Von da gehts 
über einen Micromatch auf die ATmega-Platine.

von Stefan F. (Gast)


Lesenswert?

Deine Level-Shifter können bidirektional arbeiten. Das heisst, der AVR 
kann die bestehenden Signale stören, wenn nicht ausschließlich nur 
liest.

Jetzt kommt es also auf dein Programm an, ob es stört.

von Matthias (Gast)


Angehängte Dateien:

Lesenswert?

Hier noch ein Foto vom Aufbau.

von Matthias (Gast)


Lesenswert?

Die Levelshifter gehen zum neuen Display. Der Atmega hängt direkt am 
S1D13505.

von Stefan F. (Gast)


Lesenswert?

Hast du bemerkt dass der Level Shifter an jeder Leitung zwei interne 
Pull-Up Widerstände mit ca. 40kΩ hat, welche die alte Schaltung 
belasten?

Außerdem wird die Kapazität deines Flachkabels und deiner Platine bis 
hin zum AVR auch die alte Platine belasten.

Vielleicht beeinflusst das die alte Schaltung zu sehr. Was der AVR mit 
den Leitungen anstellt kann ich mangels Quelltext gar nicht einschätzen.

Wahrscheinlich würde das ganze ohne diese Levelshifter weniger 
Problematisch sein. Der AVR akzeptiert die 3,3V auch ohne Pegelwandler 
als gültige HIGH Pegel.

Zum Foto: Sehe ich richtig, dass die Pegelwandler noch gar nicht 
bestückt sind? Wenn ja, dann hängen da also nur eine Menge Leitungen an 
dem Display, die nirgendwo enden. Da fällt mir ein, dass offene 
Leitungen Reflexionen zurück werfen und dadurch Signale stören können.

von Matthias (Gast)


Lesenswert?

Um vielleicht ein Missverständnis auszuschließen - die Signale werden am 
S1D13505 abgegriffen. Der Hauptrechner redet spricht also dieses 
Protokoll.
Der ATmega soll es auf das Protokoll des neuen Display-Controllers 
übersetzen.
Die Pullups hatte ich auch im Verdacht. Ich hab sie sicherheitshalber im 
MCUCR global ausgeschaltet.
Die Leitungslänge sollte normalerweise die Flankensteilheit verringern. 
Allerdings ist die Signalqualität die Gleiche. Der Hauptrechner zieht 
wie gesagt ohne ATmega die CS-Leitung für 40µs auf Low, mit nur für ca. 
5µs.

von Stefan F. (Gast)


Lesenswert?

Matthias schrieb:
> Die Pullups hatte ich auch im Verdacht. Ich hab sie sicherheitshalber im
> MCUCR global ausgeschaltet.

Ich rede von den Pull-Ups in den Pegelwandlern!

> Die Leitungslänge sollte normalerweise die Flankensteilheit verringern.

Sollte? Und was ist mit Reflexionen? SO etwas kann man nur mit einem 
Oszilloskop kontrollieren, dazu muss man aber auch die Anforderungen der 
alten Schaltung an die Signale kennen, sonst kann man das Messergebnis 
nicht bewerten.

> Allerdings ist die Signalqualität die Gleiche.

Das ist technisch unmöglich. Kabel ohne Auswirkung gibt es nicht.

von Matthias (Gast)


Lesenswert?

Der Atmega hängt direkt am S1D13505. Die Levelshifter und das Display 
sind noch nicht verbaut. Der ATmega sollte zunächst nur die Kommandos 
rausplotten, die zum S1D13505 gehen.

von Stefan F. (Gast)


Lesenswert?

Matthias schrieb:
> Der Atmega hängt direkt am S1D13505

Wärst du dann bitte mal so freundlich, den richtigen Schaltplan zu 
zeigen anstatt mich in die Irre zu führen?

Und schau dir mal ganz genau die Flanken der Signale an. Wenn das Kabel 
oder der AVR stört, dann wird sich das vermutlich im Bereich von einigen 
zig Nanosekunden um die Flanken herum abspielen.

von Matthias (Gast)


Lesenswert?

Das Interface zum S1D13505 ist im Schaltplan J2.

von Stefan F. (Gast)


Lesenswert?

Matthias schrieb:
> Das Interface zum S1D13505 ist im Schaltplan J2.

Ja das ist mir inzwischen auch klar geworden.

Wie gesagt, überprüfe die Flanken der Signale mit einem Oszilloskop.

Und wenn du Hilfe zu Programm haben willst, dann zeige es.

von Matthias (Gast)


Angehängte Dateien:

Lesenswert?

Hier die Suftware als zip.

von Matthias (Gast)


Lesenswert?

Nicht von dem LUFA-Projekt verwirren lassen, das liegt da nur so rum.

von Stefan F. (Gast)


Lesenswert?

Matthias schrieb:
> Hier die Suftware als zip.
> target        ATTiny13A
?????

Die relevanten I/O Pins sind alle auf INPUT ohne PULL-UP konfiguriert, 
so Weit gut.

Was für ein Timing hat die Datenübertragung zum Display im 
funktionierenden Fall? Wenn sie nicht extrem langsam ist, sehe ich keine 
Chance, dass deine ISR samt serieller Ausgabe so funktionieren kann.

Dennoch sollte sie die Kommunikation des Displays nicht stören. Das wird 
wohl noch ein Hardwareproblem vorliegen. Womöglich sind dire Kurzen 
Leitungen schon das Problem.

Stefan ⛄ F. schrieb:
> Wie (mehrfach) gesagt, überprüfe die Flanken der Signale mit einem Oszilloskop.

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.