www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT90S4433 und 74HC259


Autor: Alex1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ohne Schaltung und Software kann dir keiner was dazu sagen.

Autor: Alex1 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo...
Entschuldigung...

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

Alex

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wie komme ich auf PIC??
vor_den_Kopf_klatsch...:-)

Autor: Alex1 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Mike (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:
Angehängte Dateien:

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


Peter

Autor: Alex1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Manfred Glahe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Manfred Glahe (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Manfred Glahe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Manfred Glahe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter,

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

MfG  Manfred Glahe

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.