Forum: Mikrocontroller und Digitale Elektronik AT90S4433 und 74HC259


von Alex1 (Gast)


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

von crazy horse (Gast)


Lesenswert?

ohne Schaltung und Software kann dir keiner was dazu sagen.

von Alex1 (Gast)


Angehängte Dateien:

Lesenswert?

Hallo...
Entschuldigung...

Hier ein Bild von der einfachen Variante. Der 74HC259 direkt am
AT90S4433.

Alex

von Peter D. (peda)


Lesenswert?

Das ist doch ein Dekoder, es kann immer nur ein Segment leuchten.

Du mußt einen 74HC595 oder ähnliches nehmen. Da schiebst Du alle Bits
rein und dann ab ins Ausgangslatch.


Peter

von crazy horse (Gast)


Lesenswert?

ne ne, der kann auch als Speicher arbeiten.
Ansonsten fehlt noch die Software, erfahrungsgemäss kommt bei
PIC-Programmen nicht allzuviel feedback, von mir auch nicht.

von crazy horse (Gast)


Lesenswert?

und wie komme ich auf PIC??
vor_den_Kopf_klatsch...:-)

von Alex1 (Gast)


Angehängte Dateien:

Lesenswert?

Hallo...
Hier mal den Code. Bitte nicht so hart rannehmen. Ich versuche nur den
Chip erstmal zu testen. Die Zeiten des Timers weiss ich auch noch
nicht. Das muss ich noch berechnen.

Alex

von Peter D. (peda)


Angehängte Dateien:

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

von Mike (Gast)


Lesenswert?

hallo, gibts eigentlich irgendwo beispiel-schaltungen für den hc595 und
avr(90S oder atmega/attiny)

von Peter D. (peda)


Angehängte Dateien:

Lesenswert?

Ich hab jetzt mal das Datenblatt runtergeladen und gesehen, daß das
Latchsignal 0 sein muß zur Übernahme.
Anbei der richtige Code.


Peter

von Alex1 (Gast)


Lesenswert?

Hallo...

@Peter: ich habe den Code getestet. Funktioniert genau wie meiner, also
nur im demultiplex mode.

Ich weiss auch nicht mehr. Vielleicht versuche ich es mal mit einem
hc595.

Danke.

von Manfred Glahe (Gast)


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

von Peter D. (peda)


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

von Manfred Glahe (Gast)


Angehängte Dateien:

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

von Peter D. (peda)


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

von Manfred Glahe (Gast)


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

von Peter D. (peda)


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

von Manfred Glahe (Gast)


Lesenswert?

@Peter,

habe ich so bislang nicht gesehen. Deine Lösung ist noch besser.

MfG  Manfred Glahe

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.