# PULSIN Example

Syntax: PULSIN

    ' PULSIN.BS1
    ' This program uses PULSIN to measure a pulse generated by discharging a
    ' 0.1 uF capacitor through a 1K resistor. Pressing the switch generates
    ' the pulse, which should ideally be approximately 120 us (12 PULSIN units
    ' of 10 us) long. Variations in component values may produce results that
    ' are up to 10 units off from this value. For more information on calculating
    ' resistor-capacitor timing, see the RCTIME command.

    ' {$STAMP BS1}
    ' {$PBASIC 1.0}

    SYMBOL  Pulse           = 7             ' pulse input pin

    SYMBOL  time            = W1            ' pulse width (10 uS units)

    Main:
      PULSIN Pulse, 1, time                 ' measure positive pulse
      IF time = 0 THEN Main                 ' if 0, try again
      DEBUG CLS, time                       '   else display result
      GOTO Main
      END

NOTE: The example below is written for the BS2 and will run on any of the BS2-family modules. Modify the $STAMP directive (as required) before downloading to the BS2e, BS2sx, BS2p, BS2pe, or BS2px.

    ' PULSIN.BS2
    ' This program uses PULSIN to measure a pulse generated by discharging a
    ' 0.1 uF capacitor through a 1K resistor. Pressing the switch generates
    ' the pulse, which should ideally be approximately 120 us (60 PULSIN units
    ' of 2 us) long (for BS2 and BS2e). Variations in component values may
    ' produce results that are up to 10 units off from this value.  For more
    ' information on calculating resistor-capacitor timing, see the RCTIME
    ' command.

    ' {$STAMP BS2}
    ' {$PBASIC 2.5}

    Pulse           PIN     7               ' pulse input pin

    #SELECT $STAMP
      #CASE BS2, BS2E, BS2PE
        Scale       CON     $200            ' 2.0 us per unit
      #CASE BS2SX
        Scale       CON     $0CD            ' 0.8 us per unit
      #CASE BS2P
        Scale       CON     $0C0            ' 0.75 us per unit
      #CASE BS2PX
        Scale       CON     $0CF            ' 0.81 us per unit
    #ENDSELECT

    time            VAR     Word

    Main:
      PULSIN Pulse, 1, time                 ' measure positive pulse
      IF (time > 0) THEN                    ' if not 0
        DEBUG HOME,
              DEC time, " units ", CLREOL   ' display raw input
        time = time */ Scale                ' adjust for Stamp
        DEBUG CR,
              DEC time, " us  "             ' display microseconds
      ELSE
        DEBUG CLS, "Out of Range"           ' else error message
      ENDIF
      PAUSE 200
      GOTO Main
      END

Go to Welcome page

BASIC Stamp Help Version 2.5.4

Copyright © Parallax Inc.

8/8/2012