Forum: Mikrocontroller und Digitale Elektronik HC4094 Schieberegsiter Problem


von Läubi (Gast)


Angehängte Dateien:

Lesenswert?

Also, ich wollte eine 7Seg Anzeige mittels des obigen Schieberegisters
Ansteuern (eigentlich sind es 3 hintereinader aber das sollte ja
erstmal egal sein).

Beschaltet ist das ganze folgendermaßen:

OE = +5V
Strobe = +5V
Clk = Port C, Pin3
Data = Port C, Pin 2

Das Problem ist jezt alelrdings das ich es nicht hinbekomme Daten an
die Ausgänge zu legen, vielmehr sind alle Ausgänge immer HIGH.

Das Programm:
-------------

cbi PORTC, 2 ; Data LOW
ldi tmp, 50
outzahl1:
sbi PORTC, 3 ;clk HIGH
dec tmp
cbi PORTC, 3 ;clk LOW
brne outzahl1

Ich hab jezt shcon mehrmals das Datenblatt studiert und auch
nachgemessen das Alles "kontakt" hat, aber ich kriege die Daten
einfach nicht rein...
Laut Wahrheitstabelle und Timing Diagramm sollte das aber alles so
korrekt sein.
Habe das Datenblatt gleich mal angehangen, ich weiß mir gerade nicht
mehr zu helfen :(

von Andreas W. (Gast)


Lesenswert?

Nach dem Du alle Daten rausgeschoben hast, musst Du noch einen kurzen
Impuls auf Strobe geben, damit die Daten auf die SR-Ausgänge gegeben
werden. (siehe Datenblatt S.5)

Gruß
Andreas

von Läubi (Gast)


Lesenswert?

Mit anderen Worten komm ich nicht drum rum die Strobe leitung auch an
dne Controller zu legen? Eigentlich wollte ich gerne mit zwei leitungen
auskommen ... :(

von Rahul D. (rahul)


Lesenswert?

Das Schieberegister hat ein Output-Latch. Du kannst Daten in bzw. sogar
durch das Register schieben, ohne dass sich die Ausgänge ändern.
Wenn Du nur 2 Leitungen benutzen willst musst du das
'164-Schiebergister (' = 74LS, 74HC, 74HCT...) nehmen.

von Läubi (Gast)


Lesenswert?

Hm.. ok, das sit natürlich blöde, könnte ich das Strobe an die
CLockleitung mit dranhängen? Dan müßte ja bei jedem CLock Impuls die
Daten übernommen werden.
@Rahul danke für den hinweis werd ich mir gleich mal ansehen udn beim
nächsten mal mitbestellen.

von Läubi (Gast)


Lesenswert?

Aber das '164 er kann man nicht kaskadieren oder seh ich das nun gerade
falsch?

von Rahul D. (rahul)


Lesenswert?

naja, du kannst den Eingang des folgenden Schieberegisters and den
letzten Ausgang des vorherigen hängen. Anders läuft das beim 4094 auch
nicht.

von Unbekannter (Gast)


Lesenswert?

Hmm, eigentlich müsste das gehen, denn laut Datenblatt ist das
Strobe-Signal nicht Flankengesteuert sondern Levelgesteuert.

So steht es in der Beschreibung, so ist das IEC-Symbol gezeichnet und
so ist es auch in der Logik-Tabelle und im Timing-Diagramm
beschrieben.

Hmm. Komisch.

von Läubi (Gast)


Lesenswert?

Das meine ich doch auch, solange Strobe HIGH ist solten die Daten doch
an den Ausgang durchgereicht werden ....

von Manfred Glahe (Gast)


Lesenswert?

Das ist auch so, aber die Anzeige würde doch die unsinnigen Zustände
auch anzeigen. Will er das?

Manfred Glahe

von Läubi (Gast)


Lesenswert?

Naja das Menschliche Auge ist träge ;)
Da ich die Anzeige nur einmal beschreibe (z.b. das Bimuster für ne 5
reinschiebe) udn dan vileicht 5 Minuten nix mehr mache könnte ich
zugunsten das ich nur zwei Leitungen brauche, das "unsinnige
anzeigen" auf der Segemntanzeige in den paar ms verkraften.
Die Anzeige wird ja auch nicht gemultiplext oder so, sondern an jedem
der 8 Ausgänge hängt halt ein Segment der Anzeige, sodas nach dem
reinschieben auch dauerhaft das zulezt gesnedet Bitmuster drine stehen
sollte.
Aber leider hab ich immer alle Ausgänge auf High heißt alle Segmente
Leuchten... obwohl ich mittels des obigen programms erstmal alles auf
"0" setzen wollte damit die Anzeige aus ist.

von Rahul D. (rahul)


Lesenswert?

Philips Datenblätter...
Unter ti.com findet man ein "shöneres".
http://www-s.ti.com/sc/ds/cd74hc4094.pdf

Ich gehe davon aus, dass STRobe auch eine Flanke braucht.
Im functional diagramm sieht man schön die drei Teile des Bausteins.
Offensichtlich ist aber in sämtlichen Datenblättern der gleiche
"Fehler".

von Simon K. (simon) Benutzerseite


Lesenswert?

ich verwende immer die MOS4094 von reichelt. sind meist CD4094. kannst
ja mal in das datasheet gucken. allerdings stimmen die timings nich
mehr.

strobe kannst du an clock hängen. Output Enable hängst du auf Vdd,
sodass die Ausgänge nie High-Z sind.

von Läubi (Gast)


Lesenswert?

Hm... das sit wirklich aergerlich, hat jemand ne Idee wie ich das
Problem umgehn kann ohne jezt nue Bausteine besorgen zu müßen?
Ich hab eben einfach mal Strobe an die Clock Leitung mit drangehangt
aber das hat auch nicht wirklich geholfen :(

von Simon K. (simon) Benutzerseite


Lesenswert?

Woas? Bei mir ging das, überprüf lieber nochmal... grübel

von Läubi (Gast)


Lesenswert?

Ja ich werd das nochmal auseinader pfluecken, fehlt nurnoch das HC und
MOS dinger unterschiedlich ticken ....

von Unbekannter (Gast)


Lesenswert?

@Rahul:

> Ich gehe davon aus, dass STRobe auch eine Flanke braucht.
> Im functional diagramm sieht man schön die drei Teile des Bausteins.
> Offensichtlich ist aber in sämtlichen Datenblättern der gleiche
> "Fehler".

Die Datenblätter sind definitv richtig. Egal welcher Hersteller,
überall steht in den Datenblättern dass Strobe nicht
Flankengetriggert ist.

Also wenn Strobe auf High ist, müssen die Ausgänge transparent sein.

von Läubi (Gast)


Lesenswert?

Also kann man sagen wenn OE + Strobe auf VDD sind dann muß alles was ich
reinschiebe auch am Ausgang erscheinen, ergo hab ichs irgenwo anders
verbockt?

von Andreas W. (Gast)


Lesenswert?

Japp, der Unbekannte hat recht.
Habe gerade ein Datenblatt von ST angeschaut, da sieht man ein bisschen
mehr zum inneren Aufbau...

von Läubi (Gast)


Lesenswert?

Hat eigetlich jemand zufällig gerde son teil rumleigen udn könnte mal
nen Testaufbau machen? Ich komm hier einfach nicht weiter, an den Chips
sollte es nicht leigen die sind neu und warum sollte an Drei Chips das
selbe Problem auftreten das sit dann doch etwas unwarscheinlich... :(

von A.K. (Gast)


Lesenswert?

Korrekt. Die Datasheets sind eindeutig, das Programmfragment sieht auch
ganz manierlich aus. Wenn auch die Richtungs der Pins (DDRC) stimmt,
dann ist wohl die Hardware dran.

Mach mal die Schleife ggggggaaaaaaannnnnnnzzzzzz langsam zum mitlesen.
Also 1sec Intervalle und Messgerät oder LEDs an die Pins.

von Läubi (Gast)


Lesenswert?

---
ldi tmp, 0b11110011
out DDRC, tmp
---
Sollte im Prinzip hinhauen, ich kan die Ausgänge ja High/Low setzen
(und messen) werde mir mal eine Art stekcer mit LED löten und über
Timer das ganze extrem verlangsammen, leider muß ich gleich nochmal los
zur Uni werde also erst heute Abend "berichten" können.

von Läubi (Gast)


Lesenswert?

Ach ja, Device sit ein Mega8 ich hoffe mal das der nciht irgenwelche
Spezialfunktion wie der Mega16 hat das ich erst JTAG deaktivieren muß
oder?

von A.K. (Gast)


Lesenswert?

"ldi tmp, 0b11110011
out DDRC, tmp"

Definiert 2+3 als Eingang und den Rest als Ausgang. Hmm.

von crazy horse (Gast)


Lesenswert?

Funktioniert definitiv mit OE=1 und STR=1, also transparent.

von Läubi (Gast)


Lesenswert?

Ich krieg zuviel du hast Recht, udn oh WUnder oh Wunder... auf einaml
tut das Regsiter seine Arbeit, manchmal steht man echt davor und sieht
den Wald vor lauter Bäumen nicht!

Trozdem Danke an alle Beteiligten, wenigstens habe ich jezt die
FUnktionsweise des Schieberegsiters mal richtig verstanden schäm

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.