Daten Zusammenfassen und an 74HC595 weitergeben

    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!

    • Daten Zusammenfassen und an 74HC595 weitergeben

      Hallo,

      ich empfange Daten von meinem VB.net Software und übergebe die dann direkt an die 74HC595 weiter.
      Das geschieht wie folgt:


      Beispiel Werte
      Wert2 = 255 <--- Dieser Wert kommen vom PC
      Wert3 = 255 <--- Dieser Wert kommen vom PC
      Wert4 = 255 <--- Dieser Wert kommen vom PC
      Wert5 = 255 <--- Dieser Wert kommen vom PC


      BASCOM-Quellcode

      1. $regfile = "usb162.dat"
      2. $crystal = 8000000
      3. '$baud = 19200
      4. $hwstack = 64
      5. $swstack = 86
      6. $framesize = 86
      7. Dim Wert2 As Byte
      8. Dim Wert3 As Byte
      9. Dim Wert4 As Byte
      10. Dim Wert5 As Byte
      11. Dim Ausgang1 As Byte
      12. Dim Ausgang2 As Byte
      13. Dim Ausgang3 As Byte
      14. Dim Ausgang4 As Byte
      15. Ausgang1 = Wert2
      16. Ausgang2 = Wert3
      17. Ausgang3 = Wert4
      18. Ausgang4 = Wert5
      19. Shiftout Dout1 , Sck1 , Ausgang1 , 1 ' Daten werden an die jeweilige 74HC595 übergeben
      20. Rck1 = 1 'PIN 12 bei 74HC595 wird kurz auf high und dann wieder auf low gesetzt, damit die Daten zum Ausgangsregister rutschen
      21. Rck1 = 0
      22. Shiftout Dout2 , Sck2 , Ausgang2 , 2 '"
      23. Rck2 = 1 '"
      24. Rck2 = 0 '"
      25. Shiftout Dout3 , Sck3 , Ausgang3 , 1 '"
      26. Rck3 = 1 '"
      27. Rck3 = 0 '"
      28. Shiftout Dout4 , Sck4 , Ausgang4 , 3 '"
      29. Rck4 = 1 '"
      30. Rck4 = 0 '"
      31. Config Portd.3 = Output 'Hier wird der PIN 13 von 74HC595 für immer auf low gesetzt,
      32. G Alias Portd.3
      33. G = 0
      Alles anzeigen


      Ich habe vier Schieberegister und die werden jeweils mit maximal 255byte versorgt. Das funktioniert auch soweit.


      Nun möchte ich alle vier Schieberegistern kaskadieren. D.h, dann müsste mein Code in etwa so ausschauen:

      BASCOM-Quellcode

      1. Dim Wert2 As Byte
      2. Dim Wert3 As Byte
      3. Dim Wert4 As Byte
      4. Dim Wert5 As Byte
      5. Dim Ausgang1 As Byte
      6. Dim Ausgang2 As Byte
      7. Dim Ausgang3 As Byte
      8. Dim Ausgang4 As Byte
      9. Ausgang1 = Wert2
      10. Ausgang2 = Wert3
      11. Ausgang3 = Wert4
      12. Ausgang4 = Wert5
      13. Dim GesamtByte As Dword
      14. GesamtByte = Ausgang1 + Ausgang2
      15. GesamtByte = GesamtByte + Ausgang3
      16. GesamtByte = GesamtByte + Ausgang4
      17. Shiftout Dout1 , Sck1 , GesamtByte , 1 ' Daten werden an die jeweilige 74HC595 übergeben
      18. Rck1 = 1 'PIN 12 bei 74HC595 wird kurz auf high und dann wieder auf low gesetzt, damit die Daten zum Ausgangsregister rutschen
      19. Rck1 = 0
      20. Config Portd.3 = Output 'Hier wird der PIN 13 von 74HC595 für immer auf low gesetzt,
      21. G Alias Portd.3
      22. G = 0
      Alles anzeigen



      Frage, ist das so richtig?
      ich meine würde das so funktionieren?
      Testen kann ich leider noch nicht, da ich keine 595'er kaskadiert habe.

      vg
      Katipefendi
    • Ne. Erstmal hier "Shiftout Dout1 , Sck1 , Ausgang1 , 1" musst du dich für einen Wert entscheiden, der zu deiner Anwendung passt, schau nochmal da nach avrhelp.mcselec.com/shiftout.htm
      und wenn du kaskadierst, dann machst du das so

      BASCOM-Quellcode

      1. $regfile = "usb162.dat"
      2. $crystal = 8000000
      3. '$baud = 19200
      4. $hwstack = 64
      5. $swstack = 86
      6. $framesize = 86
      7. Dim Wert2 As Byte
      8. Dim Wert3 As Byte
      9. Dim Wert4 As Byte
      10. Dim Wert5 As Byte
      11. Dim Ausgang1 As Byte
      12. Dim Ausgang2 As Byte
      13. Dim Ausgang3 As Byte
      14. Dim Ausgang4 As Byte
      15. Ausgang1 = Wert2
      16. Ausgang2 = Wert3
      17. Ausgang3 = Wert4
      18. Ausgang4 = Wert5
      19. Shiftout Dout1 , Sck1 , Ausgang1 , 1 ' Daten werden an die jeweilige 74HC595 übergeben
      20. Shiftout Dout1 , Sck1 , Ausgang2 , 1 '"
      21. Shiftout Dout1 , Sck1 , Ausgang3 , 1 '"
      22. Shiftout Dout1 , Sck1 , Ausgang4 , 1 '"
      23. Rck = 1 '"
      24. Rck = 0 '"
      25. Config Portd.3 = Output 'Hier wird der PIN 13 von 74HC595 für immer auf low gesetzt,
      26. G Alias Portd.3
      27. G = 0
      Alles anzeigen
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • kann ich auch so machen:

      BASCOM-Quellcode

      1. Shiftout Dout1 , Sck1 , Ausgang1 , 1 ' Daten werden an die jeweilige 74HC595 übergeben
      2. 27.
      3. 28. Shiftout Dout1 , Sck1 , Ausgang2 , 2 '"
      4. 29.
      5. 30. Shiftout Dout1 , Sck1 , Ausgang3 , 1 '"
      6. 31.
      7. 32. Shiftout Dout1 , Sck1 , Ausgang4 , 3 '"
      8. 33. Rck = 1 '"
      9. 34. Rck = 0 '"
      10. 35.
      11. 36. Config Portd.3 = Output 'Hier wird der PIN 13 von 74HC595 für immer auf low gesetzt,
      12. 37. G Alias Portd.3
      13. 38. G = 0
      Alles anzeigen


      statt so?

      BASCOM-Quellcode

      1. Shiftout Dout1 , Sck1 , Ausgang1 , 1 ' Daten werden an die jeweilige 74HC595 übergeben
      2. 27.
      3. 28. Shiftout Dout1 , Sck1 , Ausgang2 , 1 '"
      4. 29.
      5. 30. Shiftout Dout1 , Sck1 , Ausgang3 , 1 '"
      6. 31.
      7. 32. Shiftout Dout1 , Sck1 , Ausgang4 , 1 '"
      8. 33. Rck = 1 '"
      9. 34. Rck = 0 '"
      10. 35.
      11. 36. Config Portd.3 = Output 'Hier wird der PIN 13 von 74HC595 für immer auf low gesetzt,
      12. 37. G Alias Portd.3
      13. 38. G = 0
      Alles anzeigen
    • Du kannst msb first ober lsb first beliebig einstellen, aber ich würde mich auf eine clock-Flanke festlegen. Die scheint zwar nicht kritisch zu sein, aber trotzdem.
      Raum für Notizen

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

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

      diese Reihenfolge ist mir schon wichtig
      Ist aber nicht nötig. Wenn deine HC595 alle gleich sind solltest du auch die gleiche Option nehmen.
      Wenn du ein Byte anders herum ausgeben willst musst du es voher "drehen". Oder du sendest es schon in der Form die du haben willst.

      Option 0: MSB wird zuerst raus geschoben wenn der Takt auf 0 geht
      Option 1: MSB wird zuerst raus geschoben wenn der Takt auf 1 geht
      Option 2: LSB wird zuerst raus geschoben wenn der Takt auf 0 geht
      Option 3: LSB wird zuerst raus geschoben wenn der Takt auf 1 geht

      Mit den verschiedenen Optionen kannst du deine HC595 auf Dauer schon durcheinander bringen.
      Bedenke du schiebst 4 Byte durch und die gehen alle durch den ersten HC595.
      Jetzt bekommt der aber jedesmal eine andere Abfolge.
      Da kann ich mir schon Fehler vorstellen.
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • djmsc schrieb:

      Bedenke du schiebst 4 Byte durch und die gehen alle durch den ersten HC595.
      Jetzt bekommt der aber jedesmal eine andere Abfolge.
      Da kann ich mir schon Fehler vorstellen.
      Da kommt nix durcheinander, wenn der Programmierer nicht durcheinander kommt.

      @katipefendi kannst du dein Vorhaben ein bisschen beschreiben?
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • tschoeatsch schrieb:

      @katipefendi kannst du dein Vorhaben ein bisschen beschreiben?
      Also, ich habe die DOTMatrix oben von rechts nach links verlegt.
      und die unteren sind von links nach rechts verlegt.

      D.H. der erste Block oben rechts ist die Nummer 1 und der letzte Block oben links ist die Nummer 16

      unten links ist der erste Block 17 und unten recht ist der letzte Block 32

      zum Verständnis


      53.png

      vg
      katip
    • korrekt
      lass dich nicht von den Blöcken verwirren, es sind in einer Zeile 16 LEDs
      Pro Ausgang einer 595 entspricht eine Spalte. Somit 2 x 595 sind 16 Ausgänge für 16 Spalten

      Deshalb benötige ich dieses Option:

      BASCOM-Quellcode

      1. Shiftout Dout1 , Sck1 , Ausgang1 , 1
      2. Shiftout Dout1 , Sck1 , Ausgang2 , 2 '"
      3. Shiftout Dout1 , Sck1 , Ausgang3 , 1 '"
      4. Shiftout Dout1 , Sck1 , Ausgang4 , 3 '"
    • So langsam raller ich das. Die Zeilen steuert was anderes an?
      Zwischen der Option 2 und 3 ist von der Datenreihenfolge kein Unterschied. So würde ich als Optionen 0 und 2, oder 1 und 3 verwenden.
      Raum für Notizen

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

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