Für bis zu 20 SSG würde ich einen Bus (I2C, SPI,...) verwenden.
Du wirst weitere Ein- und Ausgänge für eine Steuerung brauchen.
Wenn du noch nicht mit einem Bus arbeiten willst, verwende am Anfang LEDs
Nun möchte ich eine Sieben-Segment Anzeige (beliebig [max. 20Stück] erweiterbar) realisieren. Würde am liebsten vor jedem Segment eine art Speicher legen, dieser wird dann passend Beschrieben und mein RN-Control (ATMega16) wechselt dann den Speicher usw.
So nun zwei Fragen: Ist sowas überhaupt sinnvoll und wenn ja was für ein Speicher verwenden? Oder soll doch eher ein BUS (z.B. SPI) verwendet werden? -->sehe das Problem bei einem Bus das es Software technisch schwere zu Handhaben ist, ergo ich habe erst vor zwei Wochen angefangen und möchte nicht gleich alles zu schwer machen beim Programmieren [Bascom].
Zweite Frage: Was ist wenn gerade eine neue Ausgabe auf die Speicher geladen wird und der Controller aber aus irgendeinem Grund (z.B. Interrupt) unterbrochen wird und die Interrupt Routine etwas länger dauert dann wird ja völliger mist angezeigt, wie verhindert man sowas? Oder ist das einer der größten/ausschlaggebenden gründe nicht auf diese weise die Segmente anzusteuern?
Wäre dankbar wenn ihr mir etwas bei diesem Problem hälfen könnte...
Nochetwas ich möchte alle Pins des Controllers nur so gering wie möglich mit Strom belasten.
Für bis zu 20 SSG würde ich einen Bus (I2C, SPI,...) verwenden.
Du wirst weitere Ein- und Ausgänge für eine Steuerung brauchen.
Wenn du noch nicht mit einem Bus arbeiten willst, verwende am Anfang LEDs
Ich empfehle, sofehrn du ein Steckbrett besitzt, erst einmal eine bis zwei Segment Anzeige darauf zu testen. Somit hast du es später auch beim verdrahten leichter haben.
Wenn du z.B. die Zahlen von 0-9 anzeigen willst, kannst du im Programm eine Art Tabelle erstellen, bei der jede Ziffer vorgegeben ist. Somit musst du im Programm nur noch schreiben "1", dann wird auch einfach eien 1 anzgezeit. Somit erspartst du dir ne Menge Schreibarbeit.
Mfg JeyBee
Am Anfang habe ich es so gemacht und es hat auch sehr schnell funktioniert:
Du nimmst als Speicher ein Schieberegister. Diese Register haben den Sinn, dass Du die Daten hineinschiebst (nacheinander, also seriell), und sie geben dann auf Befehl die Daten parallel aus (d.h. alle gleichzeitig).
Das einfach daran ist, Du kannst die Schieberegister nacheinander schalten, und dadurch hast Du zwar ne Art Bus, aber kaum Softwareaufwand.
Und mach Dir in diesem Fall keine Sorgen ums Unterbrechen, wenn Du einen Interrupt zwischenrein kriegst, ändert das nichts, aus zwei Gründen:
- Der Interrupt ist sehr kurz
- Das Schieberegister schiebt nur auf Deinen Befehl, also schiebt es bei einem Interrupt eben mal 2ms lang nichts.
Ich hab zwar keine 7-Segment-Anzeigen verwendet, aber LEDs, das kommt von der Anzahl aufs selbe raus, ich hatte dann eine Matrix von insg. 60 LEDs, und konnte ein Bild (d.h. 60 mal schieben) innerhalb weniger ms aufbauen, so dass ich sogar "Filme" abspielen lassen konnte, ohne dass man Flackern, o.ä. gesehen hätte.
Für genauere Infos und Hilfen einfach hier schreiben oder an mich wenden.
Danke für die schnelle Info. Also die eigentliche Verdrahtung (Vorwiderstände, Spannungsversorgung/regelung) stellt nicht so das große Problem da...mein Vater ist Elektroniker von Beruf der kann mir notfalls helfen. Diverse Sockel, verschiedene Platinen und Kleinteile sind auch alle vorhanden...
Mein eigentliches Problem ist wie schon genannt die genau Ansteuerung (I2C, SPI...) und die Umsetzung in der Bascom (Bascom-AVR).
Momentan läuft es darauf hinaus dass die Ansteuerung per Schieberegister realisiert wird.
Meine Fragen:
- Ist der SPI der richtige Port?
- Ist eine Tabelle und die Ansteuerung des SPI Port für einen Anfänger zu schwer?
- Was für ein IC muss ich verwenden? z.B. der 74HCT595 kann laut Datenblatt nur 70mAh insgesamt schalten. Würde aber gerne mind. pro Ausgang 20mAh (insgesamt 160mAh). Gibt es passende ICs die höhere Ströme vertragen? Oder muss ein Transistor hintergeschaltet werden?
Also ich empfehle ein normales Schieberegister, das hat dann keinen Bus, sondern nur die drei Eingänge: Data, Clock und Output_Enable. Hinten dran dann ein Treiber-IC (ULN2803), und daran dann die LEDs/Segment-Anzeigen.
Fertig.
Also ich habe nun mal ein Schaltplan entworfen. Dazu habe ich noch einige Fragen.
1. Gehört der Eingang SER vom 74HC595 an MOSI des Controllers?
2. Darf ich RCK an jeden beliebigen Pin hängen und dieser Pin wird dann einfach kurz von Low auf High geschaltet? (Hier wurde er auf PB0 gelegt)
3. Ist es gut wenn ich ein 100nF Kondensator zwischen G und SCL lege als Stabilisierung?
4. Pin 9 vom IC8 (QH*) kann frei bleiben oder?
5. Wenn ich noch ein Eingang auch per Registerverschiebung anschließen möchte wie wird der dann angeschlossen?
6. Kann ich die Schaltung noch vereinfachen, vorallem wegen den Widerständen?
Im Anhang ist der Schaltplan. Dies würde ich einfach auf einer Lochrrasterplatine machen. Wie gesagt kommen evt. noch weitere vier Module drauf und ein weiterer Eingang zur Tastenabfrage und evt. noch ein Ausgangsport um ext. Lampen anzusteuern (per PWM). Da wäre es halt geschickt Bauteile und verbindungen einzusparen...
Danke für die Hilfe
Hat keiner eine Antwort?
hmmm ... also,
die Schieberegister kannst Du an MOSI und SCK anschließen
und die SPI benutzen, musst Du aber nicht.
Du kannst auch 2 Beliebige Pins nehmen und einfach
den Wert synchron ausshiften.
Beides ist möglich.
Nen Kondensator an RCK halt ich für keine gute Idee ...
Signalleitungen würd ich nicht puffern, das versaut Dir nur die Flanken.
Dein µC sollte den Haltestrom schon bringen.
IC8 QH bleibt offen, es sein denn Du willst n weiteres Schieberegister
anhängen.
Die Schieberegister haben Ausgänge, ich würd sie nicht mit Eingängen mischen.
Wenn Du noch andere Verbraucher schalten willst kannste das
klaro über weitere Register machen ... entsprechende Treiber natürlich
mit dazu.
Vereinfachen ... hmmmm ... mal abgesehen die Geschichte einfach
per Multiplex zu betreiben fällt mir keine Vereinfachung ein. Dann
brauchste halt die Vorwiderstände nur einmal für den Bus.
Vor den Erfolg haben die Götter den Schweiß gesetzt
Also ich will es schon per Hardware SPI realisieren, damit ich das ansteuern verschiedener Busarten lerne. Also sollte es richtig sein das SER an MOSI kommt und SCK an SCK.die Schieberegister kannst Du an MOSI und SCK anschließen
und die SPI benutzen, musst Du aber nicht.
Du kannst auch 2 Beliebige Pins nehmen und einfach
den Wert synchron ausshiften.
Beides ist möglich.
die Kondensatoren an den ICs sind zwischen GND und SCL [+5V] gelegt und nicht auf RCK. Ist vllt. etwas schlecht von mir gezeichnet gebe ich zu. Ist aber mein erster erstellter Schaltplan. Habe ich jetzt eigendlich grundlegende Fehler gemacht wie der Schaltplan strukturiert ist?Nen Kondensator an RCK halt ich für keine gute Idee ...
Danke, das wollte ich genau hören.IC8 QH bleibt offen, es sein denn Du willst n weiteres Schieberegister
anhängen.
Mhmm wie schließe ich dann meine Taster an?Die Schieberegister haben Ausgänge, ich würd sie nicht mit Eingängen mischen.
Bin dir sehr dankbar für deine Antwort.
Lesezeichen