Forum: Mikrocontroller und Digitale Elektronik Hilfe bei FlipFlop Schaltung


von Werner13 (Gast)


Lesenswert?

Hallo!

Ich verwende ein FlipFlop:
http://www.onsemi.com/pub_link/Collateral/NL17SZ74-D.PDF

Die Pins 1 und 2 (D und CP) liegen auf Masse, als Ausgang wird Pin 5 (Q) 
verwendet, ~Q wird nicht verwendet und bleibt offen. Am Pin 7 (S) liegt 
im Betrieb High an, das auslösende Ereignis zieht diesen Pin auf Low. 
Der Ausgang Q sollte Standardmäßig low sein, wenn das Eregnis eintritt 
sollte Q auf HIGH gehen. Das R-Signal (Pin 6) wird bei der 
Initialisierung auf low gesetzt (S ist zu diesem Zeitpunkt auf High), 
danach wird R gleich auf High gesetzt, um in den Hold-Zustand zu gehen 
und am Ausgang Low auszugeben. Bei einem auslösenden Ereignis wird S auf 
Low gezogen, Q geht auf High was wiederum dazu führt, dass S 
hardwaremäßig wieder auf High gezogen wird.

Was muss ich am R-Signal anlegen, um den Ausgang Q wieder auf Low 
rückzusetzen? Ich versuchte, R auf low und unmittelbar danach wieder auf 
High zu setzen, das funktioniert aber nicht, Q bleibt High.

Kann mir jemand helfen?
Danke lg

von Route_66 (Gast)


Lesenswert?

Werner13 schrieb:
> Ich versuchte, R auf low und unmittelbar danach wieder auf
> High zu setzen, das funktioniert aber nicht, Q bleibt High.

Genau so funktioniert das D-FlipFlop im R/S-Modus.
S+R beide H -> Ausgänge unverändert
S=H R=L -> Q=L
S=L R=H -> Q=H
S+R beide L -> nicht erlaubt, weil Q danach undefiniert

von innerand i. (innerand)


Lesenswert?

Werner13 schrieb:

> Kann mir jemand helfen?

Mhm, das verlinkte Datenblatt, gleich auf Seite 1: Truth Table

von 6A66 (Gast)


Lesenswert?

Werner13 schrieb:
> Was muss ich am R-Signal anlegen, um den Ausgang Q wieder auf Low
> rückzusetzen? Ich versuchte, R auf low und unmittelbar danach wieder auf
> High zu setzen, das funktioniert aber nicht, Q bleibt High.

Das sollte so funktionieren solange Du tatsächlich den Zustand "00" an 
"S/RS" verhinderst.
Andere Möglichkeit: Prüfen ob das Flipflop überhaupt wechselt 
(Spannungspegel?).

rgds

von Werner13 (Gast)


Lesenswert?

Gehen wir von dem Zustand aus, in dem R=S=HIGH, Q=Low. Dann wird S 
kurzzeitig auf Low gesetzt, dadurch wird Q High, unmittelbar danach wird 
S wieder High, Q bleibt High. Soweit so gut.

Danach setze ich R auf Low, um Q rückzusetzen. Passt auch, Q geht auf 
Low. Aber warum geht Q wieder auf High, wenn ich R wieder auf High 
setze??? (S bleibt in der zeit durchgehend auf High?)

LG

von 6A66 (Gast)


Lesenswert?

Werner13 schrieb:
> Danach setze ich R auf Low, um Q rückzusetzen. Passt auch, Q geht auf
> Low. Aber warum geht Q wieder auf High, wenn ich R wieder auf High
> setze??? (S bleibt in der zeit durchgehend auf High?)

Prüfe die Schaltung, Spannungspegel. Kurzschlüsse? Wie erzeugst Du die 
Pulse? Pullup an S/R?

rgds

von Wilhelm F. (Gast)


Lesenswert?

Wie ich aus dem Datenblatt sehe, ist das ein ganz normales D-FF mit 
asynchronem Set und Reset aka RS-FF. Wie bei 7474 oder 4013. Ein Zustand 
an RS ist verboten.

CP ist der Clock-Input, der von D die Daten nach Q übernimmt.

von Werner13 (Gast)


Lesenswert?

Hardware und Spannungspegel müssten passen...

@Wilhelm: ich habe damit sehr wenig Erfahrung... Bedeutet das, dass 
dieses FF für meine Anwendung nicht geeignet ist bzw. wie kann ich es in 
diesem Fall rücksetzen?

von 6A66 (Gast)


Lesenswert?

Werner13 schrieb:
> Hardware und Spannungspegel müssten passen...

Dann müsste das Flipflop auch gehen.

rgds

von Werner13 (Gast)


Lesenswert?

Wie gesagt: Wenn alle 3 (S,R,Q) auf High sind wird mit Lowschalten von R 
(CLR) Q auf Low gesetzt. Wenn ich dann R zurück auf High setze, geht Q 
auch wieder auf High. Ich will aber, dass Q auf Low bleibt...

von Wilhelm F. (Gast)


Lesenswert?

Werner13 schrieb:
> Hardware und Spannungspegel müssten passen...
>
> @Wilhelm: ich habe damit sehr wenig Erfahrung... Bedeutet das, dass
> dieses FF für meine Anwendung nicht geeignet ist bzw. wie kann ich es in
> diesem Fall rücksetzen?

Was du jetzt genau vor hast, weiß ich nicht. Aber so ein D-FF ist dafür 
da, ein bit am D-Eingang mit einem Impuls an CP zu speichern, und an Q 
auszugeben.

von 6A66 (Gast)


Lesenswert?

Werner13 schrieb:
> Wie gesagt: Wenn alle 3 (S,R,Q) auf High sind wird mit Lowschalten von R
> (CLR) Q auf Low gesetzt. Wenn ich dann R zurück auf High setze, geht Q
> auch wieder auf High.

Das macht er nur wenn ein Fehler in der Schaltung ist.
Glaub's mir, ich mach jetzt über 20J beruflich Elektronik.

rgds

von Harald W. (wilhelms)


Lesenswert?

Werner13 schrieb:

> Wenn ich dann R zurück auf High setze, geht Q
> auch wieder auf High. Ich will aber, dass Q auf Low bleibt...

R und S sind immer dominierend. Aus Deiner Beschreibung wird mir
aber nicht ganz klar, was Du eigenlich willst. Du solltest mal
ein Pegeldiagramm aufmalen, ähnlich wie man es in einigen Daten-
blättern findet.
Gruss
Harald

von Werner13 (Gast)


Lesenswert?

@Wilhelm: laut rgds müsste es auch so funktionieren (wenn ich also D und 
CP an Masse lege, dann kann iche s wie ein RS FF verwenden)

@rgds: hmmm, ich glaub dir das gern. Aber es ist wirklich komisch, weil 
alle Pegel passen. Also deiner Meinung nach müsste es so funktionieren 
wie ich es beschrieben hab?

von innerand i. (innerand)


Lesenswert?

Werner13 schrieb:
> Wie gesagt: Wenn alle 3 (S,R,Q) auf High sind wird mit Lowschalten von R
> (CLR) Q auf Low gesetzt. Wenn ich dann R zurück auf High setze, geht Q
> auch wieder auf High. Ich will aber, dass Q auf Low bleibt...

Das sollte auch so sein. Wenn es das nicht macht ist es entweder kaputt 
oder an Ihrer Beschaltung stimmt etwas nicht.

von Werner13 (Gast)


Lesenswert?

@Harald:

Pin 1,2 und 4 liegen auf Masse, Pin 8 auf +3,3V, Pin 3 ist offen (~Q 
benötige ich nicht).

Was ich will: Pin 5 (Q) soll Initial auf Low liegen und bei einem 
auslösenden Ereignis auf 1 gehen. S (Pin 7) liegt Initial auf High, das 
auslösende Ereignis zieht S auf Low. Durch dieses Ereignhis soll also Q 
auf High schalten. Wenn nun ein Ereignis ausgelöst wird, dann wird durch 
das Setzen von Q auch S hardwaremäßig (Rückkoppelschaltung, nicht 
direkt, sondern mehrere Stufen) auf High gezogen. Es fand also an S nur 
ein kurzer Low Puls statt, der jedoch ausreicht, um Q auf High zu 
ziehen.

Initialisierungsphase: S ist von Anfang an auf High, R wird auf Low 
gelegt -> Q low, unmittelbar danach wird R auf High gezogen, um Q auf 
High zu halten.

Dann wird auf auslösende Ereignis gewartet.... (S wird dabei von High 
auf Low gezogen).

Wenn nun ein Ereignis eintritt, wird Q auf High gesetzt, aber wie kann 
ich es wieder rücksetzen? R auf Low ziehen funktioniert, aber ich muss R 
doch wieder auf High zurücksetzen, damit ich beim nächsten ereignis 
wieder rücksetzen kann. Wenn ich aber R nach dem Lowsetzen wieder auf 
High setze, ist auch Q wieder auf High...

von innerand i. (innerand)


Lesenswert?

Werner13 schrieb:

> @rgds: hmmm, ich glaub dir das gern. Aber es ist wirklich komisch, weil
> alle Pegel passen. Also deiner Meinung nach müsste es so funktionieren
> wie ich es beschrieben hab?

Rücken S' mal mit ihrer Beschaltung raus (Skizze).

Ich hab da so den Verdacht, dass CLR und PRS nicht High sonder floating 
sind wenn sie grad nicht Triggern. Haben Sie Pullups verbaut?

von 6A66 (Gast)


Lesenswert?

Werner13 schrieb:
> @rgds: hmmm, ich glaub dir das gern. Aber es ist wirklich komisch, weil
> alle Pegel passen. Also deiner Meinung nach müsste es so funktionieren
> wie ich es beschrieben hab?

Hallo Werner,

nochmal: wie stellst Du die Pegel her?
Mit Schaltern, Tastern, ...?
Sind die Pegel der "festgelegten" Pins wirklich fest? Wie ist das 
gelöst?
Bitte bedenke dass diese Flipflops wirklich schnell sind, wir reden hier 
von 2,6ns. Jeder Impuls an S kann zu einem Schalten führen!

rgds

von Werner13 (Gast)


Angehängte Dateien:

Lesenswert?

Anbei die Schaltung...

S wird gesetzt, wenn ein Komparator schaltet... (am Plus Eingang 
Spannungsteiler). An R hängt direkt ein Pin vom µC. Der Ausgangspin Q 
schaltet 2 Transistoren und wird noch direkt an einen µC Pin geführt, um 
einen Interrupt auszulösen.

von Werner13 (Gast)


Lesenswert?

Mit dem Setzen von Q wird auch die Spannung am negativen 
Komparatoreingang wieder so klein, dass High an S anliegt...

von Axel S. (a-za-z0-9)


Lesenswert?

Werner13 schrieb:
> Bei einem auslösenden Ereignis wird S auf
> Low gezogen, Q geht auf High was wiederum dazu führt, dass S
> hardwaremäßig wieder auf High gezogen wird.

und zwar wie?

Werner13 schrieb:
> Mit dem Setzen von Q wird auch die Spannung am negativen
> Komparatoreingang wieder so klein, dass High an S anliegt...

Dieses Detail zeigt dein Schaltplan(ausschnitt) nicht.

Ich vermute mal, daß wenn du dein Flipflop rücksetzt, die Sperre von S 
aufgehoben wird und so unmittelbar nach dem loslassen von R das Flipflop 
gleich wieder zurückkippt. Schau dir den Pegel an S an.


XL

von Werner13 (Gast)


Lesenswert?

Axel Schwenke schrieb:
> und zwar wie?

Ich habe jetzt leider keinen Zugriff auf die Schaltung, aber es ist so: 
es wird am Komparator (-) Eingang ein Strom (Spannungsabfall über Shunt) 
gemessen. Wenn der Strom zu hoch wird, wird die Spannung am (-) Eingang 
größer als die durch den U-Teiler fix vorgegebene (+) Spannung und der 
S-Eingang wird auf Low gezogen. Dadurch wird Q gesetzt und dieses Setzen 
deaktiviert die Stromquelle, sodass der Strom abgeschalten wird und 
somit der positive Komparatoreingang wieder höher als der negative ist. 
S wird also nur kurzzeitig auf Low gezogen, wenn der Strom zu hoch wird, 
danach geht S gleich wieder auf High.

Wenn nun einmal der Überstrommechanismus auslöst, ist also S auf High, Q 
auf High und R auf High (es fließt kein Strom mehr über den Shunt, S 
bleibt auf High). Wenn ich in diesem Zustand nun mit einem Breakpoint in 
der Entwicklungsumgebung stoppe und dann mit einem Befehl R auf Low 
setze, geht auch Q auf Low, soweit so gut. Wenn ich aber danach (egal 
wiue lang ich zwischen diesen beiden Befehlen warte) mit dem nächsten 
Befehl R wieder auf High setze, geht Q auch wieder auf High, und das 
soll nicht sein...

Danke für die Hilfe!

von Werner13 (Gast)


Lesenswert?

Was meinst Du denn mit Sperre von S?

von 6A66 (Gast)


Lesenswert?

Werner13 schrieb:
> Wenn ich aber danach (egal
> wiue lang ich zwischen diesen beiden Befehlen warte) mit dem nächsten
> Befehl R wieder auf High setze, geht Q auch wieder auf High, und das
> soll nicht sein...

Guten Morgen Werner13,

ich sehe Ihr habt gestern noch die Schaltung besprochen.
Ich würde Dir dringend empfehlen, die Pegel zu prüfen und auch einen 
Scopeshot von diesem Ereignis zu machen.
Wie gesagt: Das Flipflop muss nach normalem Verhalten beim Rücksetzten 
durch R auf Low gehen. Die einzige Möglichkeit dass es wieder auf H geht 
ist:
S ist auch auf Low. Da dafür ein kurzer Impuls im Bereich von 10ns 
reicht ist es denkbar, dass der Komparator - ein sehr schneller Typ mit 
40ns Reaktionszeit - auf irgendeine Spitze im Strom/Spannung des 
Netzteils reagiert. Das dem Komparator nachgeschaltete RC-Glied hilft da 
auch nicht viel mit einem Tau von 47ns.

Also:
Scopeshot vom S-Eingang machen, alternativ das RC-Glied länger 
dimensionieren (mal so auf 47us).

rgds

von 6A66 (Gast)


Lesenswert?

6A66 schrieb:
> Scopeshot vom S-Eingang machen.

Triggerlevel: ca 2,5V, fallende Flanke, Auflösung <1us.

von Werner13 (Gast)


Lesenswert?

Hey danke für die Hilfe!

Ok soweit ich das verstanden habe, könnte der Fehler darin liegen, dass 
genau zu dem Zeitpunkt, wo ich das R wieder auf HIGH setze, S auf Low 
ist. Dadurch geht dann Q wieder auf High, wenn R auf High gezogen wird.

Ich komme erst nachmittag dazu, dies zu messen, werde dann gleich das 
ergebnis posten. Du meinst also, dass ich das S-Signal mit den 
beschriebenen Triggereinstellungen zu dem Zeitpunkt messen soll, wo ich 
das R zurück auf 1 setze?

Vielen Dank, bis dann..

von 6A66 (Gast)


Lesenswert?

Werner13 schrieb:
> könnte der Fehler darin liegen, dass
> genau zu dem Zeitpunkt,

Oder entsprechend später, je nachdem wie genau Du "schauen" kannst.
Deswegen schau Dir das Signal am Eingang an.
Oder noch besser: Trigger auf den Ausgang und schau Dir den Eingang an.

rgds

von Dietrich L. (dietrichl)


Lesenswert?

@Werner13:
Was mit noch einfällt: wie ist das Leiterplatten-Layout + 
Stützkondensatoren?
Bei den doch recht schnellen Bauteilen kann es auch Ärger geben wegen 
schlechtem GND und fehlenden oder falsch angeordneten Stützkondensatoren 
an Flip-Flop und Komparator.

Gruß Dietrich

von Werner13 (Gast)


Lesenswert?

Leider ist es sich heute noch nicht ausgegangen, werd es morgen 
messen...

Zwecks Layout und Schaltung: Also Blockondensatoren sind für die FF- und 
Komparator- Versorgung schon vorgesehen, weiß jedoch nicht genau, wie 
weit diese entfernt sind und weiß aktuell auch nicht, wie groß die sind. 
Wird morgen nachschaun...

Andere Frage: Bei dem FF handelt es sich schon um Zustandsgesteuertes 
FF, oder? Mich verwirrt das "edge triggered" ganz oben im Datenblatt. 
Flankengesteuert ist es ja nur, wenn es als D-FF verwendet wird, oder?

Danke, lG

von Axel S. (a-za-z0-9)


Lesenswert?

Werner13 schrieb:
> Andere Frage: Bei dem FF handelt es sich schon um Zustandsgesteuertes
> FF, oder? Mich verwirrt das "edge triggered" ganz oben im Datenblatt.

Flankengetriggert ist nur der Takteingang. Kann man aber durchaus auch 
zum Vorteil ausnutzen, indem man z.B. D und S fest auf H legt, das 
Flipflop mit einer steigenden Flanke an C setzt und mit L an R 
rücksetzt. Dann darf C während des Rücksetzens auch weiterhin H bleiben; 
auch wenn man R wieder losläßt, kippt das FF dann nicht zurück. R ist 
dabei dominant.


XL

von HildeK (Gast)


Lesenswert?

Werner13 schrieb:
> Andere Frage: Bei dem FF handelt es sich schon um Zustandsgesteuertes
> FF, oder? Mich verwirrt das "edge triggered" ganz oben im Datenblatt.
Es ist beides, je nach Beschaltung.
> Flankengesteuert ist es ja nur, wenn es als D-FF verwendet wird, oder?
Richtig. Du verwendest den Teil aber nicht, sondern nur die RS-Funktion. 
Also zustandsgesteuert.

von Werner13 (Gast)


Lesenswert?

Hallo,

habe mir nun den Pegel am S Eingang angeschaut. Wie gesagt fürs 
Rücksetzen setze ich R auf low und unmittelbar danach wieder auf High. 
Wenn ich R auf Low setzte, passiert noch nichts. Aber in dem  Moment, wo 
ich R wieder High setze und damit Q wieder auf Low ziehen (rücksetzen) 
will, gibt es tatsächlich kurze Spikes am S Eingang (wird kurzzeitig 
immer wieder auf LOW gezogen. Das wird ws wirklich der Grund sein.

Es kann sein, dass ich es softwaremäßig beheben kann, nämlich dann, wenn 
ich den Rückkoppelzweig komplett wegschalte während ich das FF 
rücksetze. Hardwaremäßig könnte ich es mit einer Erhöhung der 
Zeitkonstante nach dem Komparator, wie bereits vorgeschlagen, versuchen.

Was sagt ihr dazu?

DANKE, lg

von 6A66 (Gast)


Lesenswert?

Werner13 schrieb:
> Es kann sein, dass ich es softwaremäßig beheben kann, nämlich dann, wenn
> ich den Rückkoppelzweig komplett wegschalte während ich das FF
> rücksetze. Hardwaremäßig könnte ich es mit einer Erhöhung der
> Zeitkonstante nach dem Komparator, wie bereits vorgeschlagen, versuchen.
>
> Was sagt ihr dazu?

Ich kenne den Rest der Schaltung nicht.
Ich - HW - präferiere die sichere Variante: Umdimensionierung RC-Glied, 
gleichzeitig aber auch die SW Variante wenn möglich. Wenn dann später in 
SW was gemacht wird und das ganze vergessen ist schlägt notfalls immer 
noch die HW-Variante zu.

rgds

von 6A66 (Gast)


Lesenswert?

Werner13 schrieb:
> kurze Spikes am S Eingang (wird kurzzeitig
> immer wieder auf LOW gezogen

Wie kurzzeitig?

rgds

von Werner13 (Gast)


Lesenswert?

HAllo rgds,

es waren ca. 10µs Spikes im Abstand von 100-200µs.

Ich habe es softwaremäßig gelöst, es funktioniert jetzt! Das Problem bei 
der HW-Lösung ist, dass dann auch der Auslösemechanismus langsamer wird, 
das will ich vermeiden. Nachdem die Rückkopplung definitiv weggeschalten 
ist, kann hier kein Spike mehr auftreten.

Vielen Dank für die Hilfe, hat mir sehr geholfen!

Werner

von 6A66 (Gast)


Lesenswert?

Werner13 schrieb:
> 10µs Spikes im Abstand von 100-200µs.

Hallo Werner,

damit schaltet das Flipflop definitiv :)
OK gelöst.

rgds

PS: rgds steht für "with kind ReGarDS", der Nickname ist 6A66.

von Werner13 (Gast)


Lesenswert?

Alles klar :) DANKE!

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.