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
Hallo... Entschuldigung... Hier ein Bild von der einfachen Variante. Der 74HC259 direkt am AT90S4433. Alex
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
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.
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
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
hallo, gibts eigentlich irgendwo beispiel-schaltungen für den hc595 und avr(90S oder atmega/attiny)
Ich hab jetzt mal das Datenblatt runtergeladen und gesehen, daß das Latchsignal 0 sein muß zur Übernahme. Anbei der richtige Code. Peter
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.
@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
@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
@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
@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
@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
@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
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.