Hallo zusammen,
ich suche einen TTL Baustein der folgende Aufgabe erfülen soll.
Ich gebe ein Takt hinein und parallel 8bit. Der Ausgang sollte soviele
Takte high bleiben, wie parallel hinein geladen wurden, danach wieder
low.
Wie nennt sich solch ein Baustein? Kennt jemand was brauchbares?
Danke schön schon mal,
hoffe jemand kann mir helfen.
Hi
>Vielleicht geht es nur mir so, aber ich verstehe beim besten Willen>nicht was Du möchtest.
Nach längerem Überlegen würde ich auf eine Rückwärtszähler mit Preload
tippen. Als ein IC fällt mir da nichts ein. Aber mit 2 74xx92 oder 93
könnte es gehen.
MfG Spess
Das müsste ein Binärabwärtszähler sein.
Guck mal bei NXP.com im der Logic-Abteilung.
Es gibt Zähler, die in beide Richtungen zählen können und denen man
einen Wert vorgeben kann.
Ich denke nicht, dass ein Zähler direkt das ist was er haben möchte.
So wie ich das verstanden habe, möchte er beispielweise
eine binäre 5 anlegen, woraufhin die Baugruppe für die nächsten 5 Takte
ein High Signal erzeugt.
eine binäre 67 anlegen, woraufhin die Baugruppe für die nächsten 67
Takte ein High Signal erzeugt.
Hmm. Ein 9 Bit Rückwärtszähler müsste das können.
9 Bit deshalb weil das 9. Bit der Ausgang ist und das ganze darauf
basiert, dass bei einem Unterlauf über 0 drüber das 9. Bit dann seinen
Pegel ändert.
Will ich 67 Takte haben, lade ich die 67 (oder 66?) in den Zähler. Das
9. Bit ist dann low. Während des runterzählens ist es immer noch low bis
die 0 erreicht ist. Beim nächsten Zählvorgang erfolgt der Unterlauf und
das 9. Bit wird high.
Summa summarum: Nach der eingestellten Anzahl an Takten ändert das 9.
Bit seinen Pegel.
So in etwa, einfach nur als Idee präsentiert.
Unklar ist: Was soll passieren, wenn die Taktanzahl geändert wird,
während der Zähler noch am zählen ist? Soll sich der ganze Vorgang
periodisch wiederholen oder ein Einmalereignis sein?
Ich denke allerdings, dass ein kleiner µC die wahrscheinlich deutlichst
einfachste Lösung für das Problem darstellt.
nee - nix Eimerkette (Schieberegister). Er will doch einen 8bit-Wert
laden, und dann abwärts zählen - also typischer Rückwärtszähler mit
Preload-Eingängen. Man kann ihn also mit Wert X laden, und dann zählt er
mit jedem Takt rückwärts X-mal bis 0 - solange bleibt der Eingang auf H
(oder L - kann mann sich beim 40103 aussuchen)
Karl heinz Buchegger schrieb:> eine binäre 5 anlegen, woraufhin die Baugruppe für die nächsten 5 Takte> ein High Signal erzeugt.> eine binäre 67 anlegen, woraufhin die Baugruppe für die nächsten 67> Takte ein High Signal erzeugt.
Sorry, wenn ich mich nicht ausreichend konkret ausgedrückt habe, aber
Karl Heinz hat genau verstanden, was ich machen möchte. Ich werde mir
jetzt mal die verschiedenen Lösungsansätze anschauen. Den 74hc160 hatte
ich mir auch schon mal rausgesucht, sind halt nur 4bit... kann man ja
vielleicht kaskadieren.
Besten Dank an alle, ich melde mich weider, wenn ich die Vorschläge
verifiziert habe.
MfG, Michael
Michael schrieb:> Karl heinz Buchegger schrieb:>> eine binäre 5 anlegen, woraufhin die Baugruppe für die nächsten 5 Takte>> ein High Signal erzeugt.>> eine binäre 67 anlegen, woraufhin die Baugruppe für die nächsten 67>> Takte ein High Signal erzeugt.>> Sorry, wenn ich mich nicht ausreichend konkret ausgedrückt habe, aber> Karl Heinz hat genau verstanden, was ich machen möchte.
Ich denke andere haben das schon auch verstanden. Ob es allerdings einen
einzelnen IC dafür gibt ....
Du suchst eine diskrete Schaltung dafür
1
#include<avr/io.h>
2
3
#define TRIGGER_PORT PIND
4
#define TRIGGER_DDR DDRD
5
#define TRIGGER_PIN PD0
6
7
#define OUTPUT_PORT PORTD
8
#define OUTPUT_DDR DDRD
9
#define OUTPUT_PIN PD1
10
11
#define CLOCK_PORT PIND
12
#define CLOCK_DDR DDRD
13
#define CLOCK_PIN PD2
14
15
#define COUNTER_PORT PINB
16
#define COUNTER_DDR DDRB
17
18
intmain()
19
{
20
uint8_tcounter;
21
uint8_ti;
22
23
TRIGGER_DDR&=~(1<<TRIGGER_PIN);
24
CLOCK_DDR&=~(1<<CLOCK_PIN);
25
COUNTER_DDR=0xFF;
26
27
OUTPUT_DDR|=(1<<OUTPUT_PIN);
28
29
OUTPUT_PORT&=~(1<<OUTPUT_PIN);
30
31
while(1){
32
33
// wait for 0 - 1 on Trigger Port
34
while(!(TRIGGER_PORT&(1<<TRIGGER_PIN)))
35
;
36
37
// get the intended counter value
38
counter=COUNTER_PORT;
39
40
// wait for 0 on clock
41
// output should go high with the first raising clock edge
42
while(CLOCK&(1<<CLOCK_PIN))
43
;
44
45
// count the clock pulses until
46
// the match the intended counter value
47
48
for(i=0;i<counter;++i){
49
// wait for 0->1 (raising edge) on clock
50
while(!(CLOCK_PORT&(1<<CLOCK_PIN)))
51
;
52
53
OUTPUT_PORT|=(1<<OUTPUT_PIN);
54
55
// wait for 1->0 (falling edge) on clock
56
while(CLOCK&(1<<CLOCK_PIN))
57
;
58
}
59
60
// wait for another 'low' cycle on the clock to complete
61
// the last clock pulse
62
while(!(CLOCK_PORT&(1<<CLOCK_PIN)))
63
;
64
65
// that's it, enough clock pulses counted, output low again
>Ich denke andere haben das schon auch verstanden. Ob es allerdings einen>einzelnen IC dafür gibt ....
Vielleicht stelle ich mich nur etwas dusslig an, wenn es ums Verstehen
des Problems geht. Aber sollte der 74HC/HCT40103 nicht genau das sein,
was gesucht wurde?
@ Jens G. (jensig)
>Vielleicht stelle ich mich nur etwas dusslig an, wenn es ums Verstehen>des Problems geht. Aber sollte der 74HC/HCT40103 nicht genau das sein,>was gesucht wurde?
Fast. Braucht man noch einen BCD to binary Dekoder, um die Taktanzahl
dezimal eingeben zu können. Die Jugend von heute kann ja nicht mehr
Binärzahlen lesen ;-)
MfG
Falk
Nicht ganz, denn alle diese Zähler laden permanent bei aktivem
Ladesignal, d.h. sie fangen erst an zu zählen, wenn der Eingang wieder
inaktiv ist. Folglich muss noch etwas Logik zwischen "Eingang" und
"Load". Ausserdem läd der 40103 asynchron. Wenn der Ausgang synchron mit
dem Takt starten soll, dann ist man mit einem synchron ladenden Zähler
wie dem '592 einfacher dabei.
@ Falk Brunner (falk)
>Fast. Braucht man noch einen BCD to binary Dekoder, um die Taktanzahl>dezimal eingeben zu können. Die Jugend von heute kann ja nicht mehr>Binärzahlen lesen ;-)
Nun, da muß ich wohl was beim Zwischen-den-Zeilen-Lesen etwas überlesen
haben ;-)
>@ A. K. (prx)>>"Load". Ausserdem läd der 40103 asynchron.>Der kann auch synchron.>MFg>Falk
So isses - je nach Pegel an den Steuereingängen.
Ich hab das Problem nochmal aufs grundlegende aufgedröselt, siehe Bild.
Wenn ich kein voreinstellbaren 8bit Zähler bekomme, der rückwärts zählen
kann, könnt ich ja auch nen 4bit rückwärts Zähler nehmen. Und dann halt
nen 8xOR oder halt mehrere OR entsprechend zusammen schalten.
Michael schrieb:> Wenn ich kein voreinstellbaren 8bit Zähler bekomme, der rückwärts zählen> kann,
Wie hier schon x-mal aufgeführt wurde gibt es wehr wohl diverse
voreinstellbare 8-Bit Zähler, die sogat exakt dieses von dir skizzierte
OR-Gate bereits enthalten.
Was sie alle nicht enthalten ist eine Logik, die aufgrund einer
positiven Flanke laden.