Hallo
Ich wollte mal fragen ob mir jemand helfen kann, eine Lücke in einen
durchgehenden Takt einzufügen. Ich habe das Problem als Bild angehängt.
Das auszulösende Signal kann beliebigen Pegel vor und nach dem Wechsel
haben. Ich habe von Verzögerungsgliedern gelesen doch ich werde nicht
schlau aus dem Zeug, da mein Buch knapp aber komplex geschrieben ist. Im
Internet kommt nur der google-Müll und RC-Glieder.
Es können übrigens bis zu 4 Takt-Impulse ausgelassen werden, was ja das
eigentliche Ziel ist. Doch vier mal einen Takt auszulassen geht auch
bzw. zwei mal zwei Takte.
Hi @Lück,
Zum Finden der Lösungswege müsste man noch wissen, welche Idee
dahintersteckt, bzw. was bezweckt werden soll.
a) Arbeit mit MCU, evtl. mit welcher.
b) mit Monoflops und Torschaltungen aufgebaut mit Extra ICs.
Bei a) stelle ich mir vor, es soll ein Taktsignal auf einen Port geführt
werden, aber "softwaremäßig" über eine "Torschaltung" laufen.
Das könnte man mit Timern und Interrupts gut machen, könnte ich mir
vorstellen.
Bei b) habe ich bezüglich Zuverlässigkeit so meine Bedenken.
Da Du aber schon von RC-Gliedern redetest, die Du nicht möchtest, kann
man diesen Lösungsvorschlag wohl ausschließen?
ciao
gustav
Max D. schrieb:> Das ist nicht zufällig das gleiche Problem:> Beitrag "Dynamisch ein paar Takte auslassen bei der 8051 CLK"
Hi,
habe noch ein Board mit dem 80C51 hier irgendwo rumfliegen.
Rudimentär erinnere ich mich dran, dass das Taktsignal asymmetrisch sein
muss, dann wird noch das Konstrukt "Maschinenzyklus" eingeführt, so dass
man nicht in ATMEL-AVR-Takt-Befehlsausführungszeiten-Vorstellungen
denken darf.
Da bin ich momentan schon etwas raus.
ciao
gustav
Ja, es ist für den Takteingang eines 8051.
Würde es mit einem Monoflop 74HC123 gehen ? Im Datenblatt sehe ich aber
irgendwie nur den Ausgangsbereich in Mikrosekunden, ich benötige aber
maximal 320 Nanosekunden.
Könnte man es diskret aufbauen ? ALso mit einem 1% Kerko/Widerstand und
ein paar Gattern ?
Lück schrieb:> Das auszulösende Signal kann beliebigen Pegel vor und nach dem Wechsel> haben
Das ist logischer Unsinn. Wenn das Signal vorher und nachher Hi ist, was
soll dann irgendetwas auslösen?
Georg
Ein UND-Gatter und parallel dazu eine monostabile Kippschaltung, die mit
einem "auslassen"-Impuls gefüttert wird.
Hat letztere keinen inversen Ausgang kann eventuell noch ein Inverter
fällig werden.
Man kann natürlich auch den "da musst Du nur"-Weg beschreiten und eine
ausgewachsene µP-Schaltung einbauen. Wem's gefällt!
Hallo Lück,
so sollte es gehen (ohne R oder C) ...
Ein beliebiger Flankenwechsel an EVT schaltet jeweils eins der FF's
IC1A oder IC2B um. Mit der nächsten fallenden Flanke an CL_IN wird der
Ausgang CL_OUT abgeschalten (LOW). Der Zähler zählt vom zählt mit
jedem Takt weiter bis 15 erreicht ist, dann werden die FF's in IC1
wieder in den Ruhezustand gebracht. Die nächste Flanke an CL_IN gibt
den Ausgang wieder frei und der Zähler wird mit dem Ausganswert neu
geladen.
Hast ja nicht geschrieben das es einfach sein soll.
Sascha
Habe ich mich auch gefragt, entweder das Signal ist ganz kurz auf dem
anderen Pegel und geht wieder zurück oder er meint dass es den pegel von
High nach Low Ubd von Low nach High ändern kann.
Lück schrieb:> Würde es mit einem Monoflop 74HC123 gehen ? Im Datenblatt sehe ich aber> irgendwie nur den Ausgangsbereich in Mikrosekunden, ich benötige aber> maximal 320 Nanosekunden.
Kannst du völlig vergessen.
Du gehst die Sache falsch an. Du brauchst keine Lücke, sondern du mußt
den Takt abschalten und nach einer vorgegebenen Zeit wieder einschalten.
In diesem Fall sollen das 4 Takte sein. Sei erstmal froh, daß du nicht 5
oder 11 brauchst.
Einen (Ein-)Schaltimpuls nach 4 Takten bekommst du mit einem Zähler, der
bei 0 losläuft am Ausgangsbit2.
Du brauchst also eine Schaltung mit ein paar Gattern, einem Flipflop und
einem Zähler.
Beim Auslösen wird der Takt gesperrt(Flipflop an einem UND), dann
startet der Zähler, Bit2 schaltet das Flipflop wieder um und der Takt
liegt wieder an.
Genau das mit dem Zähler ist seit Tagen in meinem Kopf (und macht dort
Schmerzen :-))! Ich habe das ein wenig durchgespielt und so einen
4-Bit-Zähler gefunden, mit gleich 2 Enable-Eingängen usw.
Daher suchte ich nach einer Alternative, zB. ein Monoflop.
Doch sollte ich wirklich die Zähler-Variante benötigen werde ich wohl
ein wenig zeichnen und grübeln müssen ...
Das vom Sascha gucke ich mir morgen an, doch brauche ich einen Zähler
bis 4 so wie Thomas es geschrieben hat.
Was wäre das Monoflop mit R+C einfach ... doch wenn es nicht geht kann
man nichts machen.
Oh ... und: der beliebige Signalwechsel im Diagramm am Steuersignal soll
bedeuten dass man das Signal sowohl von L nach H als auch von H nach L
ansteuern kann (dauerhaft). Es ist ein Ausgangspin des 8051.
Lück schrieb:> der beliebige Signalwechsel im Diagramm am Steuersignal soll> bedeuten dass man das Signal sowohl von L nach H als auch von H nach L> ansteuern kann (dauerhaft).
Wie ist der Wechsel des Auslösesignals bez. des Taktes zeitlich zu
sehen? Mal vor der Taktflanke, mal danach? Welche zeitlichen Abstände?
Ist die Taktfrequenz fest?
Man könnte mit EXOR und einem kleinen Delay (andere EXORs im Baustein)
bei jedem Flankenwechsel einen Puls generieren, der dann über ein
Monoflop den Takt über ein UND für eine gewisse Zeit sperrt.
Ich habe an meinem 8051 gemessen, dass eine Portausgabe kurz nach dem
Anstieg eines Taktimpulses erfolgt. Welcher von den 12 Takten eines
Befehlszyklus das ist das habe ich nicht gemessen und es war nicht so
wichtig.
Der Takt ist fest und läuft endlos mit etwa 12MHz. Ich müsste lediglich
immer mal wieder 4 Takte rausnehmen um den 8051 mit etwas zu
synchronisieren.
HildeK schrieb:> Man könnte mit EXOR und einem kleinen Delay (andere EXORs im Baustein)> bei jedem Flankenwechsel einen Puls generieren, der dann über ein> Monoflop den Takt über ein UND für eine gewisse Zeit sperrt.
Das wäre schön doch welches Monoflop passt da ?
Edit: die rausgenommenen Taktimpulse sollen natürlich nicht zeitlich
verkürzt sondern in der positiven Präsenz der Impulse reduziert werden.
Also vier Pulse sollen einfach auf Masse bleiben für ihre Dauer.
Ich habe auch mit der Umkehrung des Taktes herumprobiert und das auf
einen Zähler geschickt, damit die fallenden Taktflanken zählen und es
ging eine Weile ganz gut. Doch der Zähler muss sich nach 4 mal Zählen
aufhalten, noch dazu muss er am Anfang zurückgesetzt werden, und dabei
darf die ganze Start/Endbedingung sich nicht gegenseitig stören. Das
ganze Zusammenspiel mit Gattern und Flipflops ist eine Katastrophe :-)
Lück schrieb:> Das wäre schön doch welches Monoflop passt da ?
Welche Signalpegel hast du? 3.3V oder 5V?
Demnach musst du eine geeignete Familie auswählen, die eine minimale
Pulslänge von ca.80ns schafft. Irgendein 74xxx123 z.B.
Bei 3.3V würde ich den LVC123 ins Auge fassen.
HildeK schrieb:> Welche Signalpegel hast du? 3.3V oder 5V?> Demnach musst du eine geeignete Familie auswählen, die eine minimale> Pulslänge von ca.80ns schafft. Irgendein 74xxx123 z.B.> Bei 3.3V würde ich den LVC123 ins Auge fassen.
So wie es aussieht ist die minimale Pulsweite des 74xx123 im
Mikrosekunden-Bereich, also untauglich.
Ich würde gerne Saschas Schaltung simulieren, doch mit welchem Programm
ausser PSpice ?
Lück schrieb:> Oh ... und: der beliebige Signalwechsel im Diagramm am Steuersignal soll> bedeuten dass man das Signal sowohl von L nach H als auch von H nach L> ansteuern kann (dauerhaft). Es ist ein Ausgangspin des 8051.
Das wird ja immer schlimmer.
Das:
1
DDRB|=(1<<3);
2
PCMSK|=(1<<PCINT2);
3
PORTB|=(1<<2);
4
GIFR=GIFR;
5
6
while(1)
7
{
8
if(GIFR&(1<<PCIF))
9
{
10
PORTB|=(1<<3);
11
asmvolatile("nop");
12
PORTB&=~(1<<3);
13
GIFR=GIFR;
14
}
15
}
macht nach einem Signalwechsel an Pin7 eines Attiny 13a einen Impuls von
ca. 320ns bei 9,6MHz an Pin2. Feintuning ist mit dem OSCCAL-Register
möglich. Ist allerdings nicht synchron
Lück schrieb:> So wie es aussieht ist die minimale Pulsweite des 74xx123 im> Mikrosekunden-Bereich, also untauglich.
Mit LVC123 sind nach DB typ <100ns bei 5V möglich. Wenn du sowieso 2
oder 4 Pulse ausblenden willst, würde das reichen.
Thomas E. schrieb:> macht nach einem Signalwechsel an Pin7 eines Attiny 13a einen Impuls von> ca. 320ns bei 9,6MHz an Pin2. Feintuning ist mit dem OSCCAL-Register> möglich. Ist allerdings nicht synchron.gustav schrieb:> Hi,> habe noch ein Board mit dem 80C51 hier irgendwo rumfliegen.> Rudimentär erinnere ich mich dran, dass das Taktsignal asymmetrisch sein> muss, dann wird noch das Konstrukt "Maschinenzyklus" eingeführt, so dass> man nicht in ATMEL-AVR-Takt-Befehlsausführungszeiten-Vorstellungen> denken darf.
Hat auch kein Programmspeicher onboard, benötigt ein externes EPROM fürs
Programm und noch ein Adressen-Latch-IC zusätzlich.
(Selbstbau-Programmiergerät ist vorsintflutlich.)
Lück schrieb:> Ich habe auch mit der Umkehrung des Taktes herumprobiert und das auf> einen Zähler geschickt, damit die fallenden Taktflanken zählen und es> ging eine Weile ganz gut. Doch der Zähler muss sich nach 4 mal Zählen> aufhalten, noch dazu muss er am Anfang zurückgesetzt werden, und dabei> darf die ganze Start/Endbedingung sich nicht gegenseitig stören. Das> ganze Zusammenspiel mit Gattern und Flipflops ist eine Katastrophe :-)
Kannst Du bitte etwas mehr über das Schaltungsdesign verraten?
Hab nämlich gerade und noch Excess-3-Zähler und Aikenzähler synchron
etc. durchgeblättert. Eine Tabelle für das geforderte Signal wäre gut.
ciao
gustav
Ich habe eine Schaltung gezeichnet, sie läuft mit 5V Betriebsspannung.
Links sieht man die Problemstelle, diesen Kasten der einen bis maximal
vier Taktimpulse unterdrücken soll wenn am Portpin X ein Impuls kommt
(der bleibt eine ganze Weile bis der 8051 den nächsten Befehl ausführt).
Zur Lücke ist noch zu sagen, dass ich insgesamt 4 CLK-Takte
auslassen/löschen möchte. Dies muss aber nicht unbedingt in einem
Durchgang erfolgen, das heisst es die Lücken-Logik kann auch vier mal
hintereinander angesteuert werden von Port x falls es möglich ist die
Taktlücke nur einen Impuls weit zu machen.
Hi,
die vier Impulse Auslassung könnte ein 74HCT163 Synchronzähler
bewerkstelligen. (Synchronzähler deswegen, weil die schneller sind als
Asynchronzähler.)
Und weiter ...hätte jetzt an eine NAND-Logik mit 74HCT00 gedacht. Damit
lässt sich eine Torschaltung realisieren.
Die NAND-Logik hat immer Priorität. Und damit der MCU-Port.
Es kann dann aber auch sein, dass der MCU-Port den gewünschten Impuls
zum "Glitch" verformt.
ciao
gustav
Ich habe eine Schaltung entworfen:
Ein Zähler wird durch das Freigabesignal an PortX gestartet (über ein
D-Flipflop). Dieser Zähler hält sich an wenn das Zählbit 2 erreicht ist,
also wenn er bis 4 gezählt hat. Der Zähler zählt fallende Taktflanken
des invertierten CLK-Signales. Dies ist nötig damit der Takt beim
aktivieren des Lücken-Mechanismus nicht abrupt vom H-Zustand nach L
geht.
Wenn der Zähler bis 4 gezählt hat hält er sich selber an und er wird
auch zurückgesetzt durch das D-Flipflop. Solange der Zähler zählt halten
das NOR an dessen 2 unteren Ausgängen zusammen mit dem UND das
CLK-Signal auf Masse.
Es kann sein dass ich mich um einen Takt vertan habe am Zählerausgang,
das muss ich nochmal genau aufzeichnen. Auch ist die Startbedingung nach
dem RESET des Systems nicht so wichtig, da sowieso erst die
System-Initialisierung folgt - selbst wenn das anfängliche CLK-Signal
Lücken bekommt durch den Zähler.
Hallo Lück,
die Schaltung ist deshalb recht umfangreich damit auch ein anliegender
H-Pegel beim Takt nicht abgeschnitten wird wenn das Auslösesignal kommt.
Hab im PDF mal noch die Ruhepegel der Signale eingetragen.
Die FF's IC1A & IC1B lösen nur bei einer Flanke am Event-Eingang aus:
IC1A beim Wechsel von H->L
IC1B beim Wechsel von L->H
der Ausgang (2 bzw. 6) des jeweiligen FF's geht dann auf LOW,
durch die Undverknüpfung mit V1/2 geht dessen Ausgang (4) auf High.
Mit der nächsten fallenden Flanke an Clock wird dieses High von IC2A an
dessen Ausgang (2) übernommen, der negierte Ausgang (3) wechselt nach
LOW und schaltet über die Undverknüpfung mit IC3A den Ausgangstakt ab.
Durch den Wechsel des Ausgangs (2) von IC2A nach High wird der
Load-Eingang das Zählers freigegeben, wodurch dieser nun mit jedem Takt
eins weiter zählt bis 15 erreicht wird. Dies wird durch High am
CT-Ausgang (15) signalisiert und setzt mithilfe der Negierung durch V1/4
die FF's IC1A & IC1B zurück in den Ruhezustand. Mit der darauffolgenden
fallenden Flanke an Clock gibt IC2A über IC3A den Ausgangstakt wieder
frei.
Sascha
Danke für deine Mühe Sascha :-)
Das mit dem unklaren Wechsel der Eingangssignal-Flanke hätte ich dir
ersparen können wenn ich mehr Details angegeben hätte.
Doch ich habe vielleicht eine Schaltung gefunden, die möglicherweise mit
nur 2 Bausteinen auskommt. Sie erzeugt aber nur eine Lücke von nur einem
CLK-Impuls (falls sie funktioniert).
Lück schrieb:> Aber du hast mich inspiriert und mir die Symbole für die D-Flipflops> gegeben damit ich was zeichnen konnte :-)
naja habs schnell mit Eagle zusammengeklickt ...
Sascha
Hallo,
Karl B. schrieb:> Thomas E. schrieb:>> macht nach einem Signalwechsel an Pin7 eines Attiny 13a einen Impuls von>> ca. 320ns bei 9,6MHz an Pin2. Feintuning ist mit dem OSCCAL-Register>> möglich. Ist allerdings nicht synchron.
Auf den Vorschlag wurde irgendwie nicht so recht eingegangen, wäre von
der Bauteileanzahl unschlagbar 1x 8Pinner und 100n kondensator, fertig.
Kenne mich mit dem 13a jetzt nicht aus und will nicht erst das
Datenblatt durcharbeiten, da ich meist den Attiny45 verwende würde ich
es damit versuchen, der läuft mit bis zu 20Mhz.
Ungetestetes Gedankenexperiment:
Wenn man da die Clock OutputBuffer Fuse setzt wird das Clock Signal
durchgereicht, also Eingangstakt=Ausgangstakt/Prescaler;
Wenn man dann in der MainLoop schnell hintereinander 2x den Prescaler
wechselt von 1:1 nach 2:1 müsste die beabsichtigte Lücke entstehen.
1
...
2
CLKPR=(1<<CLKPCE);//Takt synchron
3
CLKPR=(1<<CLKPS0);//Takt synchron ab hier halber Ausgangstakt
4
nops..
5
CLKPR=(1<<CLKPCE);
6
//Zusätzliche Lücke da halber Takt.
7
CLKPR=0;//Takt synchron?
8
...
Braucht zwar eine gewisse Vorlaufzeit um den Flankenwechsel auf einem
der anderen Pinne noch auszuwerten, aber bei den Eingangs eingeräumten
Freiheitsgraden in 1x4 2x2 oder 4x1 ist das ja vielleicht nebensächlich.
Wie gesagt ungetestet, habe den Clock Output Buffer bisher noch nie
gebraucht.
Gruß Dominik
Lück schrieb:> Danke für deine Mühe Sascha :-)> Das mit dem unklaren Wechsel der Eingangssignal-Flanke hätte ich dir> ersparen können wenn ich mehr Details angegeben hätte.>> Doch ich habe vielleicht eine Schaltung gefunden, die möglicherweise mit> nur 2 Bausteinen auskommt. Sie erzeugt aber nur eine Lücke von nur einem> CLK-Impuls> (falls sie funktioniert).
das was du beschreibst wird sie tun - genau
Du könntest in die Rückfühung (vom 2. zum 1. FF) auch noch weitere D-FF
einfügen die mit dem Takt gefüttert werden und den Restet des 1. FF um
je einen Takt verzögern.
Sascha
Dominik schrieb:> Auf den Vorschlag wurde irgendwie nicht so recht eingegangen, wäre von> der Bauteileanzahl unschlagbar 1x 8Pinner und 100n kondensator, fertig.Karl B. schrieb:> Zum Finden der Lösungswege müsste man noch wissen, welche Idee> dahintersteckt, bzw. was bezweckt werden soll.> a) Arbeit mit MCU, evtl. mit welcher.
Lösungsvorschlag a) wurde stillschweigend schon direkt am Anfang vom TO
verworfen, also, mit AVR-Features wie zum Beispiel Timer-Interrupt, CTC
etc. zu arbeiten, was die Arbeit wohl vereinfachen würde.
Eine (Logik-)Lösung mit Advanced- und High-Speed TTL Bausteinen wäre im
Zusammenhang mit der 80C31 bzw. 80C51-er Technologie auch irgendwie
"stilechter", muss ich zugeben.
Das geht. Und auf meine Befürchtung:
Karl B. schrieb:> Es kann dann aber auch sein, dass der MCU-Port den gewünschten Impuls> zum "Glitch" verformt.
wurde schon eingegangen. Chapeau!
Lück schrieb:> Dies ist nötig damit der Takt beim> aktivieren des Lücken-Mechanismus nicht abrupt vom H-Zustand nach L> geht.
Eben ein sog. "Glitch".
ciao
gustav
Karl B. schrieb:> Eine (Logik-)Lösung mit Advanced- und High-Speed TTL Bausteinen wäre im> Zusammenhang mit der 80C31 bzw. 80C51-er Technologie auch irgendwie> "stilechter", muss ich zugeben.
Es soll ja retro werden ... aber wird 12MHz-TTL noch produziert ?
Laut Wikipedia ist da einiges veraltet, und bei den Händlern verfügbar
muss es auch sein.
Lück schrieb:> Es soll ja retro werden ...
Ok, war auch mit Kanonen auf Spatzen (außer was den Platzbedarf auf dem
Board betrifft).
Low Power Schottky ok?
Dieser Baustein ist "noch" verfügbar und erfüllt auch die
Timing-Vorstellung, hat darüber hinaus "zufällig" die gleiche
Verdrahtung wie der im obigen Schaltplan ;-)
SN 74LS74AN
Gruß Dominik