Forum: Mikrocontroller und Digitale Elektronik 74HCT573 Latch am AVR


von Dirk Schlage (Gast)


Angehängte Dateien:

Lesenswert?

Hallo
Ich versuche 4 D-Latches 74HCT573 an einem AT90LS4433 bei 5V und 4MHz
zu betreiben. Programmierung erfolgt in Assembler.
PC0..PC3 sind meine LE-Eingänge am jeweiligen Latch-Baustein, die ich
auf LOW ziehe um die Daten zu Puffern? Richtig? Muss Port C noch mehr
vorbereitet werden???
PortD sind die Daten.

Die OE_-Eingänge sind bei mir auf Masse gelegt. Ausgänge immer aktiv.

Wie gesagt manchmal scheinen Daten übernommen zu werden. Gerade habe
ich noch was gedreht (Einmal 0xaa an PortD) und jetzt liegen an Eingang
und Ausgang von einem Latch unterschiedliche Daten an, ist ja ein Zweck
von dem Ding. (Nur irgendwie nicht regelmässig.)

Das ganze scheint ein bisschen zu funktionieren. (Eher weniger...)

Ich weiss, ich weiss, ich weiss... Keine genaue Beschreibung des
Fehlers....

Vieleicht hat jemand so allgemeine Tipps, wie "Nach dem Hochlaufen
sind die Ports noch kalt und müssen erst 5000 Umdrehungen im Leerlauf
haben", oder so.

Danke
    Dirk

von günter (Gast)


Lesenswert?

Hallo Dirk

die 74573er sind manchmal sehr launisch...
(auch gegen äußere Einflüsse)

bei mir half u.a pull-down-R bzw. pull-up-R an den
Ausgängen (der 573er), damit diese nicht mehr 'flattern'

Vielleicht hilfts.

Günter

von Jens Renner (Gast)


Lesenswert?

Vielleicht helfen Dir meine Routinen für den 573.
Funktionieren bei mir einwandfrei bei SRAM- und IDE-Zugriff und 8MHz
Takt (gibt noch keine Timing-Probleme in dem Bereich).
Das zu latchende Byte muss natürlich vor dem Aufruf der Schreibroutine
anliegen.

;----- BUS573_WRITE ------------------------------------------------
bus573_write:
  ; store byte
  sbi BUS573, BUS573_PIN_LE ; LE high
  cbi BUS573, BUS573_PIN_LE ; LE high-low transition. latch data
  ; stored data to output
  cbi BUS573, BUS573_PIN_OE ; -OE low (enable outputs)
ret

;----- BUS573_HIGHZ ------------------------------------------------
bus573_highz:
  cbi BUS573, BUS573_PIN_LE
  sbi BUS573, BUS573_PIN_OE
ret

von thkais (Gast)


Lesenswert?

@Dirk: Wie man im Code-Beispiel von Jens schon sieht, ist nicht der
PEGEL sondern die FLANKE für die Datenübernahme beim 573 wichtig.
Guckst Du Datenblatt, da steht das drin.

von crazy horse (Gast)


Lesenswert?

guckst du falsch...
der 573er ist zustandsgesteuert  74HC/HCT573; Octal D-type transparent
latch, flankengesteuert ist der 374/574.
Ob das Ding jetzt mit H- oder L-Pegel verriegelt wird, weiss ich auch
nicht aus dem Kopf, nachschauen.
Prinzipiell: Daten anlegen, enable ansteuern, enable freigeben.
Irgendwann hab ich mal was damit gemacht, man braucht weder pullups
oder pulldowns noch irgendwelche Wartezeiten, zumindest nicht beim AVR.

Parallele Erweiterungen habe ich allerdings schon lange nicht mehr
benutzt, seriell war immer schnell genug...

von thkais (Gast)


Lesenswert?

Arrghh - ich nehme alles zurück und behaupte das Gegenteil. Sorry, da
hab ich mich vertan, ich meinte den 574er...

von Jens Renner (Gast)


Lesenswert?

Sehr seltsam... ich könnte schwören, mich diesbezüglich genau ans
Datenblatt gehalten zu haben.
Vielleicht habe ich das auch falsch interpretiert.

Dort steht "h (l) = HIGH (LOW) voltage level one set-up time prior to
the HIGH-to-LOW LE transition".
In der Funktionstabelle steht bei LE jeweils nur ein "L".

Klassisches Missverständnis meinerseits?
Schaden tut's auf jeden Fall nicht, wenn LE vorher nochmal auf "H"
gesetzt wird...

von Dirk Schlage (Gast)


Lesenswert?

Danke für die Tips.
Hatte ich schon auch so gesehen, dass die Daten mit der fallenden
Flanke übernommen werden.
Zusätzliche Pullupwiderstände täten mir weh.
Grundsätzlich ist meine Verbindung über Buchsenleisten und Steckkabel
elektrisch nicht ausgereift. (?) (erklärt aber lang nicht alle
Fehler???)
Ich werde das Ganze mal ein paar Tage in Ruhe untersuchen.
Pausen sind wie ich sehe grundsätzlich nicht nötig, bei 4MHz ist ein
Cycle 250ns, wenn ich eine Flanke generiere sollte die auch lang genug
am Ausgang anstehen

Etliche Dinge sind komisch. In meinem Programm von gestern Nacht,
Initialisiere ich eine Variable mit 0xfe und rotiere die in einem
Timer-Interrupt und schreibe sie in ein Latch. Am Ausgang kommen aber
jeweils 3 Bits mit 0 an und nicht 1.
Wackel-Kontakt bei LE und Data, aber irgendwie scheint auch der Timer
wackelig zu laufen.(???)

So, das wär's. Ich hoffe am nächsten Wochenende bin ich weiter und
kann irgendwann über den Bock lachen den ich geschossen habe.

servus
   Dirk

von Thomas O. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich teste das ganze zur Zeit auch aus, habe einen Philips 74HC573N hier
und steuere testweise die Eingänge erstmal mit einem 8fach DIP Schalter
an. Ich habe festgestellt das die Eingänge sehr empfindlich sind(wie
eine Antenne) sogar hier beim Tippen blinken sie wie eine
Aussteuerungsanzeige auf. Wenn ich aber von den Eingängen Wiederstände
gegen Masse lege dann sind die Ausgänge auch wirklich aus. Da reicht
sogar schon ein 600kOhm Wiederstand.

Ich vermute die integrierten Pull-Down sind zu klein dimensioniert,
also wenn da ein µC-Ausgang dranhängt der 5V/20mA treibt dann klappt es
vielleicht, wenn ich aber 5V draufgebe die wesentlich stärker belastbar
sind dann ist der Spannungsabfall nicht so hoch das ein Low-Pegel
zustande kommt. Mit einem µC konnte man ja auch einfach sinken lassen
also gegen Masse ziehen dann sind sie auch aus.

Hier mal ein Schaltplan meines Versuchsaufbaues(Steckbrett)

von Ralf (Gast)


Lesenswert?

Hi alle,

ich benutze die 573 auch hin und wieder. Habe das immer so gesehen,
dass bei einem festen High-Signal das Latch transparent wie ein Buffer
wirkt (74xx245), somit jede Änderung am Eingang sofort auf den Ausgang
wirkt, und beim Übergang von High nach Low die Daten fest und
unveränderlich gelatched werden. Verbinde gerne den Output Enable mit
Latch, weil dann beim Low-Signal die gespeicherten daten gleich am
Ausgang erscheinen.

Gruß    R A L F

von Thomas O. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

also ich habe es jetzt fertig hier habe ich mal den Schaltplan
korrigiert.

Das ganze läuft wie folgt ab. Über S1 werden die einzelnen Bits
gesetzt. Danach gibt man über S2 High an Pin11(Latch enable) und kann
ihn gleich wieder löschen, die Daten liegen jetzt im Latch, Änderungen
an S1 wirken sich jetzt nicht mehr aus. Wenn S3 betätigt wird, wird
dadurch Pin1(Output enable) auf Masse gezogen und die im Latch
gespeicherten Daten gelangen an die Ausgänge. Wenn man S2 immer
gedrückt hält dann ist das Latch transparent also Änderungen an S1
wirken sich direkt auf die Äusgange aus wenn S3 gedrückt ist und der
Ausgang aktiv ist.

Ich habe das ganze nur auf einem Steckbrett ausprobiert, deswegen weiß
ich noch nicht wie die Wiederstände in der µC Schaltung dimensioniert
sein müssen. RN1=1,8kOhm R1=240kOhm und R2=680kOhm. Ich denke mal das
man RN1 in der µC beschaltung auf 10kOhm setzen solte um die Äusgange
nicht so stark zu belasten. Oder kann vielleicht jemand was zur
Dimensionierung beitragen?

von thkais (Gast)


Lesenswert?

Wenn Du die Schaltung an einen Controller mit push-pull Ausgängen
anschließt, kann RN1 entfallen.

von Thomas O. (Gast)


Lesenswert?

Hallo,

bitte mal Push-Pull für einen Anfänger erklären. Hat ein AVR sowas?
Dieses Bauteil einzusparen ist eigentlich nicht so wichtig da es ja
doch sehr klein baut.

von Thomas O. (Gast)


Lesenswert?

Hallo,

hier noch das Bild nachgereicht
http://www.reichelt.de/bilder/web/B400/!SIL10_5.jpg

von thkais (Gast)


Lesenswert?

Push-Pull = Der Ausgang gibt sowohl low als auch high in Pegel in
belastbarer Form ab. Der Atmel hat solche Ausgänge.
Die MCS-51 Reihe z.B. hat dies nicht, diese Ausgänge können nur
low-Pegel treiben, bei high ist der Zustand ziemlich undefiniert (bis
auf die internen Pull-Ups).

von Thomas O. (Gast)


Lesenswert?

Hallo,

ok danke habe mich mit den einzelnen Pinmöglichkeiten noch nicht so
stark auseinander gesetzt. Wiederstand R2 konnte ich entfernen wird
ganricht gebraucht.

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.