Einlesen von Tastern und ausgabe je über Schiebregister

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • tschoeatsch schrieb:

      Wenn du mit Optokopplern arbeitest, musst du den 74xx165 nicht extra schützen, das hast du ja mit der Beschaltung des Opto auf der Transistorseite im Griff. Die Diode vom Opto hat einen relativ weiten Spannungsbereich, wenn du den Vorwiderstand bei der niedrigsten Spannung so wählst, dass der Transistor gerade so sicher schaltet.
      Hi tschoeatsch, :)

      hast mich falsch verstanden, ich meine ich möchte nicht dann die 165'er extra schützen sondern die Eingänge von den Optos.
      VG
      katip
    • djmsc schrieb:

      Optokoppler kannst du mit dem richtigen Vorwiderstand und einer Diode auch direkt an 230V anschließen.
      Du musst halt nur herausfinden welche Spannung die Diode vom Optokoppler mindestens braucht und dann kannst du den Vorwiderstand für 15V berechnen.
      Hi,

      Die Optokoppler Eingänge benötigen lt. Datenblatt max. 1,3V.
      oder sehe ich das falsch? Datenblatt TLP620-4
      und wenn ich mal aus versehen warum auch immer mit 24V an die Eingänge drankommen sollte, sollte der Chip nicht den Geist aufgeben.

      Bei 230V ist es mir egal, die halte ich nicht so in der Hand :) und sollte dennoch mal die 230V mit den Optokoppler in Berührung kommen, dann soll es von mir aus einmal kaputt gehen.
    • katipefendi schrieb:

      und wenn ich mal aus versehen warum auch immer mit 24V an die Eingänge drankommen sollte, sollte der Chip nicht den Geist aufgeben.
      Denke an den Vorwiderstand! Es geht wenn dann nur der Opto kaputt, es sei denn du hast so hohe Spannungen dran, dass es einen Überschlag auf den Transistor gibt. Diese Spannung (die er aushalt, ohne durch zu schlagen) steht im Datenblatt.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Hallo,

      nun habe ich wieder Zeit gefunden um an mein Projekt weiter zubauen.

      ich bin jetzt dabei die Daten an den µC zu senden. Dazu habe ich mir auf der Seite AVR Tutorial das Thema durchgelesen aber habe das folgende nicht so richtig verstanden.


      Mittels des Eingangs PL (Parallel Load) werden die Daten vom parallelen Eingang in das Schieberegister übernommen, wenn dieses Signal LOW ist.
      Ich weis doch nicht, wann ein Eingangssignal kommt.

      Damit es nicht zu unerwünschten Fehlschaltungen kommt, muss der Takt CLK während des Ladens auf HIGH liegen.
      also auf Dauer High legen?


      Wird PL wieder auf HIGH gesetzt, sind die Daten geladen. Das erste Bit liegt direkt am Ausgang Q7 an.
      Ich weis doch nicht, wann ein Eingangssignal kommt.

      Die restlichen Bits können nach und nach durch das Register geschoben werden.


      Der Eingang CE (Clock Enable) steuert, ob das Schieberegister auf den Takt CLK reagieren soll oder nicht. Ist CE gleich HIGH werden alle Takte an CLK ignoriert. Bei LOW werden mit jeder positiven Flanke die Daten um eine Stufe weiter geschoben.
      Wird am Eingang CLK eine LOW-HIGH Flanke angelegt und ist dabei CE auf LOW, dann werden die Daten im Schieberegister um eine Position weiter geschoben: DS->Q0, Q0->Q1, Q1->Q2, Q2->Q3, Q3->Q4, Q4->Q5, Q5->Q6, Q6->Q7. Q0..Q6 sind interne Signale, siehe Datenblatt.
    • Ich nehme an, du meinst den 74xx165, parallel zu seriell.
      Der 'pl' pin ist vergleichbar mit einem Auslöser beim Fotoapparat. Den bedient, wird ein Schappschuß von den Eingangspins gemacht und gespeichert. Während diesem 'Fotografieren' den 'clk' auf high. Wenn du den Auslöser wieder los lässt, liegt bit0 (oder bit7?) vom fotografiertem byte an Q7 an. Durch Zappeln am clk werden nacheinander die bits zum Ausgang geschoben.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • katipefendi schrieb:

      ich weis aber doch nicht, wann ein Eingangssignal ankommt
      Wie machst du das denn bei "normalen" Tasten? Die fragst du doch auch ab ob sich ihr Zustand geändert hat oder nicht. Genau so kannst du das mit dem Schieberegister machen. Den fragst du von Zeit zu Zeit ab und wenn sich etwas verändert hat dann reagiere darauf.
      Den alten Zustand speichern und mit dem neuen vergleichen.
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • djmsc schrieb:

      Wie machst du das denn bei "normalen" Tasten? Die fragst du doch auch ab ob sich ihr Zustand geändert hat oder nicht. Genau so kannst du das mit dem Schieberegister machen. Den fragst du von Zeit zu Zeit ab und wenn sich etwas verändert hat dann reagiere darauf.Den alten Zustand speichern und mit dem neuen vergleichen.
      Das was du meinst, ist doch in der Schleife, d.h. sobald ein Signal ankommt dann reagiert es darauf.

      Aber hier ist erst mal ganz ein anderes Problem, denn ich muss erst wissen, das ein Eingangssignal anliegt, um ein Schnappschuss zu machen.
      D.h., ich muss alle 100ms oder je nachdem wie schnell das sein soll einen Schnappschuss machen und dann den CLK 8 mal Ein- und Ausschalten bis die Daten am Q7 anliegen.

      Anders kann ich mir das nicht vorstellen.
      oder gibt es einen besseren weg?
    • Klar kannst du das in einer Schleife machen.
      Als Beispiel:
      Du hast ein Byte (tasten) mit dem Wert 0 und ein Byte (tasten_old) ebenfalls mit dem Wert 0.
      Du liest das Schieberegister in der Hauptschleife permanent ein und vergleichst danach beide Byte-Variaben. Wenn tasten von tasten_old abweicht reagierst du darauf und wertest das aus. Danach setzt du die Variable tasten wieder zurück.
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • Ok,wenn du nur reagieren willst, wenn ein pin auf high geht, dann kannst du alle pins mit 8 Dioden zu einem pin zusammen führen, der dann high wird, sobald ein Eingangspin high wird (eine 'oder'-Verknüpfung). Mit diesem pin dann einen interrupt auslösen, der den Schnappschuß veranlaßt usw.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Hallo Zusammen,

      so, jetzt habe ich Urlaub und werde versuchen die Zeit sinnvoll auszunutzen.

      Der Hardware Aufbau ist soweit fertig, es geht um das Einlesen von Eingangssignale die praktisch parallel über 74HC165 erfasst werden und über einen weiteren 74HC165 kaskadiert ist und am Ende die Serielle Daten an den µC übergibt.

      Nun habe ich ja bereits mit der 74HC595 mehrere Ausgänge definiert was auch wunderbar funktioniert und ich stolz drauf bin a_57_04ef5ee8 :thumbsup:

      Auf der Seite Porterweiterung für Eingänge ist es zwar beschrieben wie man 74HC165 kaskadiert usw. Nun aber ist das etwas verwirrend wegen PL und dem CLK Takt.


      Wie würdet ihr das realisieren?


      würde mich freuen wenn mich da einer aufklären würde.
      vg
      Katip
    • Was verwirrt dich? Der '165er hat 8 durchnummerierte Eingänge. Die Pegel von denen werden auf eine Flanke hin intern zwischen gespeichert (Schnappschuß) und dann kann man mit Hilfe des Taktes diese Pegel der Reihenfolge nach nacheinander auf den Ausgang bringen und mit dem Kontroller entsprechen verarbeiten. Wenn du zB. 16 Eingänge hast, dann hast du nach dem Einlesen 2bytes, deren bits die Pegel zum Zeitpunkt des Schnappschusses wiederspiegeln.

      Wenn du die Schaltung aus deinem link betrachtest:
      nach dem Schnappschuß sind die internen Speicherzellen im 165er mit den Pegeln der Eingänge geladen. Mit einem clock wird die 8. Speicherzelle des unteren 165er an den Ausgang geschoben Speicherzelle 1 bis 7 um eine Stelle zum Ausgang hin. Im oberen chip genauso, nur das dessen Ausgang am seriellen Eingang angeschlossen ist und der jetzt die Speicherzelle 1 vom unteren chip läd. Nach 16x clock sind alle Pegel der Eingänge mal am Ausgang angelegen, weitere clock bewirken nur Pegel 0 am Ausgang.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von tschoeatsch ()

    • Hi tschoeatsch,

      du sagst, das es zwischen gespeichert wird, aber auf der Seite ist zu lesen, das dieser Chip : "Allerdings gibt es kein Register zum Zwischenspeichern." keinen Speicher hat oder denke ich da falsch?

      Zitat von der Seite:
      Der Aufbau ist sehr ähnlich zum 74xx595. Allerdings gibt es kein Register zum Zwischenspeichern. Das ist auch gar nicht nötig, da der IC ja einen parallelen Eingang hat. Der muss nicht zwischengespeichert werden. Es gibt hier also wirklich nur das Schieberegister. Dieses wird über den Eingang PL mit den parallelen Daten geladen. Dann können die Daten seriell mit Takten an CLK aus dem Ausgang Q7 geschoben werden.

      VG
      Katip
    • Naja, da drin sind flipflops. Durch ein 'set' bzw 'reset' kann man das flipflop in einen bestimmten Zustand bringen. Das ist dann das Speichern. Es steht ja da auch, dass das ein Unterschied zum 595er ist, und das es das Register nicht braucht. Dieses Register ist auch aus flipflops aufgebaut. Der 595er braucht einen 'Speicher' um beim Laden die bits zwischen zu speichern und einen 'Speicher' um die Ausgänge während dem Laden auf den aktuellen Stand zu halten.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------