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
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 ;-)
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.
Er braucht 2 In() Befehle, das sollte wenn er mit C noch das erste byte kriegt mit assembler eigtl. drinnen sein......
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.