Hallo Gemeinde! Frohe Ostern nebenbei... Habe ein Problem mit meiner Platine (Testaufbau). Hier ist ein 89C51cc03 verbaut, der mit einem simplen Adresslatch (74573) und einen CS Decoder (74154) eine 8Bit Eingabe mit 74541 sowie eine 8Bit Ausgabe mit 74374 und eine RTC 72421 verwalten soll. Das Problem ist, das ich die Uhr nicht vernünftig stellen/lesen kann und auch die Eingabe hat immer wieder mal unplausible Werte. Irgend etwas scheint es zu tun zu haben mit Busterminierung o.ä. Momentan ist nichts terminiert und es ergeben sich die Signale wie auf dem Bild => unschön. Mit 10K am Ende von AD0..7 gegen GND wird es ein wenig besser, aber noch nicht schön. Wenn ich 3,1K (mit POTI an AD0 gg. GND ermittelt) als Abschlussterminierung verwende, funktioniert die Schaltung. Die Flanken habe dann einen steilen Anstieg aber fallen ab, ähnlich wie eine e Funktion. Unter der Platine ist der Bus in Freiluftverdrahtung ausgeführt. Foto möchte ich lieber nicht zeigen. Habe den Busverlauf mal eingezeichnet. Ist hierbei als Abhilfe ein Serienwiderstand o.ä. erforderlich oder muss ich da nochmal neu verdrahten. Takt des CC03 ist 11,0592Mhz. Software kann ich wirklich ausschließen, die läuft in anderen professionell gerfertigten Platinen einwandfrei. IC´s sind alle ok! Was kann ich da machen.?? Ich kann allerdings erst nachher antworten! Carsten
Der Port 0 beim 8051 ist mit Open Drain Treibern realisiert. Wenn du per MOVX einen Buszugriff durchführst, treibt der µC bzw. der externe Chip den Bus nur für ein paar µs auf definierte Werte, dazwischen ist der Bus hochohmig. Während dieser hochohmigen Phase wird er von deinem 3,1kOhm Pulldown gegen GND gezogen. Der daraus folgende exponentielle Verlauf sieht zwar komisch aus, aber er hat mit deinem Timing-Problems nichts zu tun, weil zu dieser Zeit der Bus nicht benutzt wird. Nur während des einige µs dauernden Pulses mit steilen Flanken wird der Bus tatsächlich benutzt (d.h. hier wird jeweils ein MOVX durchgeführt). Wenn du ein Timing-Problem erkennen willst, musst du dir diesen Puls genauer ansehen (also Oszi auf 500ns/DIV und auf 1V/DIV und auf den steilen Puls getriggert). Da kann es dann schon sein, dass du unsaubere Flanken aufgrund von Reflektionen erkennst oder einen GND-Bump wegen gleichzeitig schaltender IOs oder dass du siehst, dass das externe IC zu langsam auf Lesebefehle reagiert. Der 89C51cc03 hat aber ein Register, um das Timing des externen Zugriffs zu entspannen, vielleicht klappt es dann auch mit der Freiluftverdrahtung: "Slow peripherals can be accessed by stretching the read and write cycles. This is done using the M0 bit in AUXR register. Setting this bit changes the width of the RD# and WR# signals from 3 to 15 CPU clock periods."
Terminiert habe ich noch nie was beim 8051. Schmeiß mal die standard TTL raus und ersetze sie durch CMOS (74HCxx). Die 8051 können nur eine TTL-Last (1,6mA), da wirds eng mit den alten Stromfressern. Und erstmal das langsamste Timing (maximale Waitzyklen, XTAL/12) für die externen Zugriffe einstellen. Wenn Du keinen externen RAM/ROM anschließt, sollten doch 256 IO-Adressen reichen, d.h. das Latch kann man sparen und nur mit DPH adresssieren.
Hallo! Sorry für die falschen Bildformate bzw. Größe, hatte in png gewandelt aber dann doch die falschen Bilder hochgeladen. Soooooo! Das war mal erfolgreich!!!! Achim S. schrieb: > Der 89C51cc03 hat aber ein Register, um das Timing des > externen Zugriffs zu entspannen, vielleicht klappt es dann auch mit der > Freiluftverdrahtung: => gemacht und siehe da, die Uhr läuft und lässt sich wieder stellen!!! Auch die sporadischen Werte der 8 Bit Eingabe sind "0". => Danke dafür, allerdings musste ich die Pull down Widerstände rausschmeißen sonst klappt es nicht! Soviel mit PIC und 8051 gemacht, das war aber neu! Achim S. schrieb: > Wenn du ein Timing-Problem erkennen willst, musst du dir diesen Puls > genauer ansehen (also Oszi auf 500ns/DIV und auf 1V/DIV und auf den > steilen Puls getriggert). => Habe ein Bild angehangen, erkenne da außer dem Bitwechsel nichts was großartig reflektiert! Oder sind das Reflektionen? Peter Dannegger schrieb: > Schmeiß mal die standard TTL raus und ersetze sie durch CMOS (74HCxx) => Bin mal eben im Keller! Peter Dannegger schrieb: > Und erstmal das langsamste Timing (maximale Waitzyklen, XTAL/12) für die > externen Zugriffe einstellen. => ist das gemeint, was ich da schon gemacht habe, oder noch was neues? Peter Dannegger schrieb: > Latch kann man sparen und nur mit DPH adresssieren => DPH ????? Danke Carsten
Peter Dannegger schrieb: > Schmeiß mal die standard TTL raus und ersetze sie durch CMOS (74HCxx). > Die 8051 können nur eine TTL-Last (1,6mA), da wirds eng mit den alten > Stromfressern. Es ist genau umgekehrt: was mit TTL und LS noch funktioniert hat, hört bei gleichem Aufbau mit HC auf zu funktionieren wegen der viel steileren Flanken. Gruss Reinhard
Hi! Habe die LS raus und die HC reingebaut! Funktioniert genauso aber das Signal sieht deutlich besser aus! Was meint Ihr? CL
Meine Erfahrungen sind genau andersrum. TTL schalten bei ~1,4V, LS schon bei 0,9 .. 1,1V, HC aber erst bei 2,5V. Die LS sind am störempfindlichsten, die HC dagehen kaum zu stören.
C. L. schrieb: >> Latch kann man sparen und nur mit DPH adresssieren > => DPH ????? Peter meint damit, dass du nur die oberen 8 Bit des DPTR (also DPH) zur Adressierung benutzt, und die unteren 8 Bit (die im Latch gespeichert werden müssten) ignorierst. C. L. schrieb: > => Habe ein Bild angehangen, erkenne da außer dem Bitwechsel nichts was > großartig reflektiert! Oder sind das Reflektionen? Nö, ich sehe auch nichts aufregendes. Ich verstehe zwar nicht wirklich, was am Ende den Nadelpuls nach unten erzeugt. Aber wenn die Schaltung zuverlässig läuft, dann ist die Signalqualität offenbar gut genug ;-) C. L. schrieb: > Habe die LS raus und die HC reingebaut! Funktioniert genauso aber das > Signal sieht deutlich besser aus! Würde ich auch machen. Ich verstehe aber nicht wirklich, wo du hier eine bessere Signalqualität siehst. Wie schon heute Mittag gesagt: wenn der Bus von keinem IC getrieben wird, kann die Spannung sonstwo hin driften. Interessant ist nur das Verhalten der Signale, wenn der Bus wirklich benutzt wird. Dass die Spannung weniger rauscht liegt wahrscheinlich eher daran, dass du die Messung von 17:01 Uhr erst im Nachhinein auf 1V/DIV aufgezoomt hast, oder?
HeyHo! Achim S. schrieb: > DPTR (also DPH) => Achso, Klar hätte man auch so machen können, hätte auch gereicht, wollte aber den 154er einsezten und 15 Adressen zur Verfügung haben. Hätte auch mit den letzten 3 Adressen einen 138er nehmen können. Viele Wege führen nach ROM... Achim S. schrieb: > Dass die Spannung weniger rauscht liegt wahrscheinlich > eher daran, dass du die Messung von 17:01 Uhr erst im Nachhinein auf > 1V/DIV aufgezoomt hast, oder? => Ohhh, das habe ich (glaube ich) gemacht ohne ans rauschen zu denken, dann bitte nicht so ernst nehmen. Zumindest erkennt man jetzt ein Datenwort und keine Treppen. Ich werde mal mit der Schaltung experimentieren und sehen ob es das schon war. Geht ja in die richtige Richtung. Eingentlich ärgerlich, habe damit Tage vergäudet.! Hmmmm! Danke an Euch!! Carsten
Peter Dannegger schrieb: > Die LS sind am störempfindlichsten, die HC dagehen kaum zu stören. Das ist die passive Seite, und setzt voraus dass durchgehend HC verwendet wird. Meine Erfahrungen beziehen sich auf die aktive Seite: LS245 gegen HCT 245 usw. als Treiber für eine Matrix aus Memory Devices. Da war ich nach Umstellung auf HCT gezwungen, 100 Ohm Source-Widerstände an allen Leitungen (Adresse, Daten, RD, WR) einzusetzen (direkt an HCT245 usw.). Gruss Reinhard
Peter Dannegger schrieb: > Terminiert habe ich noch nie was beim 8051. Ach, das ist doch fast noch Gleichstrom da an einem 8051-Bus. Manchmal sah ich Widerstands-Arrays 10k oder 4,7k an den Busleitungen als Pullup direkt neben dem µC, ist aber laut den Manuals auch nicht nötig. Vielleicht braucht man sie noch für uraltes NMOS-RAM bzw. EPROM. Terminieren, bei der niedrigen Busfrequenz, sah ich auch nie als dringend notwendig an. Die Wellenlängen sind doch meilenweit von Leiterbahnlängen entfernt. Wenn schon terminieren, dann gleich mit einem Busleitungstreiber. Ich selbst betrieb den Bus an Port 0 aber auch mit allen Arten von Bausteintechnologien, von Standard-TTL über LS und ALS bis zu HC, HCT, AC, ACT am Adreßlatch. EPROM und RAM haben meistens ohnehin CMOS-Ausgänge. Am alten Standard-8051 hingen ja am Bus wenigstens immer die Datenleitungen von EPROM und RAM noch parallel mit dran, also mit dem Adreßlatch-Input zusammen 3 Leitungen, hatte da niemals Störungen. Auch nicht an einem 8085, wo noch viel mehr parallel am Bus hing. OK, der lief auch nur mit Gleichstrom 2MHz, Busfrequenz noch sehr viel niedriger. In Wahrheit sind die Treiber im 8051 aber äußerst leistungsfähig, mehr als man glaubt, auch wenn sie nur auf einen TTL-Fanout spezifiziert sind. Hatte kürzlich aus Faulheit mal eine LED ohne Vorwiderstand an einem Pin, das waren schon gut 100mA, zog die Gesamtversorgung in die Knie. Der Pin schaffte also noch knapp 3V an die gelbe LED, die schon leicht orange leuchtete. Wenn man seine Bauteile wertschätzt, sollte man das aber bleiben lassen. Hier hatte ich aber einen ollen Siemens-80515 noch in NMOS dran, der sowieso ausgetauscht und nie mehr verwendet werden sollte, ein wahrer Stromfresser und Heizer.
Wilhelm Ferkes schrieb: > Manchmal sah ich Widerstands-Arrays 10k oder 4,7k an den Busleitungen Das macht man, damit die Pins nicht floaten zwischen den IO-Zugriffen. Die HC-ICs könnten sonst mehr Strom ziehen. Man kann aber auch nach jedem MOVX ein "MOV P0, #0" einfügen.
Peter Dannegger schrieb: > Wilhelm Ferkes schrieb: >> Manchmal sah ich Widerstands-Arrays 10k oder 4,7k an den Busleitungen > > Das macht man, damit die Pins nicht floaten zwischen den IO-Zugriffen. > Die HC-ICs könnten sonst mehr Strom ziehen. > Man kann aber auch nach jedem MOVX ein "MOV P0, #0" einfügen. Ich hätte da jetzt auch auf ältere NMOS-Peripheriebausteine getippt. Bei alten 8085-Schaltungen sah man die Pullup-Arrays zu Hauf. Normalerweise passiert da aber auch kaum was. Sicher kann man einen Dummy einfügen, wenigstens zum Test. Ich hielt mich zur Bausteinverwendung immer an die Busdiagramme in den Datenblättern, und das ging immer gut. Aber sind denn HC-Bausteine nicht noch kapazitive Lasten, und bspw. LS-TTL nicht so sehr? Das müßte ich mal konkret nach schauen. Aktuell habe ich hier einen 80C517A im Vollausbau liegen. Da sind auf jeden Fall 4 Speicherbausteine parallel am Bus, nämlich je zwei EPROM 27C256 und zwei RAM 62256. Die Busleitungen bis zum letzten Stein sind knapp über 10cm lang. Da stört absolut nichts, noch nicht mal bei Quarz 18MHz. Die Schaltung wurde oft verkauft und ist erprobt.
>Aber sind denn HC-Bausteine nicht noch kapazitive Lasten, und bspw. >LS-TTL nicht so sehr? alle ca 5..10pF (neuere etwas weniger, ca 3pF) . Bereits ein leerer Pin (ohne el.Anschluss dahinter) (bsp Steckverbinder) hat schon ca 4pF! (Was die Backplane bremst) Auch bei niedriger (8051-) Busfrequenz könnte sich, bei Glitch oder Fehler auf bsp.weise \WR, ein Fehler ins XRAM einschleichen.
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.