Serielle Schnittstelle in Verbindung mit Warteschleife

    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!

    • Serielle Schnittstelle in Verbindung mit Warteschleife

      Moin
      Ich habe Probleme mit "Inputbin" und einer Zeitschleife. Ist agal ob Wait oder mit Timer. Es werden zyklisch pro Sekunde 15 Byte übertragen. Nach dem RESET wird immer nur der erste richtig in Array geschrieben.
      Danach immer nur Nullen. Ohne Zeitschleife vorweg, ist alles OK. Das Programm ist nur zum Testen. Kann man mir da weiterhelfen?
      73s
      HaJo

      $regfile = "attiny2313.dat"
      $crystal = 12000000
      $hwstack = 40
      $swstack = 16
      $framesize = 32
      $baud = 9600
      $eeprom


      Config Portd.2 = Output
      Portd.2 = 0 ' SN75176 ist auf Empfang geschaltet
      Config Portd.5 = Input ' Heller Alias Portd.5
      Config Portd.6 = Input ' Dunkler Alias Portd.6
      Portd.5 = 1 ' Eingang mit Pullups Versehen
      Portd.6 = 1 ' Eingang mit Pullups Versehen



      Open "COMD.4:9600,8,n,1" For Output As #1 ' PinD.4 ist TXD ( Software UART)
      Dim Rs485_daten_array(15) As Byte' At Rs485_data als Array zum bearbeiten
      Declare Sub Warten 'Sub Prozedur Zeitscheife
      Dim St_bit_1 As Byte ' St_Bit als die Bit-Variable



      Config Timer1 = Timer , Prescale = 1024 'Konfiguriere Timer1
      On Timer1 Isr_von_timer1 'verzweige bei Timer1 überlauf zu Isr_von_Timer1
      Enable Interrupts



      Print #1, "------"
      Call Warten ' Warteschleife von 5 Sek
      '----------------------------------------------------------------------------------------------------------------------------------------------------


      Do
      Inputbin Rs485_daten_array(1),15


      Print #1, rs485_daten_array(2)
      Loop
      '----------------------------------------------------------------------------------------------------------------------------------------------------
      Isr_von_timer1: 'ISR von Timer1
      St_bit_1.3 = 1 ' Erkennbit für Zeitschleife
      Print #1, "ISR"
      Return


      '****************************************************************************************************************************************************


      SUB Warten
      Enable Timer1
      Timer1 = 6942
      Print #1, "Warte"
      Warte:
      If St_bit_1.3 = 0 Then
      Goto Warte
      Else
      St_bit_1.3 = 0
      End If
      Disable Timer1
      End Sub


      End
    • Hier läuts wie erwachtet: Einmalig wird die Warteschleife aufgerufen. Danach wartet er auf 15 Bytes am Hardware RX und sendet nachdem sie eingegangen sind nur das zweite Byte über den Software Usart. Das ganze in einer Endlosschleife ohne weitere Wartezeiten. Sind da Störungen auf der Leitung die zu Null führen oder ist das zweite Byte wirklich Null?

      PS Das blau oben gesehen?