Hallo, ich habe mir eine Schaltung aufgezeichnet die ich demnächst erstmal probeweise auf ein Steckbrett aufbauen will. Ich wollte dazu mal fragen ob jemand ne Idee hat wie ich die die 10 Auswahleingänge(Chip-Enable(C) und Output-Enable(OC)) mit möglichst wenig Leitungen des AVR's steuern kann. Da ich mit ASM noch nicht ganz so fit bin scheint mir diese parallele Version am einfachsten. CE, OE und WE am 28C64 scheint mir auch nicht ganz optimal zu sein da das dann immer gleichzeitig mit den Adressleitungen übermittelt wird. Sollte ich diese vielleicht auf den nächsten HCT legen? Einen HCT habe ich genau umgekehrt angeschloßen um die Daten in den AVR zu bekommen. Könnte man bestimmt weglassen, da wenn ich die HCT's hochomig schalte die Eingänge ja auch normal benutzen kann so aber ist es aber wie ein Zwischenspeicher. Wäre sehr dankbar wen mir jemand ein paar Verbesserungsvorschläge oder Tipps für meine (warscheinlich) oversized Schaltung geben kann. http://people.freenet.de/Thomasoly/Speicher_vs_AVR.png Auflösung ist etwas hoch, am besten speichern und mit dem Windows-Viewer anzeigen lassen der verkleinert es passend.
Hallo Thomas, willst Du damit ein Programmiergerät für EEPROMs bauen? Für eine Optimierung der Schaltung wäre es sinnvoll, den Zweck zu kennen. Ciao, Yagan
Als Anregung mal diese Variante für die Ausgänge. Keine Dekoder und dergleichen. Einfach bloss die 3 Bytes nacheinander durchtakten. Ich nehme an, dass es parallel sein muss. Sonst kommt ja die übliche HC164-er Kaskade in Frage, die wesentlich weniger Pins, aber deutlich mehr Zeit braucht.
Hallo, Yagan: Ne soll kein Programmierer werden. Wenn ich jetzt wieder den Einsatzzweck schreibe werd ich nur wieder ausgelacht. Ich sag mal soviel. Es werden in regelmäßigen kurzen Abständen(µSek-mSek) Daten ausgelesen und die Leseadresse ändert sich in Abhängigkeit von Werten die aus dem A/D-Teil stammen. Dieses Analogteil habe ich auch schon fertig. Jetzt geht es um das Einlesen der Daten aus dem Speicher und danach mache ich die Sache mit den Ausgangssignalen. A.K.: Ich verstehe deine Schaltung nicht ganz, da ja hier alle 3 Bausteine über gemeinsame CK und OC-Leitungen angesteuert werden. Ich verstehe diese Bausteine so, das sie einen Wert weitergeben der intern gespeichert wird und das sie einen Wert vom Eingang direkt zum Ausgang weiterleiten können ohne das der interne Wert geändert wird. Und auserdem habe ich dann doch nur 8 bit und diese nacheinander ich muss aber z.b. die 12 Adressleitungen gleichzeitig ansteuern können, was ich mit Schieberegistern machen könnte was dann aber doch etwas lange dauert als wenn ich jeweils 8 bits an einen Latch schicke, danach die nächsten Daten an den nächsten Schicke.... und am Ende alle Latchs Output enable schalte.
Ich war ein bischen faul beim zeichnen. Natürlich stehen alle 24 Ausgänge der 3 Register zur Verfügung (Register, also 574 - beim Latch 573 geht das so nicht). Denk dir das als 8 parallele 3-fach Schieberegister. Das wird wohl auch die schnellste Version sein, denn es müssen keine Auswahl-Leitungen programmiert werden: Daten für IC3 anlegen und takten. Daten für IC2 anlegen und takten. Daten für IC1 anlegen und takten. Fertig. Wenn der Speicher nicht hotplug-fähig sein muss, dann spricht m.E.nichts dagegen, dessen Datenbus direkt an den 8-bit-"Datenbus" vom µC anzuschliessen. Dann muss auch das OE der register nicht gesteuert werden, sondern kann fest auf 0 liegen. Nochmal nachgerechnet. Eigentlich braucht's nur 2x574. Für A0..A12, OE und WE. Dann noch CE separat an dem µC mit externem Pullup (definierter Zustand nach Reset!) und das war's. > Ich verstehe diese Bausteine so, das sie einen Wert weitergeben der > intern gespeichert wird Soweit stimmt's. > und das sie einen Wert vom Eingang direkt zum > Ausgang weiterleiten können ohne das der interne Wert geändert wird. Und hier stimmt's nicht mehr. Es wird immer der gespeicherte Wert weitergegeben (bzw bei OE=1 garnichts). Bei C=1 wird zusätzlich gespeichert.
Hallo, werden da jetzt getrennte taktleitungen benutzt? Oder wie bei einem einfachen Schieregister weitergereicht. Wenn du es mit vielleicht besser erklären kannst werde ich die Möglichkeit mal aufzeichnen. Für mich hört es sich jetzt so an das ich 24 mal takten muss und wenn ich ein einzelnes Bit ändern muss sind wieder 24 Takte fällig.
Natürlich solltest Du erst mal rauskriegen, wie der HC574 funktioniert. Schwierig sonst.
Hallo, glaube jetzt hab ichs verstanden, der erste 574 wird transparent geschaltet und die ersten 8 Takte setzen dann den rechten Chip, dann wird die Transparenz abgeschaltet und der linke Chip erhält seine Daten ohne diese an den rechten weiterzugeben. Aber womit wird das geschaltet? Der Chip hat doch nur die OC und CK. Aber ich favorisieren immer noch meine Lösung nur bräuchte ich dann wieder 10 Leitungen um die einzelnen Latches zu steuern.
Nee, das war's immer noch nicht. Obacht: Der 574 (Register) ist nicht der 573 (Latch). Ausserdem sind's nicht 8 Takte sondern pro Register einer. Die 57x sind keine Schieberegister, das 573 nicht und das 574 nicht. Schreiben sieht also so aus (Grundzustand PD6=1 PD7=0 DDRC=output): PORTC=A0..A7 PD7=1 PD7=0 nun ist das untere Adressbyte in IC2. PORTC=A8..A12,OE=1,WE=0 PD7=1 PD7=0 nun ist das untere Adressbyte in IC3 und das obere mitsamt OE/WE in IC2. PORTC=Daten PD6=0 PD6=1 Fertig. Lesen geht ähnlich, nur muss zum richtigen Zeitpunk DDRC umgeschaltet werden.
Nochmal deutlicher: In deiner Schaltung wird's beim Einschalten immer wieder mal ein zufälliges Byte zersägen. Da muss was rein, das CE von Anfang an auf 1 legt, sonst...
Hallo, da wird also das komplette Byte beim ersten Takt in IC2 eingelesen und beim 2ten Takt zu IC3 weitergeschoben, gleichzeitig holt sich IC2 die nächsten Daten. Ich muss dann also alle Register nacheinander beschreiben was etwas unpraktisch wäre wenn sich z.b. nur das untere Adressbyte ändert. Ich habe mir jetzt überlegt ich könnte bei meiner Lösung einen Latch hernehmen mit dem ich die ganzen OE der anderen Latches schalte dann bräuchte ich nur einen Steuerleitung vom AVR und die 8 Datenleitungen. Werde morgen nochmal einen Schaltplan dazu machen. Die ganzen CE kann ich ja auf high legen. Das habe ich schon auf meiner Steckplatine gesehen das sich das Latch beim einschalten Daten holt dies garnicht gibt so nei Wiederstandsreihe(10k) gegen Masse hat das aber in den Griff bekommen so das das Latch beim einschalten auch leer bleibt und selbst wenn spätestens wenn die ersten Daten kommen stimmts ja wieder.
Kannst auch getrennte Takte für die beiden Register verwenden (dann sind auch 573-er ok). Braucht halt einen Pin mehr.
Hallo, so habe deine Antwort garnicht gesehen gehabt, das wäre auch ne Lösung wenn ich jeden 573 einzeln takte. Werde mir das jetzt alles durch den Kopf gehen lassen und di ebenötigten Leitungen durchzählen.
Hallo, habe die Schaltung jetzt noch etwas verändert, brauche jetzt nur die 8 Datenleitungen und 2 zusätzliche Leitungen. Einfach den Link in der ersten Nachricht anklicken habe das Bild ausgetauscht.
Wie man mit einem Maximum an Aufwand und Laufzeit ... und immer noch das CE-Problem bei Reset hat.
Hallo, habe mir mal eine Ahndvoll 574er bestellt. So wie ichs gerade gezeichnet hab funktionierts ja eh nicht, habe da nen Fehler drin. CE Problem gibgs aber nicht da ich die Eingänge auf Masse ziehe, das Phänomen hatte ich nämlich beim Aufbau der Schaltung habe es aber damit in den Griff bekommen.
Also das OE der 754-er zu schalten: ganz ganz gefährlich ! Dein EEPROM floatet dann wild in der Gegend umher und wird warscheinlich seine Daten mit Müll überschreiben. Nochmal: Warum sparst Du Dir nicht diesen ganzen umständlichen Scheiß und nimmst nur nen AT24C64 (2 Drähte, 2 Widerstände). Willst Du aber trotzdem beim AT28C64 bleiben, dann unbedingt das Software-Data-Protection enablen ! Ansonsten hast Du nämlich wunderschönen Datenmüll beim Ein- oder Ausschalten (da Zustand der 574 undefiniert). Den Effekt kennen alle AVR-User, die den internen EEPROM verwenden, aber vergessen haben, den Brown-Out zu fusen. Peter
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.