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!

    • katipefendi schrieb:

      Unzwar habe ich noch vor dem DO-Schleife auch den PL = 1 gesetzt und pums bekomme ich jetzt Daten am PC zu lesen.
      Wenn ich das aber vor der DO-Schleife weglasse, bekomme ich keine Daten am PC.. warum auch immer. Voll blöd.

      hatte ich in #273 bereits erklärt.
      Ich wusste nicht, dass deine Lernkurve alleweil so flach ist.


      katipefendi schrieb:

      Nun, ich bekomme aber die Daten in der falsche Reihenfolge egal wie ich die Zahlen am Ende der SHIFTIN ändere.
      Dazu bekomme ich die Daten Inventiert zurück, d.h. wenn ich kein Eingangssignal habe, dann bekomme ich 255 zurück geliefert und wenn ich einen Signal anlege, dann 255 MINUS der Wert wo ich den Signal dran habe.
      für solche Aufgaben ist der AVR wie geschaffen.
    • katipefendi schrieb:

      Nun, ich bekomme aber die Daten in der falsche Reihenfolge egal wie ich die Zahlen am Ende der SHIFTIN ändere.
      Hast du mal versucht alles auf nur eine Option zu setzen? Du musst bedenken dass du die Daten vom letzten HC165 durch alle anderen schieben musst und durch deine unterschiedlichen Optionen sich die Daten in der Reihenfolge ändern.
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • Michael schrieb:

      hatte ich in #273 bereits erklärt.
      Ich wusste nicht, dass deine Lernkurve alleweil so flach ist.
      @Michael, schau mal bitte hier unten
      ich rede von der PL = 1 in der Zeile 10

      hast du dafür eine Erklärung?
      Obwohl es auch in der Schleife noch einmal vorkommt!

      BASCOM-Quellcode

      1. $regfile = "usb162.dat"
      2. $crystal = 8000000
      3. '$baud = 19200
      4. $hwstack = 64
      5. $swstack = 86
      6. $framesize = 86
      7. Pl = 1
      8. Clk = 1
      9. Do
      10. ' Clk_inh = 1 '
      11. Pl = 1
      12. Pl = 0 'Daten werden in den Register übernommen
      13. Pl = 1
      14. ' Clk_inh = 0 'clock erlauben
      15. Shiftin Din , Clk , Eingang4 , 0 ' Daten werden aus den jeweilige 74HC165 geholt
      16. Shiftin Din , Clk , Eingang3 , 0
      17. Shiftin Din , Clk , Eingang2 , 0
      18. Shiftin Din , Clk , Eingang1 , 0
      19. Shiftin Din , Clk , Eingang5 , 0
      20. Shiftin Din , Clk , Eingang6 , 0
      21. Shiftin Din , Clk , Eingang7 , 0
      22. Shiftin Din , Clk , Eingang8 , 0
      23. Loop
      Alles anzeigen
    • Ich könnte mir vorstellen, dass das im Einschaltverhalten vom 165er kommt. Bei Anlegen der Spannung sind ja die Signale wie clk und Pl erstmal gleichzeitig erstmal 'schwebend' (wenn auch nur kurz), dann low (wenn die pins zu Ausgängen konfiguriert werden). Vielleicht bringt das die erste Lesung der Eingänge durcheinander.
      Ich besuch dich mal, jetzt ist es scheint's nicht mehr so dringend, und ich werde mich anmelden. a_35_aee4835d
      Mit dem Sortieren der bits ist es nicht so einfach, das hat djmsc schon erkannt, sollte aber machbar sein.
      Sind alle eingelesenen bytes invertiert?
      Raum für Notizen

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

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

      djmsc schrieb:

      Hast du mal versucht alles auf nur eine Option zu setzen? Du musst bedenken dass du die Daten vom letzten HC165 durch alle anderen schieben musst und durch deine unterschiedlichen Optionen sich die Daten in der Reihenfolge ändern.
      Himmmmm, das ich schon komplex ich merk das schon.
      Grundsätzlich kommen die Daten immer mit der höheren Nummer des Eingangs zuerst aus dem 165er raus. Das shiftin sortiert dann je nach Option um.
      Raum für Notizen

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

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

      tschoeatsch schrieb:

      Sind alle eingelesenen bytes invertiert?
      ja
      Auch das erste? Bei den folgenden kann ich mit vorstellen, das du versehentlich den invertierten Ausgang in den Eingang des nächsten einspeist. Oder den invertierten an Din vom Kontroller angeschlossen.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • so das mit der Reihenfolge habe ich erst einmal hinbekommen.

      BASCOM-Quellcode

      1. Shiftin Din , Clk , Eingang4 , 2 ' Daten werden aus den jeweilige 74HC165 geholt
      2. Shiftin Din , Clk , Eingang3 , 2
      3. Shiftin Din , Clk , Eingang2 , 2
      4. Shiftin Din , Clk , Eingang1 , 2
      5. Shiftin Din , Clk , Eingang5 , 0
      6. Shiftin Din , Clk , Eingang6 , 0
      7. Shiftin Din , Clk , Eingang7 , 0
      8. Shiftin Din , Clk , Eingang8 , 0
      Alles anzeigen

      jetzt werde ich mal wegen dem invertierte Werte kämpfen :) die Nacht ist ja lang a_64_3a718cae
    • Hallo Zusammen,

      Problem gelöst.... a_42_02cc30b2 a_64_3a718cae a_14_3ef964b0

      Ich hatte die Platine in China herstellen lassen, nun habe ich dann aber unter Mikroskop gesehen, das der Leiterbahn von der PIN9 vom 165 zwischen der PIN7 und PIN8 verläuft und da einen Kurzschluss verursachte. Und somit immer als Invertierer arbeitete. Die Stelle habe ich mit einem Skalpell geschlitzt und jetzt funktioniert alles wie gewollt.

      Nochmals besten dank an alle, die mir helfen haben und wollten.

      jetzt geht es aber schnell a_448_c66dc889 ins Bett.


      VG
      Katipefendi
    • Gute Nacht Bascom Freunde,

      ich möchte mein Anliegen hier loswerden, da es im Hintergrund auf die Eingänge bezieht, die ich vor ein paar Wochen gebaut habe.

      ich würde gerne einige Eingänge die über shiftin laufen, als 16Bit Counter definieren, d.h. an den Eingängen sollen auch nicht nur die Schaltzustände erfasst werden, sondern auch positive Flanken gezählt werden.

      Wer kann mir da Tipps geben, wie ich das realisieren kann.

      Vg
      Katip
    • Von allen Eingängen mit Dioden zu einem pin des Kontrollers, der bei auftretender Flanke einen interrupt auslöst. In der zugehörigen isr die Eingänge mit shiftin einlesen und mit letzten Zustand vergleichen um den ursächlichen Eingang zu erkennen.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Mein Vorschlag ist doch nicht brauchbar. Er würde nur funktionieren, wenn keiner der der Eingänge dauerhaft oder länger als dein Puls aktiv ist. Wenn du Zustände und Flanken gleichzeitig hast, dann muss man es anders machen. Wie, weiß ich grad' noch nicht. Ich überleg' noch...
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Eine Lösung ist mir eingefallen, leider relativ aufwändig:
      Die Ausgänge, die zu deinen 74xx165er gehen, gehen auch zu Eingängen von 74xx85er. Die Vergleichseingänge des/der 74xx85 werden mit Ausgängen von zusätzlichen 74xx595 verbunden. Die 'istgleich'-Ausgänge des/der 74xx85 gehen an einen Pin des Kontrollers.
      Dein Programm müsste folgendes machen:
      erst einmal die Eingänge von deinen 165er einlesen und an die 595er schicken. Jetzt sind die vergleichenden Eingänge des/der 85er gleich und der Ausgang 'ist gleich' vom 85er aktiv. Ändert sich was an deinen Eingängen, dann sind die vergleichenden Eingänge eben nicht mehr gleich und das Signal 'ist gleich' fällt weg, löst einen interrupt aus. Mit dem werden die 165er ausgelesen, man findet den Unterschied zu vorher und erkennt so den geänderten Eingang. Jetzt muss man die 595er wieder mit dem aktuell gelesenen Pegeln der Eingänge laden, damit der 85er wieder im 'Gleichgewicht' ist. Usw...

      Das Datenblatt vom 85er: ti.com/lit/ds/symlink/cd54hc85.pdf
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Hi tschoeatsch,

      das ist wirklich sehr aufwendig. Ich dachte mir, das ich es im code realisieren könnte, da ich ja die Eingänge abfrage und in Variable schreibe.

      Wenn ein Eingang auf High liegt, setze ich einen Boolean Variable auf True, damit dieses Wert für die Zählung aufgenommen wird. Wurde es einmal gezählt, dann wird die Boolean Variable wieder auf false gesetzt. Somit wird dann bei einer dauerhaften Pegel nicht mehr als eins weiter gezählt.

      Oder siehst du das anders?

      BASCOM-Quellcode

      1. Pl = 1
      2. Pl = 0
      3. Pl = 1
      4. Shiftin Din , Clk , Eingang2 , 2
      5. Shiftin Din , Clk , Eingang1 , 2
      6. Shiftin Din , Clk , Eingang3 , 0
      7. Shiftin Din , Clk , Eingang4 , 0
      8. Usb_select_endpoint Ep_hid_in ' Ready to send these information to the host application
      9. If Ueintx.txini = 1 Then ' Is_usb_in_ready())
      10. Uedatx = Eingang1
      11. Uedatx = Eingang2
      12. Uedatx = Eingang3
      13. Uedatx = Eingang4
      Alles anzeigen
    • Eine Änderung an den Eingänge bekommst du so nur durch ständiges 'Nachschauen' mit. Ein Puls kann dann mal übersehen werden. Meine Idee erzeugt bei einer Änderung einen interrupt, es mach also 'auf sich aufmerksam'.
      Raum für Notizen

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

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