Grundsätzliches Pulsin

    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!

    • Grundsätzliches Pulsin

      Hallo,

      ich bin dabei,BASCOM Befehle zu ergründen.
      Diesmal : Pulsin
      Wenn kein Signal erkannt wird doch das Err-bit gesetzt.
      Kann man abfragen " if Err=1 then.......
      Was passiert wenn Signale anliegen ?
      Hab mir ein Testprogramm geschrieben um das zu erkunden.
      Aber meine LED bleiben dunkel.Oder läuft das zu schnell ab.
      Aber Led3 müsste blinken wenn am PinD.6 eine 0 anliegt.

      wo ist das Problem?
      Dateien
      • pulsein.bas

        (761 Byte, 19 mal heruntergeladen, zuletzt: )
    • Logischer Denkfehler!

      BASCOM-Quellcode

      1. if Err=1 then ' wenn kein Signal erkannt wird dann Err=1
      2. toggle LED1
      3. if Err=0 then
      4. toggle LED2
      5. if pind.6=0 then 'sollte eigentlich blinken wenn Signal 0 anliegt
      6. toggle LED3
      7. end if
      8. end if
      9. end if
      Alles anzeigen
      Dein If-Block von Zeile 1 endet mit Zeile 13.
      Die Abarbeitung des Blockt wird durchgeführt, wenn ERR=1 ist.
      Und darin frägst du in Zeile 4 ab, ob jetzt ERR=0 ist?

      ERR ist entweder 0 oder eins aber nicht beises.
    • Hi Jürgen,

      ich "vermute" mal, dass Dir die Schreibweisen von If-Abfragen Schwierigkeiten machen. Schau Dir mal folgende zwei Codeschnipsel an:

      BASCOM-Quellcode

      1. If Err = 1 then Toggle LED1
      2. If Err = 0 then Toggle LED2

      BASCOM-Quellcode

      1. If Err = 1 then
      2. Toggle LED1
      3. End If
      4. If Err = 0 then
      5. Toggle LED2
      6. End If
      Beide Codes machen genau das GLEICHE. Aber achte auf die Syntax!
      Im ersten Codeschnipsel stehen die If-Abfragen in einer Zeile (dann benötigst Du KEIN "End If").
      Im zweiten Codeschnipsel wird ein Zeilenumbruch gemacht (dann ist zwingend ein "End If" nötig um die aktuelle Abfrage zu beenden).

      Da Du offensichtlich das Setzen und Löschen des Error-Bits auswerten möchtest, würde ich das nicht mit dem Togglen der LEDs machen. Denn damit erkennst Du maximal eine Änderung des Error-Bits, weißt aber immer noch nicht, ob es gerade gesetzt ist oder nicht.

      Teste evt. mal das hier:

      BASCOM-Quellcode

      1. Do
      2. Pulsein Sensor , pind , 6 , 1 '1= Messung der High-Phase
      3. If Err = 1 then ' Kommen die Flankenwechsel des Signals zu langsam, dann Err=1
      4. LED1 = 1 ' LED leuchtet
      5. Else
      6. LED1 = 0 ' Kommen die Flankenwechsel schnell genug, ist die LED aus
      7. End If
      8. If pind.6 = 0 then ' Zeigt den Pegel am Eingangs-Pin
      9. LED3 = 0
      10. Else
      11. LED3 = 1
      12. End If
      13. Loop
      14. End
      Alles anzeigen


      Bedenke, dass PulseIn einen Timeout von 655,35 mS hat (je nach crystal). Wenn in dieser Zeit keine steigende und fallende Flanke erkannt wird, wird das Error-Bit gesetzt.

      Gruß
      Robert