Grundsätzliches Pulsin

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • 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?
      Files
      • pulsein.bas

        (761 Byte, downloaded 14 times, last: )
    • Hallo Michael,Hallo Mitch64

      habe es mittlerweile gefunden und ausgeführt.
      Ctrl+Alt+P funktioniert nicht.
      Aber über Menue-Editieren geht es.
      Programm wird neu formatiert.
      Aber ich sehe das Problem nicht
      oder ich bin zu dumm.

      Gruß
      Jürgen
    • Logischer Denkfehler!

      BASCOM Source Code

      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
      Display All
      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 Source Code

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

      BASCOM Source Code

      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 Source Code

      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
      Display All


      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
    • Hallo Robert,

      vielen Dank für die Codebeispiele.
      Ich möchte mir eine kleine Datenbank mit Beispielen anlegen,weil man einiges doch
      wieder vergisst.Darum frage ich hier im forum,wenn ich nicht weiter weis.

      Deswegen noch einmal Dank an alle.

      Gruß
      Jürgen