Hallo zusammen,
Ich möchte gerne mit meinem ATmega48 10 7-Segment-Anzeigen schalten.
Realisiert habe ich dies durch 10 Schieberegister (SN74LS164N) wobei ich
das Clocksignal multiplexe (MC14067BCPG) und so auf die verschiedenen
Schieberegister ausgebe. Mein Problem ist jetzt das ich den Status eines
Schieberegisters nicht halten kann, sprich: wenn ich die Adresse im MUX
ändere, dann ändern sich auch die anderen Anzeigen, obwohl ich
eigentlich dachte wenn kein Signal am Clock liegt, dann wird auch nicht
geschoben oder sehe ich das falsch??
Wäre echt nett, wenn jemand eine hilfreichen Rat für mich hätte...
mfg Heinz
@ Heinz (Gast)
>Realisiert habe ich dies durch 10 Schieberegister (SN74LS164N) wobei ich>das Clocksignal multiplexe (MC14067BCPG)
Und was soll das?
>Schieberegister ausgebe. Mein Problem ist jetzt das ich den Status eines>Schieberegisters nicht halten kann, sprich: wenn ich die Adresse im MUX>ändere, dann ändern sich auch die anderen Anzeigen, obwohl ich
Logisch, dein MUX erzeugt am Ausgang einen ungewollten Taktimpuls. Einer
der Gründe, weshalb man Takte nicht multiplext.
MFG
Falk
Ein anderer Vorschlag wäre toll gewesen außer nur nen Kommentar
loslassen.
Hey Heinz, gib mal noch ein paar Infos an.
z.B. Clocksignal? Das vom AVR, einem seperaten Quarz oder wird der Takt
von nem AVR-Bein durch Software bzw. PWM erzeugt?
Ein digitaler MUX (MC14067BCP = analog) wäre mir ehrlichgesagt ein
bißchen sicherer. Aber schau mal, was der mit seinen Ausgängen macht,
wenn diese nicht durchgesteuert sind (Pegel? oder Hochohmig?)
Im Grunde genommen darf das Schieberegister keinen Wert ohne steigende
Flanke schieben. Also bekommt es offensichtlich irgendwoher noch eine.
Gruß Alexander
hi,
also der Takt ist nicht das Problem, der wird ohne Probleme durchgemuxt.
Aber sobald ich die Adresse ändere liegt an den nicht benutzen Ausgängen
jeweils ein Pegel von 1,2V an (High: 5V). Allerdings nur an den
Ausgängen die auch belegt sind. Könnte dies der Auslöser für das weitere
Schieben sein?
Wenn ja, gibt es eine Möglichkeit dies zu umgehen oder besser gefragt:
Ist dies ein Softwarefehler oder könnte es auch an der Hardware liegen??
Vielen Dank,
mfg Heinz
Die übliche Methode ist nicht multiplexen, sondern die Register einfach
kaskadieren und dann 10 Bytes reinschieben.
Blöd ist nur, daß man beim Schieben dunkel tasten muß, damit die Bits
nicht schon beim Schieben an der falschen Stelle leuchten.
Daher nimmt man besser 74HC595, da kann man im Hintergrund schieben und
dann gleichzeitig ausgeben (latchen).
Peter
@ Heinz (Gast)
>also der Takt ist nicht das Problem, der wird ohne Probleme durchgemuxt.
Das denkst DU!
>Aber sobald ich die Adresse ändere liegt an den nicht benutzen Ausgängen>jeweils ein Pegel von 1,2V an (High: 5V).
Jaja, aber das ist alles andere als ein sauberer LOW-Pegel und eben beim
Umschalten wird ein Taktpuls erzeugt.
>Wenn ja, gibt es eine Möglichkeit dies zu umgehen oder besser gefragt:>Ist dies ein Softwarefehler oder könnte es auch an der Hardware liegen??
Es ist zu 99% ein Hardwarefehler. Wozu der Ganze Aufwand? Machs so wie
alle und es läuft gut. Kaskadier die Schieberegister.
AVR-Tutorial: Schieberegister
MFG
Falk
Die nicht benutzten Ausgänge werden wohl hochohmig geschaltet. Da hängt
der Eingang vom Schieberegister voll in der Luft. Einfach an jeden
Ausgang noch einen 4k7 PullUp dran.
Hallo,
und danke erstmal für eure Beiträge.
@Falk: meine schieberegister besitzen leider keinen QH* Pin der im
Tutorial verwendet wird sondern nur die normalen 8 Ausgänge, dass heißt
dann wohl das kaskadieren schon mal flach fällt.
@lippi: Entschuldige die blöde Frage aber meinst du mit 4k7 4,7kohm?
würde das dann den 1,2V Pegel neutralisieren, oder zumindest so niedrig
machen, dass das Signal nicht mehr als "high" gewertet wird?
mfg Heinz
Der Mux macht hochohmige Ausgänge. Also hängen die entsprechenden
Eingänge der folgenden Stufen in der Luft. Da stellt sich halt irgendwas
ein (ev. Abhängig vom Programm des nächsten Mittelwellensenders).
Der Widerstand nach Masse (pull down) oder High (pull up) zieht die den
Eingang auf ein definiertes Potential. Er darf nicht zu klein werden,
sonst schaft es der Ausgang nicht in die andere Richtung.
Heinz wrote:
> @Falk: meine schieberegister besitzen leider keinen QH* Pin der im> Tutorial verwendet wird sondern nur die normalen 8 Ausgänge, dass heißt> dann wohl das kaskadieren schon mal flach fällt.
Warum sollte es?
Den QH* braucht man nur bei Registern mit Latch.
> @lippi: Entschuldige die blöde Frage aber meinst du mit 4k7 4,7kohm?> würde das dann den 1,2V Pegel neutralisieren, oder zumindest so niedrig> machen, dass das Signal nicht mehr als "high" gewertet wird?
Der 4k7 wird nicht das geringste helfen. Es darf beim Umschalten kein
Pegelwechsel (Flanke) entstehen.
Peter
Hi,
@Peda: Aber so wie ich das im Tutorial verstehe werden über den QH* Pin
des ersten Schieberegisters die Daten zum nächsten Schieberegister
geschoben oder seh ich da irgendwas falsch? Also wie soll ich ohne eine
freie Datenleitung (da es bloß eine Eingangsleitung bei meinem
Schieberegister gibt) die Schieberegister kaskadieren?
Gibt es noch eine andere Möglichkeit ausser den Clock zu enablen um die
Anzeige anzuhalten, weil dann könnte ich einfach die Datenleitung muxen,
was alles viel einfacher machen würde? Hab ich auch schon versucht aber
klappt ja dann mit dem Anhalten nicht, da wenn ich den Clock enable
natürlich alle Anzeigen stehen bleiben. Also wenn es noch eine andere
Möglichkeit geben würde das Schieben zu unterbrechen, ich wäre sehr froh
wenn sie mir jemand mitteilen könnte...
mfg Heinz
@ Heinz (Gast)
>geschoben oder seh ich da irgendwas falsch? Also wie soll ich ohne eine>freie Datenleitung (da es bloß eine Eingangsleitung bei meinem>Schieberegister gibt) die Schieberegister kaskadieren?
Nimm die richtigen Schieberegister 74HC595.
>Gibt es noch eine andere Möglichkeit ausser den Clock zu enablen um die>Anzeige anzuhalten, weil dann könnte ich einfach die Datenleitung muxen,>was alles viel einfacher machen würde?
Nein, weil dann dein anderes Register auch einen Takt bekommt. Einzige
schnelle Lösung wäre die beiden Register paralle zu takten und somit zu
laden. Also ein Pin für Takt, zwei für Daten.
>Möglichkeit geben würde das Schieben zu unterbrechen, ich wäre sehr froh>wenn sie mir jemand mitteilen könnte...
Welche Schieberegister hast du denn genau?
MFG
Falk
hi,
schon mal an einen 74'138 (oder so was) gedacht ?
das ist ein 3-zu-8-encoder (oder so ähnlich).
den könnte man zum takten von 7 oder 8 kanälen nehmen
(ok der hat noch ein paar enable-eingänge, damit kann er "kaskadiert"
werden)
allerdings muss die ausgabe wahrscheinlich per software erzeugt werden,
da man dann kein "taktsignal" sondern eine "adresse" anlegt.
(ich weiß jetzt nicht, vielleicht gehts auch über einen enable-eingang
???)
(kleinschreibung: tastatur=ok, ich=faul, kommentare=bitte verkneifen)
Heinz wrote:
> @Peda: Aber so wie ich das im Tutorial verstehe werden über den QH* Pin> des ersten Schieberegisters die Daten zum nächsten Schieberegister> geschoben oder seh ich da irgendwas falsch?
Der 164 hat kein Latch, also ist QH = QH*
Peter