Forum: Mikrocontroller und Digitale Elektronik Wann gibt out die Daten aus ?


von irgendjemand (Gast)


Lesenswert?

Gibt es irgendwo Angaben, zu welchem Zeitpunkt die Daten von einem out
Befehl bei einem mega8515 am Ausgang erscheinen ?
Da ich als Takt für ein synchrones Interface den uC Takt verwenden
möchte, müssen die Daten eine bestimmte Zeit vor der Taktflanke
anliegen, damit das ganze fehlerfrei läuft.

Dasselbe Probleme habe ich auch mit dem in Befehl: Werden die Daten in
der ersten oder zweiten Takthälfte gelesen ?

von Remo (Gast)


Lesenswert?

Hab jetzt nicht im Datenblatt nachgesehen, kann aber eigentlich nur in
der zweiten Takthälfte sein.
In der ersten Takthälfte werden die Daten am Portlatch angelegt und in
der zweiten werden sie reingeschoben und stehen somit am Port an.

Theoretisch könnte eine weitere Verzögerung drin sein, dann würde man
aber auf Probleme laufen, wenn direkt nach dem Out Befehl mit einem In
Befehl der Pin wieder eingelesen wird und davon hab ich noch nicht
gehört. Ergo muß es eigentlich stimmen.

Aber eben nur eigentlich. Da würd ich dir empfehlen das Datenbuch mal
ganz genau durchzustöbern.

ciao
Remo

von A.K. (Gast)


Lesenswert?

Bei den Megas wird es darauf hinauslaufen, dass der Input-Befehl noch
den alten Stand kriegt. Den einerseits dauert es bis zum Ende des
Taktes bis der Output reagiert, andererseits sorgen die Sync-Latches an
den Inputs dafür, dass ein direkt folgender Input-Befehl Daten kriegt,
die schon einen Takt alt sind. Diese Latches gibt's erst bei den
Megas, die AT90-er verhalten sich da anders.

Also: immer einen Befehl zwischen out und in, wenn einem die korrekten
Daten lieb sind. Steht auch so im Manual.

von irgendjemand (Gast)


Lesenswert?

Ich stelle meine Frage genauer:
Ich verbinde das Taktsignal des uC mit dem Clock Eingang eines 74HC574
(oder von mir aus auch ein AHC574). Den Eingang des Latches hänge ich
an Port A
Wenn ich nun Daten mit out porta, temp ausgebe, wann sind die Daten im
Latch ? Am Ende des Taktes bei dem out ausgeführt wird, oder einen Takt
später ?

von A.K. (Gast)


Lesenswert?

Meine Vermutung (das Datasheet ist da etwas vage): Mit Latch (573) am
Anfang des auf OUT folgenden Taktes, mit Register (574) am Ende davon.
Mit Register braucht's also 2 Takte zwischen OUT und IN.

von A.K. (Gast)


Lesenswert?

Ach ja: Das bezieht auf einen idealisierten internen Takt. Was immer
extern als Takt zur Verfügung steht (XTAL1 oder CLKO) ist mehr oder
minder phasenverschoben, vielleicht auch invertiert. Nirgens in Atmels
Datasheets ist eine Beziehung zwischen dem Takteingang und einem
Ausgang definiert, d.h. wenn Du es genau wissen willst hilft nur ein
Oszi. Kann sich vielleicht auch von einer Generation zur nächsten
unterscheiden.

von Benedikt (Gast)


Lesenswert?

Genau das habe ich mal nachgemessen:
Die Daten erscheinen wenige ns hinter der fallenden Flanke beim mega8.
Nur ich hatte keine Idee, wie man messen könnte, ob es der Takt ist, in
dem out ausgeführt wird, oder der darauf folgende.

von A.K. (Gast)


Lesenswert?

Ist diese Beziehung unabhängig von der Taktfrequenz?

Wenn ja, dann riecht es danach, als ob ebendiese fallende Flanke das
Ende vom OUT Takt ist. Und dass der externe Takt gegenüber dem im
Datasheet dargestellten internen Takt invertiert ist. Und man besser
nicht auf ebendiese Flanke ein Register taktet (metastability problem).

von Rufus T. Firefly (Gast)


Lesenswert?

Um ein gewisses Gefühl für die Relationen von Takt und I/O-Zugriffen zu
bekommen, könntest Du externes RAM verwenden und die Taktzyklen nach
einem abgeschlossenen RAM-Zugriff zählen ...

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.