Output wird nicht auf NULL gesetzt

    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!

    • Output wird nicht auf NULL gesetzt

      Hallo,

      ich habe hier eine LED angeschlossen, kann sie auf 1 setzen aber dann nicht mehr auf 0.
      An dieser Stelle Interfaceactivated = 1 leuchtet die LED auf
      und an dieser Stelle Interfaceactivated = 0 bleibt sie weiterhin an.

      Warum?

      PS: alles andere funktioniert einwandfrei.

      hier der folgende code:

      BASCOM-Quellcode

      1. $regfile = "usb162.dat"
      2. $crystal = 8000000
      3. '$baud = 19200
      4. $hwstack = 64
      5. $swstack = 86
      6. $framesize = 86
      7. Config Portd.3 = Output
      8. Interfaceactivated Alias Portd.3
      9. If Wert1 = Deviceadresse Then 'Wenn die gesendete DeviceAdresse von der PC Software übereinstimmt
      10. Interfaceactivated = 1
      11. If Wert2 = 1 Then 'werden die ersten 32 Ausgänge angesprochen
      12. Ausgang1 = Wert3 'werden auch die Werte aus den Temp. Variable in die Ausgangsvariablen geschrieben.
      13. Ausgang2 = Wert4
      14. Ausgang3 = Wert5
      15. Ausgang4 = Wert6
      16. Shiftout Dout1 , Sck1 , Ausgang1 , 0 ' Daten werden an die jeweilige 74HC595 übergeben
      17. Shiftout Dout1 , Sck1 , Ausgang2 , 2 '"
      18. Shiftout Dout1 , Sck1 , Ausgang3 , 0 '"
      19. Shiftout Dout1 , Sck1 , Ausgang4 , 2 '"
      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. Elseif Wert2 = 2 Then 'werden die nächsten 32 Ausgänge angesprochen
      23. Ausgang5 = Wert3 'werden auch die Werte aus den Temp. Variable in die Ausgangsvariablen geschrieben.
      24. Ausgang6 = Wert4
      25. Ausgang7 = Wert5
      26. Ausgang8 = Wert6
      27. Shiftout Dout2 , Sck2 , Ausgang8 , 2 ' Daten werden an die jeweilige 74HC595 übergeben
      28. Shiftout Dout2 , Sck2 , Ausgang7 , 0 '"
      29. Shiftout Dout2 , Sck2 , Ausgang6 , 2 '"
      30. Shiftout Dout2 , Sck2 , Ausgang5 , 0 '"
      31. Rck2 = 1 'PIN 12 bei 74HC595 wird kurz auf high und dann wieder auf low gesetzt, damit die Daten zum Ausgangsregister rutschen
      32. Rck2 = 0
      33. End If
      34. Config Portb.7 = Output 'Hier wird der PIN 13 von 74HC595 für immer auf low gesetzt,
      35. G Alias Portb.7
      36. G = 0
      37. Interfaceactivated = 0
      38. End If
      Alles anzeigen
      Es geht nur um die LED unter Interfaceactivated
    • stefanhamburg schrieb:

      Schreib zum Testen einmal an den Anfang des Progammes (vor das IF)

      Quellcode

      1. Interfaceactivated = 1
      2. waitms 500
      3. Interfaceactivated = 0
      4. waitms 500
      5. Interfaceactivated = 1
      Um Einzukreisen, dass es wirklich in der Ecke faul ist und nicht an der Logik des restlichen Programmes liegt.

      Gibt es bei dem Chip ein JTAG über die Fuses zu deaktivieren?
      Habe jetzt so geschrieben

      Interfaceactivated = 1
      Waitms 500
      Interfaceactivated = 0



      und es bleibt immer noch an.
    • Michael schrieb:

      Vermutlich hast du die Loop vergessen.
      Dein Programm läuft nämlich nur ein einziges mal durch.
      Das ganze befindet sich bereits in einem Loop



      BASCOM-Quellcode

      1. Do
      2. Usb_task 'call this subroutine once in a while
      3. Hid_task 'call this subroutine once in a while
      4. 'you can call your sub program here
      5. Loop
      6. 'HID task must be checked regular
      7. Sub Hid_task()
      8. If Usb_connected = 1 Then ' Check USB HID is enumerated
      9. Usb_select_endpoint Ep_hid_out ' Get Data Repport From Host
      10. If Ueintx.rxouti = 1 Then ' Is_usb_receive_out())
      11. 'Die ankommende Daten werden zunächst in eine Temp. Variable übergeben. Wert1, Wert2, Wert3, Wert4
      12. Wert1 = Uedatx 'DeviceAddresse
      13. Wert2 = Uedatx 'ChannelAddresse (1 - 2; 1= Die ersten 32 Ausgänge 2= Die nächste 32 Ausgänge)
      14. Wert3 = Uedatx 'Value3 for 1 - 8
      15. Wert4 = Uedatx 'Value4 for 9 - 16
      16. Wert5 = Uedatx 'Value5 for 17 - 24
      17. Wert6 = Uedatx 'Value6 for 25 - 32
      18. Wert7 = Uedatx 'NC
      19. Wert8 = Uedatx 'NC
      20. Usb_ack_receive_out
      21. End If
      22. If Wert1 = Deviceadresse Then 'Wenn die gesendete DeviceAdresse von der PC Software übereinstimmt
      23. Interfaceactivated = 1
      24. Waitms 500
      25. Interfaceactivated = 0
      26. If Wert2 = 1 Then 'werden die ersten 32 Ausgänge angesprochen
      27. Ausgang1 = Wert3 'werden auch die Werte aus den Temp. Variable in die Ausgangsvariablen geschrieben.
      28. Ausgang2 = Wert4
      29. Ausgang3 = Wert5
      30. Ausgang4 = Wert6
      31. Shiftout Dout1 , Sck1 , Ausgang1 , 0 ' Daten werden an die jeweilige 74HC595 übergeben
      32. Shiftout Dout1 , Sck1 , Ausgang2 , 2 '"
      33. Shiftout Dout1 , Sck1 , Ausgang3 , 0 '"
      34. Shiftout Dout1 , Sck1 , Ausgang4 , 2 '"
      35. Rck1 = 1 'PIN 12 bei 74HC595 wird kurz auf high und dann wieder auf low gesetzt, damit die Daten zum Ausgangsregister rutschen
      36. Rck1 = 0 '"
      37. Elseif Wert2 = 2 Then 'werden die nächsten 32 Ausgänge angesprochen
      38. Ausgang5 = Wert3 'werden auch die Werte aus den Temp. Variable in die Ausgangsvariablen geschrieben.
      39. Ausgang6 = Wert4
      40. Ausgang7 = Wert5
      41. Ausgang8 = Wert6
      42. Shiftout Dout2 , Sck2 , Ausgang8 , 2 ' Daten werden an die jeweilige 74HC595 übergeben
      43. Shiftout Dout2 , Sck2 , Ausgang7 , 0 '"
      44. Shiftout Dout2 , Sck2 , Ausgang6 , 2 '"
      45. Shiftout Dout2 , Sck2 , Ausgang5 , 0 '"
      46. Rck2 = 1 'PIN 12 bei 74HC595 wird kurz auf high und dann wieder auf low gesetzt, damit die Daten zum Ausgangsregister rutschen
      47. Rck2 = 0
      48. End If
      49. Config Portb.7 = Output 'Hier wird der PIN 13 von 74HC595 für immer auf low gesetzt,
      50. G Alias Portb.7
      51. G = 0
      52. Interfaceactivated = 0
      53. End If
      54. If Ausgang1 = &H55 And Ausgang2 = &HAA Then ' Check if we received DFU mode command from host
      55. Usb_detach ' Detach Actual Generic Hid Application
      56. Waitms 500
      57. Goto &H1800 'goto bootloader
      58. 'here you could call the bootloader then
      59. End If
      60. Usb_select_endpoint Ep_hid_in ' Ready to send these information to the host application
      61. If Ueintx.txini = 1 Then ' Is_usb_in_ready())
      62. Uedatx = Ausgang1
      63. Uedatx = Ausgang2
      64. Uedatx = Ausgang3
      65. Uedatx = Ausgang4
      66. Uedatx = Deviceadresse
      67. Uedatx = Devicetype 'BlockNo
      68. Uedatx = 1
      69. Uedatx = 8
      70. Usb_ack_fifocon ' Send data over the USB
      71. Uedatx = Ausgang5
      72. Uedatx = Ausgang6
      73. Uedatx = Ausgang7
      74. Uedatx = Ausgang8
      75. Uedatx = Deviceadresse
      76. Uedatx = Devicetype 'BlockNo
      77. Uedatx = 2
      78. Uedatx = 8
      79. Usb_ack_fifocon ' Send data over the USB
      80. End If
      81. End If
      82. Reset Watchdog
      83. Timeout = 0
      84. End Sub
      Alles anzeigen