controller mit >= 100 MHz clock

2MHz SPI ist natuerlich schon arg lahm, da hat der Student beim "Zusammenklicken der Fremd-IP" wohl ueberall die gleichen Makrozellen genommen ;-) Alle Treiber schnell ist auch nicht der Hit. Umschaltbare Slew rate ist eigentlich das was man will, also schnell nur da wo es auch noetig ist.

Micha

Reply to
Michael Baeuerle
Loading thread data ...

Hallo Michael,

Man kann die CPU aber so konfigurieren dass bestimmte Code-Bereiche immer im Cache gehalten werden.

Gruss Michael

Reply to
Michael Koch

Hallo Mark,

Zwei Zyklen für "SETB bit" und zwei Zyklen für "CLR bit". Die Pulsdauer kannst du mit NOPs verlängern, die brauchen einen Zyklus.

Gruss Michael

Reply to
Michael Koch

Hallo Michael,

Doch, das geht wenn man ein paar Tricks anwendet. Lege das Triggersignal auf einen Eingang, der einen Interrupt auslöst und gleichzeitig einen

100MHz Timer startet. In der Interrupt-Routine liest du als erstes den Zählerstand des Timers aus. In dieser Zahl ist die Information enthalten, wie lang die Reaktionszeit auf den Interrupt war. Verwende dann diese Zahl, um an der richtigen Stelle in ein NOP-Array reinzuspringen. Auf diese Weise wird eine variable Verzögerungszeit mit 10ns Auflösung generiert, wodurch die Interrupt-Reaktionszeit ausgeglichen werden kann. Das Ergebnis ist 10ns Jitter.

Gruss Michael

Reply to
Michael Koch

Jepp, das ist das übliche Verfahren, um variable Interruptlatenzen zu kompensieren. Prinzipiell ähnlich funktioniert es auch mit freilaufendem Zähler und Captureeinheit. Allerdings kostet das Verfahren selber einiges an Zeit und der Interrupt natürlich sowieso. D.h: Du bekommst eine nicht ganz unerhebliche Mindestlatenz.

Reply to
Heiko Nocon

Ja, der Cache scheint auch ziemlich gross zu sein.

Einen Pin toggeln geht in einem Takt, d.h. die minimale Pulsdauer von

10ns wie gefordert sollte moeglich sein (sofern die Pin-Treiber das ausgeben koennen). Allerdings kann man am Ende hoechstens an 20ns Jitter herankommen. Mehr ist aus der CPU nicht zu holen wenn ich das Datasheet richtig lese.

Micha

Reply to
Michael Baeuerle

"nicht ganz unerheblich" wird noch untertrieben sein im Vergleich zu direkt abgefragt. Aber gut, vielleicht ist das hier ja akzeptabel bzw. kann sogar an der Triggerquelle kompensiert werden.

Micha

Reply to
Michael Baeuerle

Hallo Michael,

Mit welchem Befehl soll das gehen? Ich meine die schnellste Möglichkeit ist ein "SETB bit", aber der braucht 2 Taktzyklen.

Gruss Michael

Reply to
Michael Koch

Du hast Recht. Ich dachte "Rn" duerfte auch ein SFR sein, das ist aber nicht so. Das Toggeln haette man sonst mit MOV oder XCH machen koennen (die restlichen Pins des Ports kann man reservieren, sind hier ja im Ueberfluss vorhanden). Aber diese Befehle brauchen dann auch alle 2 Cycles wenn ein SFR beteiligt ist.

Ein (D)J(N)Z-Sprung geht aber in 2 Cycles, d.h. damit koennte man die Schleife vom Interrupt unterbrechen lassen mit =20ns Pulsdauer und

Reply to
Michael Baeuerle

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.