Forum: Mikrocontroller und Digitale Elektronik TTL Baustein gesucht, 8bit "Counter"


von Michael (Gast)


Angehängte Dateien:

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.

von Chris (Gast)


Lesenswert?

Vielleicht geht es nur mir so, aber ich verstehe beim besten Willen 
nicht was Du möchtest.

von spess53 (Gast)


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

von Peter R. (gelb)


Lesenswert?

Suche mal unter 'programmable counter'. Auswendig weiß ich jetzt nur 
74160 mit 4 Bit, es gibt aber sicher auch moderneres.

Grüße, Peter

von (prx) A. K. (prx)


Lesenswert?

Klingt ein bischen wie ein ladbarer Zähler plus etwas Gedöns drumrum. 
Oder natürlich platzsparend nach einem entsprechend programmierten µC.

von STK500-Besitzer (Gast)


Lesenswert?

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.

von Markus (Gast)


Lesenswert?

Ich plädire auch für einen kleinen µC mit mindestens 10 I/Os 
(Takt-Input+8-Bit-Wert+Output).

Z.B. nen kleinen MSP430

von Karl H. (kbuchegg)


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.

von Peter D. (peda)


Lesenswert?

Ich würde auch mindestens 3 TTL-ICs als nötig ansehen.

Oder einen MC (ATtiny24) oder CPLD (GAL22V10) programmieren.


Peter

von Jens G. (jensig)


Lesenswert?

74HC/HCT40103
Ist zwar CMOS, aber die ttl-kompatible Variante. Sollte wohl 
einigermaßen passen.

von (prx) A. K. (prx)


Lesenswert?

74HC593 ist ähnlich. Offen ist, welche Rolle der "Eingang" genau spielt.

von Purzel H. (hacky)


Lesenswert?

Ich glaube mich an den 74HCT590 .. 592, oder so zu erinnern.

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Ich könnte mir vorstellen, er sucht eine "Eimerkette" mit 
programmierbarer (8-Bit-Wert) Länge.
Dafür hat man die CPLDs oder uCs erfunden...

von Jens G. (jensig)


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)

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Na gut, geb mich geschlagen...

Aber den dürftigen Angaben kann man ja alles hineininterpretieren.

von Michael (Gast)


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

von Karl H. (kbuchegg)


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
}

von Jens G. (jensig)


Lesenswert?

>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?

von Falk B. (falk)


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

von (prx) A. K. (prx)


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.

von Falk B. (falk)


Lesenswert?

@  A. K. (prx)

>"Load". Ausserdem läd der 40103 asynchron.

Der kann auch synchron.

MFg
Falk

von faustian (Gast)


Lesenswert?

74AS867 und ein bisschen Logik evtl...

von Jens G. (jensig)


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.

von Michael (Gast)


Angehängte Dateien:

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.

von (prx) A. K. (prx)


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.

von Jens G. (jensig)


Lesenswert?

der 40103 ist ein 8bit-er, voreinstellbar, rückwärtszählend, einen 
(neg.) Ausgang, ...

von Jens G. (jensig)


Lesenswert?

Beim 40103 ist übrigens alles Active-L - könnte durchaus etwas störend 
sein.
Ach ja - für Freunde von Dezimalzählern gibt's auch den Bruder 40102.

von Falk B. (falk)


Lesenswert?

@Michael (Gast)

>      IMG_0505.jpg
>      624,5 KB, 21 Downloads

Und wieder ein Kandidat für Bildformate

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.