AT90S4433 und 74HC259

Gast #56994
Lesenswert?

Hallo ...

Ich neu im Bereich von AVRs. Wollte doch mal einen Einsetzen, weil die
doch so gut sein sollen. Aber da habe ich auch mein erstes Problem:
Ich moechte etwa 8 7-Segment Anzeigen ansteuern. Dafuer habe ich mir
einen "BUS" gebastelt. Nicht weltbewegendes. Es wird ein Token mit
7474 durchgeschoben. Dadurch werden die Einzelnen Anzeigen enabled.
Mein Problem liegt aber darin, dass der 74HC259 nur im
decoder/demultiplexer mode arbeitet, obwohl ich laut Datenblatt im
"Latch" Modus bin.

Diese art von Bus hatte ich schon mal aufgebaut mit einem C515 von
Siemens. Mit dem AVR laueft das ding einfach nicht.
Woran koennte das liegen?
Ich habe schon mal den 74HC259 auch direkt angesteuert (ohne Bus).
Funktioniert genau so (oder eher gesagt funktioniert nicht).

Alex
#57001
Lesenswert?

Also in Deinem Code sehe ich nicht durch, ist mir zu kompliziert.


Ich hab hier mal ein Beispiel, wie ich es machen würde.
Das Programm ist nur 16 Worte kurz.

Das Datenblatt habe ich gerade nicht zur Hand, ich gehe mal davon aus,
mit LE=0 wird das Datenbit gehalten und mit LE=1 wird es gesetzt. Läßt
sich aber leicht umdrehen.

Der 7-Segmentcode ist für common Anode, d.h. low-aktiv.

Damit man einigermaßen die einzelnen Adressen durchklappern kann,
müssen die Adreßpins auch an die untersten 3 Bits angelegt werden.

Trotzdem ist natürlich die Ansteuerung eines HC595 um Längen einfacher
und erst recht, wenn man ein SPI on Chip hat (MOSI, SCK).


Peter
Angehängte Dateien:
Gast #57005
Lesenswert?

@Alex,

ich habe mir das Datenblatt mal angeschaut, das MUß funktionieren!
Wichtig ist allerdings das Timing, erst das LatchSel anlegen und dann
erst den Enable zum Übernehmen.
Teste auch nochmal ob der Widerstand tatsächlich nach +5V geht, denn
der ermöglicht erst das Speichern.

MfG  manfred Glahe
#57006
Lesenswert?

@Alex1,


wenn mein Code genau so läuft, dann kann Manfred recht haben.
Im Datenblatt steht nämlich, daß zum Latchen der /MC-Pin ständig high
sein muß.
Also auf Kurzschluß zu anderen Pins prüfen, am besten direkt mit VCC
verbinden oder Dein HC259 ist einfach defekt.


Wie man an meinem Kode sieht, ist das doch nicht so viel mehr
komplizierter.

Aber mit dem SPI ist ein HC595 etwas einfacher und der 4433 hat ja
SPI.

Der HC595 hat auch den Vorteil, daß die Ausgänge gleichzeitig wechseln
und nicht nacheinander. Mit 2* HC595 kann man daher sehr schön ein
8-stelliges Display aufbauen und beim Latchen wechselt dann der
Digitkode und das Stellenregister exakt gleichzeitig.


Peter
Gast #57007
Lesenswert?

@zu HC595,

auch ich benutze nur den 595 weil er direkt mit SPI arbeiten kann.
Aber dieses Register hat einen unangenehmen Nachteil und der ist die
Resetfunktion. Leider lassen sich die Ausgangsregister NICHT mit dem
Reset auf ein definiertes Potential setzen, sondern nur über das Laden
mit einem solchen Wert. Das heißt nach einem Power On sind 2
Operationen fällig um das zu erreichen und das ohne µP, denn der
"lebt" ja noch nicht.
Im Anhang mal die Lösung wie es trotzdem geht (es gibt da einen Type
welches einen direkten Reset auf die Ausgangsregister hat, war aber
extrem teuer und schwer zu beschaffen).
Nach dem Erzeugen des allgemeinen Reset's wird hardwaremäßig ein
Ladeimpuls für die Ausgangsregister erzeugt und der nun 0 Wert der
seriellen Register ins Ausgangsregister überträgt.
Vernünftiger währe es gewesen diesen Reset grundsätzlich auf das
Ausgangsregister zu legen und damit einen definierten Zustand zu
erreichen. Das serielle Rgister könnte dann mit dem µP über den SPI Bus
ebenfalls auf einen definierten Wert geladen werden.

MfG  Manfred Glahe
Angehängte Dateien:
#57008
Lesenswert?

@Manfred,

Deshalb lege ich auch den Enable-Eingang mit auf dem MC und schalte
diesen über einen Pull-Up Widerstand ab, wärend der MC im Reset ist.
Damit sind die Ausgangsstufen des HC595 nach dem Einschalten immmer
hochohmig und nichts (unsinniges) wird angezeigt.


Und erst wenn gültige Daten in den HC595 geschoben wurden, der Pin für
den Enable Eingang als Ausgang und auf low gesetzt wurde, dann wird
auch was (richtiges) angezeigt.



Peter
Gast #57009
Lesenswert?

@Peter

Wenn es nur ums Anzeigen geht ist das auch in Ordnung. Wenn am Ausgang
aber z.B. Treiber für Motoren, Ventile usw. hängen, dann möchte man
doch daß sie sich nach Power On so verhalten wie geplant. Mit
hochohmigen Ausgängen geht das nicht. Mein Vorschlag den Reset aufs
Ausgangsregister wirken zu lassen hat (jedenfalls für mich) keinen
Nachteil. Es gibt ja auch einen Type der das so macht, leider nur viel
zu teuer (wenn ich mich recht erinnere sollte der vor ca. 6 Jahren so
um die 60 DM kosten, und er war kaum zu beschaffen).

MfG  Manfred Glahe
#57010
Lesenswert?

@Manfred

"Mit hochohmigen Ausgängen geht das nicht."



Für Halbleiterrelais ist hochohmig = Aus.

Kommen weitere ICs (z.B. Motortreiber) dahinter, kann man mittels
Pull-Up oder Pull-Down Widerständen bequem festlegen, ob der Power-On
Zustand low oder high sein soll.


Ich benutze den HC595 auch in einer universellen IO-Erweiterung und da
ist dann jeder Ausgang separat als Pull-Up oder Pull-Down jumperbar.

Zusätzlich wirkt noch ein Watchdog auf den Enable-Eingang, d.h. wenn
der MC sich nicht wohl fühlt, oder die Leitung unterbrochen ist, wird
auch der gejumperte Power-On Zustand eingestellt.

Das man beide Polaritäten auswählen kann, war schon oft sehr nützlich
und hat einige sonst nötige Inverter eingespart.


Peter

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