Hallo zusammen! Ich erarbeite mir gerade ein Schaltungs- und Platinenlayout für einen Atmega µC mit 16 Ein- und 16 Ausgänge über je zwei Schieberegister, angesteuert über I/O Pins (nicht über SPI). Für die Ausgänge fällt meine Wahl im Moment auf das 74HC595 (mit ULN2803 als Treiber f. Relais). Das AVR-Tutorial: Schieberegister habe ich inzwischen mehrfach hoch und runter gelesen um die ersten Grundlagen zu verinnerlichen. Zunächst stellt sich mir eine grundsätzliche Frage. Brauche ich überhaupt einen µC Pin zum Reset des Schieberegisters (SCL)? Ich kann doch einfach auch alle Nullen schrittweise hineintakten, bevor ich durchschalte (RCK), oder? An der Stelle >Achtung beim Startup! > >Die Ausgänge des '595 führen beim Einschalten undefinierte, also zufällige >Pegel! Und der Eingang ¬SCL löscht nur die Schieberegister (= >unnütz, um mit ¬RESET zu verbinden). stellen sich mir ein paar spezielle Fragen. Wenn beim Neustart (z.B. nach Stromausfall) die 595er irgendeinen Pegel an den Ausgängen haben, dann wäre dies nur für kurze Zeit, da eine Intitialisierung durch die µC Software erfolgen soll, bei der 0 auf alles durchgeschoben und durchgeschaltet wird. Wäre diese kurze Zeit trotzdem ausreichend um ein Relais oder einen Stromstoßschalter zum Zucken zu bringen? Wenn nicht, dann wäre das kein Problem. Falls das kurzzeitig anliegende zufällige Ausgangssignal beim Neustart Probleme macht wären >definierte Pegel beim Einschalten unerlässlich und ich muss >¬OE beschalten. > - Entweder mit einem weiteren Mikrocontroller-Ausgang (der mit einem externen > Pull-Up-Widerstand zu beschalten ist und nach dem ersten Durchschieben > dauerhaft auf LOW gelegt wird) Verstehe ich, die 595er erst nach der Initialisierung scharf schalten :) > - Oder mit einer RC(D)-Kombination, die die Ausgänge für eine gewisse Zeit auf > Tristate hält. Spart ein Mikrocontroller-Pin. Verstehe ich zumindest im Ansatz. Aber wie sieht das konkret aus? Ist der Reset des µC irgendwie einzubinden, wie im Tutorial im Zusammenhang mit SCL angedeutet? Bei den Schaltplänen mit 595ern die ich bisher gefunden habe lag OE eigentlich immer auf Masse. >Obendrein sind, wie sonst am Mikrocontroller, die betreffenden Ausgänge mit >externen Pull-Up- oder Pull-Down-Widerständen zu beschalten. Was ist hier mit "die betreffenden Ausgänge" gemeint? Die µC Pins, die das Schieberegister steuern, also vor allem SCL, ggf. OE, und evtl sogar Serial in und Clock? Oder sind sogar noch die Ausgänge des Schieberegisters gemeint? Bei den 595er Plänen die ich kenne ist mir nichts besonderes dahingehend aufgefallen. Ich würde mich sehr freuen wenn jemand ein paar kurze Antworten für mich übrig hätte :) Im Voraus vielen Dank für eure Hilfe. Viele Grüße, Michael
Michael W. schrieb: > und ich muss > >>¬OE beschalten. Der 595 ist leider eine Fehlkonstruktion bez. Reset, aber das ist nun einmal nicht zu ändern. Mir einem externen Reset wird nur das Schieberegister gelöscht, aber nicht das Ausgangsregister, dazu bräuchte man zusätzlich einen Impuls an RClk, aber den Eingang muss man vom Controller ansteuern um zu vermeiden, dass das Durchtakten an den Ausgängen erscheint. Es bleibt daher nur, /OE mit dem invertierten /Reset zu verbinden (oder mit einem Controllerausgang mit Pullup, der nach Reset ein Eingang ist) und mit Pullups/Pulldowns dafür zu sorgen, dass ohne /OE nichts eingeschaltet wird. Georg
Das sind viel zu viele Frage auf einmal, verdau erstmal die ersten Antworten und dann stell die noch offenen Fragen, aber nicht alle auf einmal, sondern halte Dich daran: Man frisst Vorspeise, Hauptspeise und Nachtisch nicht alles auf einmal, sondern eins nach den andern. Vielleicht hilft die Beschreibung einer Schrittfolge: Nach dem Einschalten des Kontrollers sind alle seine Ausgänge erst einmal hochohmig. Ob das ertragen wird, muss man anhand der Beschaltung klären. Der 595 bräuchte unbedingt erst einmal shiftclock und latchclock auf Null (pulldown)damit beim Aufwachen des Kontrollers keine pos.Flanke entstehen kann, die ungewolte Aktivität auslöst. Ob OE aktiv sein darf und welche Werte Qa bis Qh haben sollen bestimmt der angeschlossene Kram. 1.Schritt des Kontrollers: mit reset, den Zähler des SRG auf low setzen und dann wieder auf high. 2. Schritt: Bit anlegen (zuerst die Folge eingeben, die der angeschlossenen Schaltung mit Sicherheit nicht wehtut, zum Beispiel alle Stellen aus und alle Segmente aus, wenn es sich um ein 7-Segment Display handelt. 3.Schritt: shift Clock aus den pull-down-Zustand anheben (pos Flanke) und wieder zurück. also serielles Bit aufnehmen 2 und 3 achtmal. bis das 8-bit-byte geladen ist. Dann latch clock aus pull-down anheben und wieder senken. Damit die daten ans Latch übergeben. 4. wenn OE noch auf high ist, oder pull up, jetzt OE auf low.
:
Bearbeitet durch User
Michael W. schrieb: > Wäre diese kurze Zeit > trotzdem ausreichend um ein Relais oder einen Stromstoßschalter zum > Zucken zu bringen? Ja. Ein Quarz braucht mehrere ms zum Anschwingen, die Resetzeit wird dann noch um einen Sicherheitsaufschlag höher gewählt, z.B. 100ms. Relais können schon ab 1ms schalten.
Hallo Michael, Eigentlich berühren Deine Fragen meiner Ansicht nach einige etwas heikle (entwicklungstechnische) Themen. Der Reset via SCL ist zum Startup nicht unbedingt notwendig weil man die Möglichkeit hat, anfangs mit dem OE- die Ausgänge zu deaktivieren. Der MCU braucht nur alle Ausgänge auf NULL stellen und dann erst den OE- zu aktivieren. Dabei sparst Du Dir einen Port Pin bzw. Steckerbelegung mit dem SCL Pin. Das Problem mit dem SCL Eingang ist, dass nur das erste Shift-Register davon beintroffen ist. Das zweite behält seinen jeweiligen Zustand. Der heikle Teil besteht in der Frage wie sich Dein System im Fehlerfall verhalten muß. Da das Shiftregister die Datenzustände speichert, behält es seinen Wert dauerhaft auch wenn die Steuerung ausfällt. Wenn Du z.B. Mit den Ausgängen Lasten wie Heizungen, Motoren steuern willst, kann ein Fehler unter Umständen gefährliche Folgen nach sich ziehen. Dehalb empfiehlt sich ein Hardware Watchdog der die Ausgänge unabhängig von der Steuerung durch z.B hochziehen des OE- deaktiviert. Ich habe den Eindruck dass Du Dir darüber schon Gedanken gemacht hast. Auch Fail-Safe Ausgangs-Schutzschaltungen werden manchmal eingesetzt um die Sicherheit zu erhöhen. Allerdings nichts in der Welt ist perfekt. Eine gewisse Sicherheit kann man erreichen den OE- Pin durch eine Schutzschaltung dynamisch zu steuern. Man könnte z.B einen FET am GATE mit mittels einer geigneten Beschaltung mit einer gepulsten Spannung Kondensator getrennt vom MCU steuern. Wenn sich der MCU aufhängen sollte, dann schaltet der FET automatisch nach kurzer Zeit ab. Allerdings darfst Du dazu keinen Interrupt nehmen weil unter Umständen auch wenn das Hauptprogramm hängt, die Timer Interrupts weiterfunktionieren. Irgendwie gefällt mir auch weniger dass sich die Ausgangszustände beim HC 595 nicht zurücklesen lassen. Ein IO-Expander wie PCA9554 oder MCP23008 ist da günstiger weil man elektrisch aktiv, die augenblicklichen Pin-Zustände jederzeit abfragen kann. Besser noch wäre, den Schaltzustand von der Last her durch Optocoupler zurückzuführen. Wie gesagt, rate ich Dir Beim Design Deiner Schaltung von den Gesammtrahmenbedingen auszugehen und Dir überlegen was in den einzelnen Fehler Zuständen passieren darf und dann Deine Schaltung dementsprechend zu konzipieren. Bezüglich dem Gebrauch von Pull-Ups oder Pull-Down will man verhindern dass Schaltelemente wie CMOS oder MOSFETS im Falle eines Versagens der Steuerung selber Einschalten können. Das ist der Fall wenn der Kontroller im RESET ist und alle Port Pins hohe Impedanz haben. Dann kann es passieren dass sich an den extrem hochohmigen MOSFET oder CMOS Eingängen unbeabsichtigte Spannungen durch Ladungseffekte oder Leckströme aufbauen können und sich Lasten dann unbeabsichtigt einschalten können. Entsprechende Widerstände schaffen in einem solchen Fall definierte Schaltzustände. Im Falle des HC595 brauchst Du nur Schutzwidersände nach Masse wenn Du hochohmige Lasten wie MOSFETS steuerst. Beim ULN2803 brauchst Du die wegen der eingebauten Ableit und Serienwiderstände an den Eingängen natürlich nicht. Im einfachsten Fall würde ich sicherstellen wollen, dass der OE- beim Einschalten vor der Initialisierung des MCUs immer durch Einsatz eines Pull-Up Widerstand hochgelegt wird. Dann können sich Deine Lasten nicht selber einschalten wenn die Datenspeicherzellen im HC595 nach dem Einschalten undefiniert sind. Auch rate ich Dir den Watchdog einzusetzen, so dass sich im Fehlerfall beim Ausfall des MCUs die Ausgänge erst nach dem Restart des MCUs wieder einschalten können weil der OE durch den Pullup automatisch auf H geht und die Ausgänge deaktiviert. Gruß, Gerhard
:
Bearbeitet durch User
Hallo zusammen, vielen Dank für eure Unterstützung. Ich werde im Folgenden auf die jeweiligen Beiträge eingehen. Georg schrieb: > Der 595 ist leider eine Fehlkonstruktion bez. Reset Schient mir auch irgendwie so. Aber es ist ja lösbar, wenn auch vielleicht umständlicher als eigentlich nötig :/ Peter R. schrieb: > Das sind viel zu viele Frage auf einmal Ich versuchs nochmal übersichtlicher: a) Brauche ich zwingend einen µC Pin für SCL? Ich kann die Nullen doch auch in mit Serial In und Clocksignal in das Schieberegister hineinschieben anstatt mit SCL alle auf einmal zu setzen. Natürlich gibt es zumindest einen Zeitunterschied... b) Bis alles initialisiert ist sollten ggf. die Ausgänge mit OE geblockt sein, z.B. über µC Pin. Wenn ich den Pin sparen will ist RC-Beschaltung an OE zur zeitverzögerten Aktivierung scheinbar möglich. Aber wie sieht das konkret aus? > Vielleicht hilft die Beschreibung einer Schrittfolge: > > Nach dem Einschalten des Kontrollers sind alle seine Ausgänge erst > einmal hochohmig. Ob das ertragen wird, muss man anhand der Beschaltung > klären. Wenn die grundlegenden Fragen so wie hier geklärt sind kann ich einen Entwurf der Schaltung für Anregungen und zur Diskussion zeigen. Noch bin ich nicht so weit. > Der 595 bräuchte unbedingt erst einmal shiftclock und latchclock auf > Null (pulldown)damit beim Aufwachen des Kontrollers keine pos.Flanke > entstehen kann, die ungewolte Aktivität auslöst. Sehr konkret, verstehe ich gut, Danke! > Ob OE aktiv sein darf und welche Werte Qa bis Qh haben sollen bestimmt > der angeschlossene Kram. Wenn es um den an die Ausgänge des 595 angeschlossenen Kram geht, da sind 5V Relais (monostabil) und Stromstoßschalter (bistabil) über ULN2803 dran. > 1.Schritt des Kontrollers: mit reset, den Zähler des SRG auf low setzen > und dann wieder auf high. Verstehe ich richtig: Mit Reset (SCL) auf low das Schieberegister zuerst komplett auf 0 setzen, SCL dann wieder auf high (aber warum brauche ich das vorher, es kommt doch jetzt Schritt 2, der eh alles überschreibt, s. Frage a) oben) > 2. Schritt: Bit anlegen (zuerst die Folge eingeben, die der > angeschlossenen Schaltung mit Sicherheit nicht wehtut) In diesem Fall alle angeschlossenen Relais aus, also 0. Aber diesen Zustand habe ich eh schon durch Schritt 1. > 3.Schritt: shift Clock aus den pull-down-Zustand anheben (pos Flanke) > und wieder zurück. also serielles Bit aufnehmen Verstehe ich, einmal Takt > 2 und 3 achtmal. bis das 8-bit-byte geladen ist. > Dann latch clock aus pull-down anheben und wieder senken. Damit die > daten ans Latch übergeben. Klar, für jedes Bit, aber dann hier insgesamt 16mal weil zwei Stück 595 kaskadiert sind ;) > 4. wenn OE noch auf high ist, oder pull up, jetzt OE auf low. Verstehe ich auch. Aber für diese letzte und einmalige Aktion einen kostbaren µC Pin zu opfern erscheint mir in Anbetracht der im Tutorial angebotenen Alternative mit RC-Beschaltung nicht die beste Lösung zu sein. Peter Dannegger schrieb: > Michael W. schrieb: >> Wäre diese kurze Zeit >> trotzdem ausreichend um ein Relais oder einen Stromstoßschalter zum >> Zucken zu bringen? > > Ja. Danke für diese klare und verständlich erläuterte Antwort :) Also muss ich ich auf jeden Fall mit OE, SCL und RCK etc. rumschlagen :/
Peter Dannegger schrieb: > Ja. > Ein Quarz braucht mehrere ms zum Anschwingen, die Resetzeit wird dann > noch um einen Sicherheitsaufschlag höher gewählt, z.B. 100ms. > Relais können schon ab 1ms schalten. Aber nur, wenn die Versorgungsspannung für die Relais freigegeben ist, bevor der µC hochgefahren ist ;-)
Michael W. schrieb: > Ich versuchs nochmal übersichtlicher: > a) Brauche ich zwingend einen µC Pin für SCL? Ich kann die Nullen doch > auch in mit Serial In und Clocksignal in das Schieberegister > hineinschieben anstatt mit SCL alle auf einmal zu setzen. Natürlich gibt > es zumindest einen Zeitunterschied... So mache ich es immer. > b) Bis alles initialisiert ist sollten ggf. die Ausgänge mit OE geblockt > sein, z.B. über µC Pin. Wenn ich den Pin sparen will ist RC-Beschaltung > an OE zur zeitverzögerten Aktivierung scheinbar möglich. Aber wie sieht > das konkret aus? Denkbar ist auch ein 74HC74, das nach einem Power-On gelöscht ist und erst nach dem ersten RCK gesetzt wird. !Q käme dann an !OE. Ich habe es in einem Design auch so gemacht, dass ich zu jedem HC595 einen HC597 quasi parallel geschaltet habe, um nach einem (ungewollten) Reset etc. den Ausgang des Latches zurücklesen zu können. Ohne diese Maßnahme kann man ja nur das Schieberegister zurücklesen, nicht aber das Ausgangsregister. > Wenn es um den an die Ausgänge des 595 angeschlossenen Kram geht, da > sind 5V Relais (monostabil) und Stromstoßschalter (bistabil) über > ULN2803 dran. Wenn Du mit weniger Bauteilen auskommen möchtest, darfst Du Dir auch gerne mal den TI TPIC6?595/596 anschauen, wobei das ? für einen Buchstaben A,B,C oder nichts steht. Die verschiedenen Versionen haben unterschiedliche Ausgangstreiberleistung. ST/NXP haben NPIC* oder Micrel MIC5821/22/41/42. fchk
Hallo Gerhard! Haben uns knapp verpasst, da ist mir deine Antowrt durchgegangen. Auch dir herzlichen Dank für deinen ausführlichen Beitrag und deine Hilfe. Gerhard O. schrieb: > Eigentlich berühren Deine Fragen meiner Ansicht nach einige etwas heikle > (entwicklungstechnische) Themen. Oh, heikel :o > Der Reset via SCL ist zum Startup nicht unbedingt notwendig weil man die > Möglichkeit hat, anfangs mit dem OE- die Ausgänge zu deaktivieren. Der > MCU braucht nur alle Ausgänge auf NULL stellen und dann erst den OE- zu > aktivieren. Dabei sparst Du Dir einen Port Pin bzw. Steckerbelegung mit > dem SCL Pin. So dachte ich es mir auch. Hätte dann SCL frei gemacht und ggf. OE stattdessen drangehängt, das passt von den Pins her gut. > Das Problem mit dem SCL Eingang ist, dass nur das erste > Shift-Register davon beintroffen ist. Das zweite behält seinen > jeweiligen Zustand. Meinst du erstes und zweites in der Reihenfolge der Kaskadierung? Dafür hätte ich natürlich jedes der beiden (oder ggf. mehr) Schieberegister mit SCL an den entsprechenden µC Pin gehängt. Ebenso natürlich mit OE, so dass der µC Pin ggf. alle Schieberegister blockt. > Der heikle Teil besteht in der Frage wie sich Dein System im Fehlerfall > verhalten muß. Wenn Du z.B. > ... Lasten wie Heizungen, Motoren steuern willst, kann ein > Fehler unter Umständen gefährliche Folgen nach sich ziehen. Im Moment hängen an den monostabilen Relais Rollos dran und an den bistabilen Licht. Im Grunde ist egal wie die Ausgänge sind, passieren würde nichts, ausser dass die Rollos kurz zucken oder irgendwo ein Licht angeht wegen des Impulses am Stromstoßschalter. Möchte ich aber natürlich trotzdem vermeiden, da ich mich langfristig, wenn ich mehr Erfahrungen habe, auch an Dinge wie Heizungssteuerung begeben möchte. > Dehalb > empfiehlt sich ein Hardware Watchdog der die Ausgänge unabhängig von der > Steuerung durch z.B hochziehen des OE- deaktiviert. Es geht hier nicht mehr um einen Restart nehme ich an, sondern um einen Freeze des µCs? Kannst du genauer ausführen, wie das aussehen würde? > Ich habe den > Eindruck dass Du Dir darüber schon Gedanken gemacht hast. Auch Fail-Safe > Ausgangs-Schutzschaltungen werden manchmal eingesetzt um die Sicherheit > zu erhöhen. Mache mir im Moment um einige Sachen Gedanken, das meiste in dieser Welt ist neu für mich. Hardware Watchdog bin ich zwar noch nicht drüber gestolpert. Wenn es aber gedanklich an sicherheitsrelevante Dinge wie Heizung geht habe ich natürlich sofort auch Dinge wie mechanische Temperaturschalter hinter dem Relais o.ä. zur Sicherheitstemperaturbegrenzung im Kopf. Absturz oder Fehlfunktion der Elektronik sollte nicht zu einem kritischen Zustand führen. Aber, wie du sagst, > nichts in der Welt ist perfekt. > Eine gewisse Sicherheit kann man erreichen den OE- Pin durch eine > Schutzschaltung dynamisch zu steuern. Man könnte z.B einen FET am GATE > mit mittels einer geigneten Beschaltung mit einer gepulsten Spannung > Kondensator getrennt vom MCU steuern. Wenn sich der MCU aufhängen > sollte, dann schaltet der FET automatisch nach kurzer Zeit ab. > Allerdings darfst Du dazu keinen Interrupt nehmen weil unter Umständen > auch wenn das Hauptprogramm hängt, die Timer Interrupts > weiterfunktionieren. Das sieht mir aus wie der genannte Hardware Watchdog. Das muss ich ggf. zu späterem Zeitpunkt nochmal aufgreifen. Spricht denn etwas gegen den µC internen Watchdog? > Irgendwie gefällt mir auch weniger dass sich die Ausgangszustände beim > HC 595 nicht zurücklesen lassen. Ein IO-Expander wie PCA9554 oder > MCP23008 ist da günstiger weil man elektrisch aktiv, die > augenblicklichen Pin-Zustände jederzeit abfragen kann. Habe ich bei meinen bisherigen Überlegungen noch nicht vermisst. Da es sich (des Stromsparens wegen) zumeist um Stromstoßschalter handelt gibt es an den Schieberegistern eigentlich eh immer nur kurze Impulse. > Besser noch wäre, > den Schaltzustand von der Last her durch Optocoupler zurückzuführen. Ist vielleicht eine interessante Idee um den Schaltzustand der Stromstoßschalter zu erfassen. Bei dem Gedanken µC Kleinspannungsebene mit 230V Lastseite über etwas anderes als Relais zu verbinden stellen sich mir dennoch irgendwie die Nackenhaare auf. Auch wenn Optokoppler auch galvanisch getrennt sind und die Isolationsspannung reichen sollte... > Wie gesagt, rate ich Dir Beim Design Deiner Schaltung von den > Gesammtrahmenbedingen auszugehen und Dir überlegen was in den einzelnen > Fehler Zuständen passieren darf und dann Deine Schaltung dementsprechend > zu konzipieren. Bin gerade dabei und versuche die offenen Fragen auszuräumen. Sobald ich etwas vorzeigbares habe diskutiere ich das gerne weiter im konkreten Zusammenhang. > Bezüglich dem Gebrauch von Pull-Ups oder Pull-Down will man verhindern > dass Schaltelemente wie CMOS oder MOSFETS im Falle eines Versagens der > Steuerung selber Einschalten können. Das ist der Fall wenn der > Kontroller im RESET ist und alle Port Pins hohe Impedanz haben. Dann > kann es passieren dass sich an den extrem hochohmigen MOSFET oder CMOS > Eingängen unbeabsichtigte Spannungen durch Ladungseffekte oder > Leckströme aufbauen können und sich Lasten dann unbeabsichtigt > einschalten können. Entsprechende Widerstände schaffen in einem solchen > Fall definierte Schaltzustände. Das Thema ist mir bei den ersten praktischen Erfahrungen sofort transparent geworden. Zunächst hatten sich Zustände an den Eingängen des µC schon durch annähern mit dem Finger geändert, als der interne PullUp nicht gesetzt war. Im ersten Feldversuch haben sich die Eingänge dann über die angeschlossenen langen Kabel Fehler eingefangen, trotz interner PullUps. Externe Pullups mit niedrigerem Widerstand haben dann auch hier Abhilfe geschaffen. Die Grundlagen sind also klar :) > Im Falle des HC595 brauchst Du nur Schutzwidersände nach Masse wenn Du > hochohmige Lasten wie MOSFETS steuerst. Beim ULN2803 brauchst Du die > wegen der eingebauten Ableit und Serienwiderstände an den Eingängen > natürlich nicht. Dachte ich mir schon, dass es nur um Pull Ups und Downs zwischen µC Pin und Steuerpins des Schieberegisters handelt, und nicht um die Ausgänge. > Im einfachsten Fall würde ich sicherstellen wollen, dass der OE- beim > Einschalten vor der Initialisierung des MCUs immer durch Einsatz eines > Pull-Up Widerstand hochgelegt wird. Dann können sich Deine Lasten nicht > selber einschalten wenn die Datenspeicherzellen im HC595 nach dem > Einschalten undefiniert sind. So habe ich es im Moment auch vor Augen. Einen µC Pin mit PullUp and OE, dann zur Initialisierung über Serial In mit Clock Signal 16 Nullen durchschieben, ins Ausgaberegister durchschalten (RCK), und dann erst den µC Pin an OE auf low setzen um die Ausgänge zu aktivieren. > Auch rate ich Dir den Watchdog einzusetzen, so dass sich im Fehlerfall > beim Ausfall des MCUs die Ausgänge erst nach dem Restart des MCUs wieder > einschalten können weil der OE durch den Pullup automatisch auf H geht > und die Ausgänge deaktiviert. Für die Rollo- und Lichtsteuerung glaube ich ist das im Moment vielleicht noch etwas zu viel. Dennoch werde ich sehen, ob ich hierfür noch Platz auf der Platine finde. Schadet ja nicht auch für späteres vorauszudenken. Nochmal Danke für deinen ausführlichen Beitrag! Viele Grüße, Michael
Hallo Wolfgang, Hallo Frank! Auch euch beiden vielen Dank für eure Hilfe. Wolfgang schrieb: > Aber nur, wenn die Versorgungsspannung für die Relais freigegeben ist, > bevor der µC hochgefahren ist ;-) Ist natürlich auch ein Weg, die Relais freizuschalten. Ob ich nun aber einen Pin zum Freischalten des Schieberegisters mit OE verwende oder den Pin zum Freigeben der Relais ist von der Pineffizienz her kein Unterschied. Frank K. schrieb: > Michael W. schrieb: >> Ich versuchs nochmal übersichtlicher: >> a) Brauche ich zwingend einen µC Pin für SCL... > > So mache ich es immer. Danke für die Bestätigung :) >> b) Bis alles initialisiert ist sollten ggf. die Ausgänge mit OE geblockt >> sein, z.B. über µC Pin. > > Denkbar ist auch ein 74HC74, das nach einem Power-On gelöscht ist und > erst nach dem ersten RCK gesetzt wird. !Q käme dann an !OE. Ich versuche im Moment noch alles so gut es geht auf begrenztem Platz unterzubringen. Noch sieht alles ganz gut aus (bis mein Entwurf in der noch anstehenden Diskussion zerpflückt wird). Mit 74HC74 wirds dann eng. Wenns sein muss, ändere ich natürlich das Layout, aber aktive (IO-Pin) bzw. passive (RC) Beeinflussung von OE scheint mir platzsparender zu sein. > Ich habe es in einem Design auch so gemacht, dass ich zu jedem HC595 > einen HC597 quasi parallel geschaltet habe, um nach einem (ungewollten) > Reset etc. den Ausgang des Latches zurücklesen zu können... Ich habe derzeit keine Anwendung vor Augen, bei der ich nicht nach jedem Reset zur Initialisierung einfach alles erstmal auf 0 setzen kann. Mir ist nur wichtig, dass bis dahin nicht ungewollt eine 1 (wenn auch nur für kurze Zeit) bis zum Relais durchschlägt, da dies ungewollt etwas schalten könnte. Wäre zwar auch nicht schlimm, aber eben ungewollt. >> Wenn es um den an die Ausgänge des 595 angeschlossenen Kram geht, da >> sind 5V Relais (monostabil) und Stromstoßschalter (bistabil) über >> ULN2803 dran. > > Wenn Du mit weniger Bauteilen auskommen möchtest, darfst Du Dir auch > gerne mal den TI TPIC6?595/596 anschauen Danke für den Hinweis. Habe mir gleich mal ein Datenblatt angeschaut. Sieht auf den ersten Blick durchaus hilfreich aus. Weniger Bauteile = mehr Platz kommt mir im Moment auch entgegen :) Muss das DB aber erstmal etwas ausführlicher studieren. Nochmal Danke an alle für eure Bemühungen! Viele Grüße, Michael
Michael W. schrieb: >> Denkbar ist auch ein 74HC74, das nach einem Power-On gelöscht ist und >> erst nach dem ersten RCK gesetzt wird. !Q käme dann an !OE. > Ich versuche im Moment noch alles so gut es geht auf begrenztem Platz > unterzubringen. Noch sieht alles ganz gut aus (bis mein Entwurf in der > noch anstehenden Diskussion zerpflückt wird). Mit 74HC74 wirds dann eng. Es gibt ihn auch als Einerpackung: http://www.nxp.com/documents/data_sheet/74LVC1G74.pdf Und im SOT833-1-Gehäuse ist der dann auch nur 1.95mm*1.00mm groß. Das passt dann bestimmt :-) fchk
Hallo zusammen! Ich habe auf Grundlage der bisherigen Diskussionsergebnisse einen ersten Schaltplan und einen Entwurf für das Platinenlayout erstellt. Wer möchte ist herzlich eingeladen hier seine Meinung dazu abzugeben :) Beitrag "Atmega mit je zwei 74HCT597 und 74HC595 - Diskussion Platinenlayout" Danke im Voraus! Viele Güße, Michael Frank K. schrieb: > Und im SOT833-1-Gehäuse ist der dann auch nur 1.95mm*1.00mm groß. Das > passt dann bestimmt :-) Zumindest bisher habe ich praktisch noch keinerlei Erfahrung mit SMD löten. Solange wie alles auf Lochasterplatine passt möchte ich dabei auch erstmal bleiben. Nicht wegen des Lotens, sondern vor allem wegen der Anfertigung der Platine. Einzelstücke machen zu lassen ist einfach zu teuer :/
Michael W. schrieb: > Ich habe auf Grundlage der bisherigen Diskussionsergebnisse einen ersten > Schaltplan und einen Entwurf für das Platinenlayout erstellt. Wer möchte > ist herzlich eingeladen hier seine Meinung dazu abzugeben :) Ich möchte nicht. Bitte lerne, Dich der Standard-Ausdrucksweise eines E-Technikers zu befleißigen - eines normgerechten Schaltplans. Es gibt genug Weichware, die Dir dabei hilft. Der dargestellte Wirrwarr Deines PNGs ist mir zu anstrengend. fchk
Hallo Frank, danke für deine Meinung. Kann ich verstehen. Werde mich darum bemühen mir Kenntnisse in entsprechender Software anzueignen. VG Michael
Falls Du die Anzahl Deiner Bauteile minimieren möchtest, möchte ich Deinen Blick auf diese Bauteile lenken: MCP23S17: 16 Bit IO-Chip über SPI, kann sowohl Ein- als auch Ausgänge bereitstellen so wie Gimmicks wie Pin Change Interrupts etc. Davon brauchst Du nur zwei, und Du kommst mit 4 Signalen zum AVR aus: !CS, MOSI, MISO, SCK. Wenn Du mehrere von diesen Chips hast, selektierst Du einen bestimmen über ein Adressbyte. Jeder Chip hat eine eigene Adresse, die Du über die Pins 15-17 einstellst. http://ww1.microchip.com/downloads/en/DeviceDoc/21952b.pdf Dann gibt es Widerstandsnetzwerke, wo mehrere Widerstände eines Wertes in einem Gehäuse enthalten sind. Spart Lötarbeit. Schau her: http://www.reichelt.de/8-Widerstaende-9-Pins/2/index.html?&ACTION=2&LA=2&GROUPID=4500 (als Pullups) http://www.conrad.de/ce/de/product/1055162/Widerstandsnetzwerk-220-radial-bedrahtet-DIP-16-025-W-Bourns-4116R-1-221LF-1-St?ref=list (als Serienwiderstand, Beispiel) fchk
Hallo Frank! Vielen Dank für deinen Beitrag und die Tips :-) Über den MCP23S17 bin ich im Artikel Porterweiterung mit SPI auch schon gestolpert. Ich habe auch kurz damit geliebäugelt ihn zu verwenden, habe aber im Moment noch zu viel Scheu vor der SPI Schnittstelle. Ich möchte vor allem auch die Anzahl der Baustellen minimieren, an denen ich arbeiten muss. Die Ansteuerung der Schieberegister mit Pins ist für mich transparent und mit einem Byte Array und Zählschleifen recht elegant in wenigen Zeilen Code zu handhaben. Kann sein, dass das mit SPI auch so ist, aber was ich bisher an Code gesehen habe hat mich eher erstmal abgeschreckt. Die Widerstandsnetzwerke habe ich auch schon entdeckt und an anderer Stelle eingesetzt. Sind tolle Bauteile, bei meinem aktuellen Layout so aber leider nicht sinnvoll einzusetzen. Etwas vergleichbares sollte es imho auch mit Kondensatoren geben, könnte ich mir z.B. bei RC Beschaltung für den Kondensator nach Masse gut vorstellen. Nochmals vielen Dank für deine Hilfe! Viele Grüße, Michael
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.