Hallo und guten Abend, ich habe die LCD-Software von Peter Fleury im Memory-mapped-mode compiliert und auf einem AT90S8515 einwandfrei ans laufen bekommen. Da ich noch einen 74LS00 hier hatte und keinen 74HC00, hatte ich den genommen. Zum Verständnis ist die Schaltung von Peter Fleury im Anhang. Für eine eigene Schaltung benötige ich externen Ram, ein LCD-Display und einen Uhrenbaustein, die alle im Memory-mapped-mode betrieben werden. Damit kann ich aber die Schaltung von Peter Fleury nicht verwenden. Dafür wollte ich die Ansteuerung des Enable-Signals über andere Logik-Gatter erzeugen. Was natürlich nicht funktioniert hat. Um den Fehler näher einzugrenzen und schrittweise vorzugehen, habe ich in der Schaltung von Peter Fleury zwischen dem ersten und dem zweiten Gatter zwei Gatter des 74HCT04 hintereinander geschaltet. Nach meiner Logik hätte die Schaltung jetzt eigentlich funktionieren müssen, da der Ausgang des ersten Gates zweimal invertiert wird und somit wieder derselbe Pegel sein müsste, wie am Ausgang des Gates des 74LS00. Auch hier zum Verständnis die Schaltung im Anhang. Selbst das funktioniert schon nicht. Momentan fallen mir zwei Möglichkeiten als Fehler ein. Die erste wäre ein Timing-Problem. Da ich keinen Logikanalysator habe, kann ich das nicht feststellen. Die zweite Möglichkeit wäre, dass ich einen Fehler in der Schaltung gemacht habe. So bin ich mir z.B. nicht sicher, ob ich am Ausgang des 74HCT04 einen Pullup anschliessen muss. Der 74HCT04 selber funktioniert und scheint nicht defekt zu sein. Gebe ich auf den Eingang Hihg/Low erhalte ich das entsprechend negierte Ausgangssignal. Also am Baustein selber scheint es nicht zu liegen. Hat jemand einen Tipp für mich, wo der Fehler sein könnte bzw. was ich falsch mache. Vielen Dank
Andreas schrieb: > So bin ich mir z.B. nicht sicher, ob ich am Ausgang des 74HCT04 einen > Pullup anschliessen muss. Eigentlich nicht, der '04 ist kein Open Collector Typ. > Timing-Problem. Was passiert denn bei langsamem Takt bzw. statischer Ansteuerung?
Die beiden '04 sind überflüssig, die Schaltung ist dann exakt gleich wie die Vorgabe, nur das es eben LS statt HC ist. (Jetzt ist sie auch schon logisch identisch) Damit gibt's nur zwei Möglichkeiten: Timing oder Schaltungsfehler. Allerdings: HC hat CMOS-Push/Pull-Ausgänge und kann auch H mit Strom liefern, während LS nur 400µA bringt. Das könnte bedeuten das die L-H-Flanke verschliffen kommt, oder je nach Eingang nicht richtig H wird.
Icke ®. schrieb: > Was passiert denn bei langsamem Takt bzw. statischer Ansteuerung? Das könnte ich mal ausprobieren, wenn ich einen kleineren Quarz nehme. Komme aber erst am Wochenende dazu. Jens M. schrieb: > Die beiden '04 sind überflüssig, die Schaltung ist dann exakt gleich wie > die Vorgabe, nur das es eben LS statt HC ist. Das war mir klar. Das sollte auch nur dafür sein um den Fehler einzugrenzen. Hätte es mit den beiden 04ern funktioniert, hätte ich die Schaltung schrittweise erweitert. Also ein AND und Inverter dahinter. Da es aber so schon nicht funktioniert, brauche ich mir über weitere Tests erstmal keine Gedanken zu machen.
Mit welchem Takt wird das Speicherinterface des µC betrieben? Der HD44780 im Display ist nicht besonders schnell,für mehr als 2 MHz auf E ist der nicht ausgelegt. Das bedeutet aber auch, daß das externe Speicherinterface des µC nicht mit kürzerer Zykluszeit als 500 nsec betrieben werden sollte.
Andreas schrieb: > Hat jemand einen Tipp für mich, wo der Fehler sein könnte In deiner Vorgehensweise und mangelndem Werkzeug > Da ich keinen Logikanalysator habe, kann ich das nicht feststellen. Dann ändere das. Ein ausreichender Logikanalysator kostet keine 10€ und Weihnachten steht vor der Tür ;-)
Harald K. schrieb: > Mit welchem Takt wird das Speicherinterface des µC betrieben? 11MHz Harald K. schrieb: > Der HD44780 im Display ist nicht besonders schnell,für mehr als 2 MHz > auf E ist der nicht ausgelegt. Danke für die Info. Das war mir nicht bekannt. Dann war es bisher wohl Glück, dass es funktioniert hat. Ich werde das am Wochenende mit einem langsameren Takt testen.
Ich wollte nur nochmal kurz Rückmeldung geben. Es war tatsächlich ein Timingproblem. Da ich keinen kleineren Quarz hatte, habe ich einen anderen Atmega genommen ohne externen Quarz sondern den internen. Damit hat die Schaltung in meinem ersten Beitrag einwandfrei funktioniert. Meine eigene Erzeugung der Steuersignale funktioniert jetzt auch mit einem 74LS09. Ich musste an den Ausgängen nur noch Pullups hängen. Danach hat es einwandfrei funktioniert. Danke nochmal an alle für die Ratschläge und Hinweise. Rainer W. schrieb: > Ein ausreichender Logikanalysator kostet keine 10€ und > Weihnachten steht vor der Tür ;-) Hast du einen sinnvollen Tipp? Ich habe keinen vernünftigen in der Preisklasse gefunden. Bei eBay gab es nur was, aber da braucht man irgendeine Software eines anderen Herstellers für den PC. Die gibt es bei dem Hersteller aber nur in Zusammenhang mit dem eigenen Logikanalysator. Wenn Du also einen geeigneten kennst, beschenke ich mich zu Weihnachten selber.
Für die 8CH noname Dinger um 10€ kannst du das freie Programm Pulseview verwenden. Sie sind zu einem alten Modell von Saleae kompatibel.
Andreas schrieb: > Meine eigene Erzeugung der Steuersignale funktioniert jetzt auch mit > einem 74LS09. Ich musste an den Ausgängen nur noch Pullups hängen. 74LS09 hat Open Kollektor Ausgänge, d.h. von den Gattern kannst du keinerlei High-Pegel erwarten. Pullups machen die Sache langsam, d.h. schnelle Signale ohne Kontrolle per Oszi oder saubere Daten zur Last sind damit ein Glücksspiel ;-)
Sherlock 🕵🏽♂️ schrieb: > Pulseview Danke, die kannte ich nicht. Rainer W. schrieb: > 74LS09 hat Open Kollektor Ausgänge, d.h. von den Gattern kannst du > keinerlei High-Pegel erwarten. Danke für die Info. Was kann ich denn als Alternative nehmen? Ich brauche auf jeden Fall ein Und-Gatter. dass ich mit dem 74LS00 verknüpfen muss. Spontan fällt mir da nur ein weiteres 74LS00 ein, wo ich dann zwei Gatter hintereinander schalte. Rainer W. schrieb: > Pullups machen die Sache langsam, d.h. > schnelle Signale ohne Kontrolle per Oszi oder saubere Daten zur Last > sind damit ein Glücksspiel ;-) Als ich mit der Frequenz runtergegangen bin, hat es bisher funktioniert. Bei dem ganzen Projekt ist die Zeit nicht kritisch. Es wird eine Temperatur geregelt. Die Ausgabe auf dem Display braucht ebenfalls nicht so schnell zu sein. Wenn Du aber einen Vorschlag hast, wie ich das sauberer hinbekomme
Andreas schrieb: > Bei eBay gab es nur was, aber da braucht man > irgendeine Software eines anderen Herstellers für den PC. Die gibt es > bei dem Hersteller aber nur in Zusammenhang mit dem eigenen > Logikanalysator. Nö, die erstklassige Saleae-Software kann man auch herunterladen, ohne einen Logikanalysator von denen zu kaufen. https://www.saleae.com/de/pages/downloads Es gibt Leute, die meinen, daß es nicht "fair" ist, diese Software zu verwenden, wenn aber der Hersteller ernsthafte Probleme damit hätte, könnte er die Verwendung mit fremder Hardware auch unterbinden. Die Hardware, die man günstig als Nachbau bekommt, wird in dieser Form schon sehr lange nicht mehr als Original hergestellt. Und die einfachsten aktuellen Modelle kosten mehr als ein brauchbares Vierkanal-Speicheroszilloskop: https://www.saleae.com/de/products/saleae-logic-8 https://www.batronix.com/versand/oszilloskope/Rigol-DHO804.html
Andreas schrieb: > Bei eBay gab es nur was, aber da braucht man > irgendeine Software eines anderen Herstellers für den PC. Nein, man kann Sigrok verwenden, um den Logikanalyzer damit zu betreiben. Das ist frei benutzbare Open Source Software. Andreas schrieb: > Ich brauche auf jeden Fall ein Und-Gatter. dass ich mit dem 74LS00 > verknüpfen muss. Spontan fällt mir da nur ein weiteres 74LS00 ein, wo > ich dann zwei Gatter hintereinander schalte. Genau so, oder du hast noch ein 74LS04 Gatter frei und nimmst das, um das Ausgangssignal des NAND zu invertieren.
Andreas schrieb: > Sherlock 🕵🏽♂️ schrieb: >> Pulseview > Danke, die kannte ich nicht. > > Rainer W. schrieb: >> 74LS09 hat Open Kollektor Ausgänge, d.h. von den Gattern kannst du >> keinerlei High-Pegel erwarten. > Danke für die Info. Was kann ich denn als Alternative nehmen? Ich > brauche auf jeden Fall ein Und-Gatter. Nimm halt einen 74LS08. https://www.reichelt.de/de/de/shop/produkt/and-gate_2_element_4_75_5_25_v_dil-14-219262 Thomas
Thomas P. schrieb: > Nimm halt einen 74LS08. Wegen eines einzelnen AND-Gatters lohnt es nicht unbedingt, ein eigenes IC mit vier Gattern einzubauen. Da kommt es auf die insgesamt benötigte Anzahl von Gattern an, wie man die Logik zusammen baut und auf ICs aufteilt.
Danke erstmal für die ganzen Inputs. Ich werde mir nach Weihnachten nochmal Gedanken machen. Auch wegen Logikanalysator. Vorher komme ich sowieso nicht dazu. Für die Signale des Displays brauche ich noch ein Und-Gatter mehr als in der Schaltung von Peter Fleury. Aber ich brauche noch ein weiteres für den CS eines anderen Bausteins. Da fehlt mir auf dem 74LS00 ein Gatter. Vielleicht läuft es doch auf den 74LS08 mit 74HC04 hinaus. Ich muss sowieso bei Reichelt bestellen. Bei meinen Tests hatte ich den 74LS09 nur deshalb genommen, weil der in der Bastelkiste vorhanden war. Danke nochmal an alle und schöne Feiertage.
Andreas schrieb: > Da fehlt mir auf dem 74LS00 ein Gatter. > Vielleicht läuft es doch auf den 74LS08 mit 74HC04 hinaus. Warum stehst du eigentlich so auf die uralte 74LS-Serie? Aktuell ist die 74HC-Serie, oder wenn du Eingangsschwellen kompatibel zu LS benötigst, die 74HCT Serie. Falls dir Einzelgatter fehlen, gibt es auch noch die Single-Gate Bausteine (z.B. den 74LVC1G08GW mit einem UND-Gatter). Die sind allerdings nichts für Grobmotoriker.
:
Bearbeitet durch User
Rainer W. schrieb: > Warum stehst du eigentlich so auf die uralte 74LS-Serie? Drauf stehen tue ich nicht. Das hat einzig und allein damit zu tun, dass ich diverse Bauteile noch vorrätig habe und bevor ich neue kaufe, diese erst einmal nehme. Aber ich werde das Ganze nochmal überdenken. Rainer W. schrieb: > z.B. den 74LVC1G08GW Hab mir den gerade mal angesehen. Als ich mit der Elektronik angefangen hatte, gab es noch kein smd. Mir sind die Bausteine in den Fassungen lieber, die ich dann auswechseln kann, wenn einer defekt ist, statt an der Platine zu braten. Thomas P. schrieb: > Nimm halt einen 74LS08. Ich hab mir das gestern auf der Seite von reichelt angesehen und bin etwas irritiert. Dort steht, der wäre auch open collector. Dann hätte ich dasselbe Problem mit den Pullups wie beim 74LS09. In dem Datenblatt, was ich im Internet gefunden habe, konnte ich aber nicht sehen, dass der open collector hat.
Andreas schrieb: > > 74LS08 > > Ich hab mir das gestern auf der Seite von reichelt angesehen und bin > etwas irritiert. Dort steht, der wäre auch open collector. Dort steht auch "hex buffer". Das ist die Beschreibung des SN74LS07.
Andreas schrieb: > Ich hab mir das gestern auf der Seite von reichelt angesehen und bin > etwas irritiert. Dort steht, der wäre auch open collector. Dann hätte > ich dasselbe Problem mit den Pullups wie beim 74LS09. Ist nicht der erste und bestimmt auch nicht der letzte Fehler, der dort bei einer Artikelbeschreibung jemandem passiert, vor allem dann, wenn solche Aufgaben von Leuten erledigt werden, die mit der Materie gar nichts oder nur rudimentär zu tun haben. Ich hatte vor einiger Zeit einen µController dort gekauft, wo die SRAM-Kapazität falsch angegeben war. Und immer auch dran denken: die Signaldurchlaufzeiten der Gatter addieren sich zu einer Gesamtlaufzeit in der horizontalen – d.h. je mehr man davon in Reihe packt, desto verzögerter kommt es am Ausgang an; hängt natürlich auch noch davon ab, an welcher Stelle so einer Kette ein Steuersignal dann einfließt. Auch die Versorgungsspannung spielt dabei eine wichtige Rolle – je kleiner diese ist, desto langsamer erfolgt auch das Umschalten der Gatter. Ferner darf man bei CMOS-ICs nichts floaten lassen, bei LS ist das weniger problematisch, sofern man weiß, welchen Pegel dann so ein unbeschalteter Eingang hat, aber auch hier sollte man sich von Anfang an angewöhnen, alle unbenutzten Eingänge auf einen wohldefinierten Zustand zu bringen. Bei 16-20MHz CPU-Takt würde man mit solchen selbstkonstruierten langen Gatter-Ketten (egal ob LS oder HC) timingmäßig schon so langsam in die Bredouille kommen. Für solche Fälle nimmt man schnellere Serien.
:
Bearbeitet durch User
Clemens L. schrieb: > Dort steht auch "hex buffer". Das ist die Beschreibung des SN74LS07. Das hatte ich auch gesehen und mir deshalb das Datenblatt angesehen. Gregor J. schrieb: > Und immer auch dran denken: die Signaldurchlaufzeiten der Gatter > addieren sich zu einer Gesamtlaufzeit in der horizontalen – d.h. je mehr > man davon in Reihe packt, desto verzögerter kommt es am Ausgang an; Das hatte ich in Betracht gezogen. Aber ich glaube, dass der Grund, warum mein erster Schaltungsansatz nicht funktioniert hat, nicht direkt damit zusammen hingen. Ich denke, dass das Read Signal zu spät kam und das Display deshalb nicht funktioniert hat. Gregor J. schrieb: > Bei 16-20MHz CPU-Takt würde man mit solchen selbstkonstruierten langen > Gatter-Ketten (egal ob LS oder HC) timingmäßig schon so langsam in die > Bredouille kommen. Ich gehe mit der Frequenz des Controllers runter. Für Temperaturregelung und LCD-Display muss das eh nicht so schnell sein.
Andreas schrieb: > Das hatte ich in Betracht gezogen. Aber ich glaube, dass der Grund, > warum mein erster Schaltungsansatz nicht funktioniert hat, nicht direkt > damit zusammen hingen. Ich denke, dass das Read Signal zu spät kam und > das Display deshalb nicht funktioniert hat. Bei 4MHz als CPU-Takt und 5V als VCC dürfte das mit diesen 3-4 Gattern hintereinander kein Problem sein, Voraussetzung hierfür ist nur, dass es kombinatorisch in Ordnung ist – solche Dinge, die das Timing betreffen, kann man sich aber immer auch mit dem Oszilloskop anschauen – da muss man dann nicht grübeln oder vermuten, sondern sieht den Signalverlauf incl. Zeitdauer auf dem Bildschirm. So ein LCD auf Basis von HD44780 etc. muss vom Timinig her auch relativ langsam angesprochen werden – beim AT90S8515 kann man den Zugriff auf externen SRAM, was hier quasi dafür missbraucht wird, notfalls auch etwas langsamer machen (MCUCR).
:
Bearbeitet durch User
Rainer W. schrieb: > Wegen eines einzelnen AND-Gatters lohnt es nicht unbedingt, ein eigenes > IC mit vier Gattern einzubauen. dann nimmt man halt Transistoren in SMD oder TO92 https://www.electronics-tutorials.ws/de/logische/und-gatter.html
Joachim B. schrieb: > dann nimmt man halt Transistoren in SMD oder TO92 ... oder ein wired-AND aus zwei Dioden und einem Widerstand.
:
Bearbeitet durch User
Gregor J. schrieb: > beim AT90S8515 kann man den Zugriff auf externen SRAM, was hier quasi > dafür missbraucht wird, notfalls auch etwas langsamer machen (MCUCR). Ich weiss. Das SRW Bit war sowieso gesetzt und externer Ram kommt, neben dem Display, auch noch dran. Ich denke, es wird auf einen 75HC00 und einen 74HC08 hinauslaufen. Das muss ich mir aber nochmal in Ruhe aufzeichnen. Sollte aber dasselbe wie jetzt mit dem 74LS00 und 74LS09 sein. Nur dass dann die Pullups entfallen. Vielen Dank nochmal an alle für die Vorschläge.
Rainer W. schrieb: > ... oder ein wired-AND aus zwei Dioden und einem Widerstand. da war ich unsicher, aber du hast Recht, ich dachte dabei an Fan Out und Fan In und meinte es braucht Transistoren, aber braucht es ja nicht und ich dachte auch an wired-OR welches mir viel sympatischer ist. https://www.elektronik-kompendium.de/sites/praxis/bausatz_und_schaltung_diode.htm https://en.wikipedia.org/wiki/Wired_logic_connection
Andreas schrieb: > Vielen Dank nochmal an alle für die Vorschläge. Ich glaube, man kann hier bei diesem Konzept auch ganz leicht per Software einen Buskonflikt verursachen, wenn man R/W so durch Adressieren oder generell über PC0 (A8) so einstellt, dass z.B. eine Leseanforderung an das Display signalisiert wird und dieses bei Enable seine Ausgänge aktiviert, man aber gleichzeitig mit der CPU versehentlich einen Schreibzugriff macht (WR aktiv und auf dem Databus werden Daten bereitgestellt). Das ist nur so eine Vermutung beim flüchtigen Blick auf den Schaltplan aus dem ersten Beitrag. Das R/W-Signal des LCDs sollte normalerweise in Abhängigkeit von RD und WR gesteuert werden, damit es niemals versehentlich zu so einem Fall kommt.
:
Bearbeitet durch User
Hi Vielleicht solltest du mal die Originalschaltung vom STK200 Testen. MfG Spess
Gregor J. schrieb: > Das R/W-Signal des LCDs sollte normalerweise in Abhängigkeit von RD und > WR gesteuert werden, damit es niemals versehentlich zu so einem Fall > kommt. Das hatte ich in meinem ersten Ansatz gemacht. Da habe ich das read/write-Signal aus dem read-signal mit einem Inverter erzeugt. Gleichzeitig hatte ich den enable entsprechend der Schaltung von Peter fleury gemacht. Nur noch mit einem And dahinter, wo auf dem einen Eingang der A14 war. Das hatte aber nicht funktioniert. Mein Verdacht war, dass das read zu spät auf High ging. Der enable muss ein Strobe sein. Spess53 .. schrieb: > Vielleicht solltest du mal die Originalschaltung vom STK200 Testen. Danke. Die Schaltung hatte ich auch schon irgendwo im Internet gefunden. Da ich aber nicht verstanden habe, was der Kondensator und die Diode machen, habe ich das nicht getestet.
Andreas schrieb: > Das hatte ich in meinem ersten Ansatz gemacht. Da habe ich das > read/write-Signal aus dem read-signal mit einem Inverter erzeugt. > Gleichzeitig hatte ich den enable entsprechend der Schaltung von Peter > fleury gemacht. Nur noch mit einem And dahinter, wo auf dem einen > Eingang der A14 war. Das hatte aber nicht funktioniert. Mein Verdacht > war, dass das read zu spät auf High ging. Der enable muss ein Strobe > sein. Das besondere Problem hier besteht darin, dass die Bussysteme unterschiedlich und quasi nicht kompatibel sind – das LCD arbeitet mit einem Bus, den man z.B. vom 6800 und 6502 kennt, wo das R/W-Signal vor dem Enable (High-Aktiv), während des Enables und kurz danach stabil auf einem bestimmten Pegel bleiben muss, der Bus des AT90 ist dagegen für einen typischen SRAM gebaut/optimiert und hier wird der Strobe mit der RD- oder WR-Leitung vollführt, nachdem sich die Adresse und Daten bereits stabilisiert haben, was man z.B. von Z80-Prozessoren kennt, also eigentlich das totale Gegenteil von dem, was das Display erwartet; die Signale – incl. AS – sind bei solchen Bussen außerdem alle Low-Aktiv. Das Multiplexen selbst ist so ähnlich wie bei einem 8088/8086 mit transparentem Latch gelöst – das ist hier aber nur marginal von Bedeutung, viel gravierender ist der Unterschied mit den Hauptsteuerleitungen (R/W und E oder RD/WR und AS). Deswegen hat der Autor (oder wer auch immer sich das ausgedacht hat) zu dieser Hilfskrücke mit dem PC0-Portausgang (A8) für die R/W-Leitung des Displays gegriffen, denn das Signal wird bereits vor RD/WR stabil und bleibt auch bis zum Schluss so und damit wird auch das Enable passend dazu simuliert oder künstlich erzeugt, was der AT90 gar nicht hat. Es ist also gar nicht so einfach, diese Busse miteinander richtig zu verknüpfen. Nachteil dieser Lösung ist, dass man codemäßig durchaus einen Buskonflikt machen kann, wenn man sich beim Zugriff vertut.
:
Bearbeitet durch User
Hier noch ein paar Screenshots aus den Datenblättern, wo man das, was ich gesagt habe, sehen und nachvollziehen kann – sofern man überhaupt dazu in der Lage ist, solche Timing-Diagramme zu lesen und zu deuten.
:
Bearbeitet durch User
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.