TTL Baustein gesucht, 8bit "Counter"

Gast #1759125
Lesenswert?

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.
Angehängte Dateien:
Gast #1759144
Lesenswert?

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
#1759159
Lesenswert?

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.
#1759487
Lesenswert?

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)
Gast #1759790
Lesenswert?

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
#1759876
Lesenswert?

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
int main()
19
{
20
  uint8_t counter;
21
  uint8_t i;
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
66
    OUTPUT_PORT &= ~( 1 << OUTPUT_PIN );
67
  }
68
}
#1760052
Lesenswert?

@  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
#1760053
Lesenswert?

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.
#1760098
Lesenswert?

@ 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.
Gast #1760123
Lesenswert?

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.
Angehängte Dateien:
#1760141
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren