Hallo Zusammen, Die beiden AVR Befehle CBI und SBI sind ja eher gemütlich und brauchen 2 Cyclen. Ich möchte aus Performance Gründen nicht immer 4 Cyclen verbraten, ich will ja nur ein Datum in ein Register laden. Beim ATMEGA den ich einsetze kann man mit einem CBI PINx,y einen Pin auch "toggeln". Daher möchte ich gerne aus einer Flanke eine Impuls erzeugen. Der Impuls triggered ein Edge-Triggered Register (74HCT574). Der Impuls sollte sowohl bei fallender als auch steigender Flanke erzeugt werden. Im Anhang habe ich eine Schaltung die zwar nur bei steigender Flanke einen Puls generiert, aber wenn ich das AND durch ein EX(N)OR ersetzte gibt es einen Impuls in beiden Fällen. Frage, weiss jemand wie zuverlässig so eine Schaltung ist? Gruss Peter
Peter Schranz schrieb: > Frage, weiss jemand wie zuverlässig so eine Schaltung ist? Solange die Gatterlaufzeiten nicht zu klein werden und das Gatter zum Zusammenführen der beiden Signalpfade die Schaltzeit schafft - was soll da schief gehen?
Peter Schranz schrieb: > Puls generiert, aber wenn ich das AND durch ein EX(N)OR ersetzte gibt es > einen Impuls in beiden Fällen. Frage, weiss jemand wie zuverlässig so > eine Schaltung ist? Zuverlässig in welcher Hinsicht? Es wird sehr zuverlässig immer ein Impuls erzeugt.
Ich würde mal testen oder in Datenblatt nachschauen, ob der so generierte Impuls lang genug für dein Register ist. Sonst könntest du das Signal mit einem RC-Glied verzögern.
Peter Schranz schrieb: > den ich einsetze kann man mit einem CBI PINx,y einen Pin auch "toggeln". PS: Ist doch ein SBI ins PIN Register bei einem als Ausgang konfigurierten Pin?
Peter Schranz schrieb: > Ich möchte aus Performance Gründen nicht immer 4 Cyclen > verbraten, Hast Du schon probiert, den CPU-Takt von 1MHz auf 8MHz zu stellen? Dann läuft alles viel schneller.
Der minimale Impuls beim 74HCT574 (Worstcase Angabe im Datenblatt bei 4.5V und -40 bis +85 Grad Celsius) sollte 20ns betragen (low oder high). Mit zuverlässig meine ich, kann man die Schaltung so gestalten, dass sie zuverlässig einen minimal 20ns langen Impuls erzeugt, aber auch nicht wesentlich über 50ns liegt. Sagen wir reproduzierbar in allen Betriebsumgebungen (0-50 Grad Celsius und 5V+/-5%) eine Impuls von mindestens 20ns aber maximal 60ns erzeugt. Er darf vor allem nicht zu lang sein, da auch die Pause zwischen den Impulsen nicht kleiner als 20ns sein darf. Also muss ich wissen, wie lange er maximal wird, sonst geht es schief. Früher gab es mal Verzögerungsgatter die eine definierte (min/max) Verzögerung hatten. Ja genau, den Pin kann man natürlich mit setzen von PINx,y nur dann toggeln wenn er auf OUTPUT gesetzt ist (steht ja so im Datenblatt). Muss ja OUTPUT sein, will ja damit den CP vom 74HCT574 ansteuern. Ja die CKDIV8 Fuse ist heimtückisch (so wie ja auch die JTAG Fuse) und ich versuche immer darauf zu achten. Ich betreibe den ATMEGA bei 20MHz mit Quarz. Und der Grund warum mich die 4 Cyclen stören ist, dass ich in jedem Durchlauf 2 x 4 Cyclen brauche (2 Impulse) und das 20% der Durchlaufzeit des zeitkritischen Teils ist. Die daraus resultierende Performance des Systems ist dann ganz knapp zu gering (ich habe mal das ganze mit einem 25MHz Quarz betrieben und dann klappt das Timing über alles bestens). Ich habe ausgerechnet, wenn ich 4 Cyclen sparen kann, dann reichen 20MHz wunderbar und müsste so den ATMEGA nicht übertakten.
Ich glaube ich habe die Lösung. Statt den Delay mit Inverter und evtl. einem RC Glied zu erzeugen nehme ich ein D-FF (74HCT74), bei 20MHz ergibt das einen Puls von genau 50ns wenn ich das richtig sehe. Der Port wird ja mit der steigenden Flanke ausgegeben. Das 74HCT74 übernimmt die Daten auch mit der steigenden Flanke, d.h. wenn ich XTAL2 (Full Swing Quarz Oscillator) als Clock für das FF nehme, steht am Ausgang vom FF jeweils ein Takt später der Wert des Output Pins zur Verfügung.
Grad zufällig in anderer Sache drüber gestolpert. Haben auch schonmal so eine Anforderung gehabt, um die Schreibgeschwindigkeit auf ein Grafik-LCD zu verdoppeln. Lösung von damals anbei. Bei Bedarf die RC Kombination temeraturstabil auslegen.
:
Bearbeitet durch User
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.