Forum: Mikrocontroller und Digitale Elektronik Erzeugen eines Impuls mit nur einer Instruktion


von Peter S. (cbscpe)


Angehängte Dateien:

Lesenswert?

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

von Mike (Gast)


Lesenswert?

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?

von Hinze (Gast)


Lesenswert?

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.

von Max H. (hartl192)


Lesenswert?

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.

von Hinze (Gast)


Lesenswert?

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?

von m.n. (Gast)


Lesenswert?

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.

von Peter S. (cbscpe)


Lesenswert?

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.

von Peter S. (cbscpe)


Lesenswert?

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.

von Sebastian P. (dazligth)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.