Forum: Mikrocontroller und Digitale Elektronik LCD-Display Konverter - Atmega zu langsam?


von Ralf M. (eton)


Lesenswert?

Hallo,

ich möchte für meinen Youngtimer den Tacho umbauen. Der wird mit einem 
MC68 betrieben und zeigt mit einem HD44780-kompatiblem 2x16 LCD Display 
die Gesamtmeilen und die Trip-Meilen an. Ich möchte zwischen Tacho und 
Display einen Atmega hängen und die Anzeige einlesen, konvertieren und 
Kilometer statt Meilen anzeigen. Ist ein rein privates Projekt und ich 
will keinesfalls ein Offset von den Kilometern abziehen.

Die Ansteuerung des LCD vom MC68 erfolgt mit 8-bit.
Ich habe eine Atmega32 und programmiere in C. Die Anschlusse 
MC68->Atmega sind: RS -> PD6, RW -> PD7, E -> PD2/INT0, DB0 -> PC0, DB1 
-> PC1, ..., DB6 -> PC6, DB7 -> PC7,

Mein Problem ist, dass ich keine sinnvollen Daten vom MC68 erfassen 
kann. Mein Verdacht ist, das Auslesen zu lange dauert. Scheinbar liegen 
die Daten vom MC68 nur für eine ganz kurze Zeit nach E Flankenwechsel 
H->L an. Mit der E-Leitung löse ich einen Interrupt aus. PIND (RS, RW) 
kann ich noch einlesen, bis ich PINC einlese, haben sich die Daten aber 
bereits geändert. Selbst wenn ich die steigende Flanke von E für den 
Interrupt verwende, ist der Atmega offensichtlich zu langsam.
Wenn ich zuerst PINC einlese, stimmen zwar die Daten, dann bekomme ich 
für RS/RW keine sinnvollen Werte mehr.
Gibt es eine Möglichkeit das Einlesen zu Beschleunigen oder PINC und 
PIND "einzufrieren", bis ich sie ausgelesen habe? Oder gibt es eine 
Hardware, die durch E ausgelöst die Daten speichert, bis ich sie 
ausgelesen habe?

Viele Grüße

Ralf

von Novice (Gast)


Lesenswert?

ISR in Assembler implementieren

von A.H. (Gast)


Lesenswert?

Beim Schreiben ist im Datenblatt des HD44780U spezifiziert, dass nach 
der fallenden E-Flanke min. 10ns lang noch die Daten anliegen müssen 
(t_H).

Wenn der Atmega mit 16MHz läuft, dann dauert einer der schnellen 
Befehle 62.5ns. Und du wirst auch in Assembler mehrere benötigen.

Wenn also die Software den HD44780 tatsächlich am Timing-Limit betreiben 
sollten, dann ist der Atmega zu langsam. Oder ich habe mich irgendwo in 
den Größenordnungen verhauen ;-)

von g457 (Gast)


Lesenswert?

Latches vor die Eingänge hängen.

von Frank M. (frank_m35)


Lesenswert?

Die PICs von Microchip besitzen einen Parallel Master Mode (bzw. den 
EPMP) der auch im Slave Mode betrieben werden kann:
http://ww1.microchip.com/downloads/en/DeviceDoc/39713b.pdf


Vielleicht kannst du es dadurch realisieren.

von Max D. (max_d)


Lesenswert?

Er braucht 2 In() Befehle, das sollte wenn er mit C noch das erste byte 
kriegt mit assembler eigtl. drinnen sein......

von Ralf M. (eton)


Lesenswert?

Hallo,

danke für die Antworten. Das mit den Latches hört sich sinnvoll an. 
Schaden kann es auf keinen Fall.

Viele Grüße

Ralf

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.