Shop OBEX P1 Docs P2 Docs Learn Events
BS2sx with 8 inputs triggered simultaneously — Parallax Forums

BS2sx with 8 inputs triggered simultaneously

ArchiverArchiver Posts: 46,084
edited 2002-06-25 01:05 in General Discussion
Hello:

I'm developing a BS2sx application that monitors 8 inputs which, most
of the time, are activated simultaneously. My problem is when 1 input
is activated, the BS2 will not "see" the other inputs while it is
busy processing the subroutines of the previous input. I tried
extending the duration of an input using a 555 timer but it is still
not enough in most instances.

Somebody recommends using a Motorola Analog Multiplexer IC MC14051B.
Anybody tested and used this before?

Appreciate any help for this newbie. Thanks.

Comments

  • ArchiverArchiver Posts: 46,084
    edited 2002-06-24 15:07
    Here's an approach that may help: sample all 8 inputs simultaneously,
    then process one or more active inputs one at a time.

    Suppose you have your 8 inputs on I/O 0 through I/O 7--

    triggers VAR BYTE

    again:
    triggers = INL ; sample all 8 inputs
    IF $FF - INL THEN again ; check for any active low inputs
    -or-
    IF INL THEN again ; check for any active high inputs

    check0:
    IF triggers.BIT0 THEN check1 ; I/O 0, active low
    -or-
    IF 1 - triggers.BIT0 THEN check1 ; I/O 0, active high
    do whatever if I/O 0 active....

    check1:
    .
    .
    .
    check7:
    IF triggers.BIT7 THEN again ; I/O 7, active low
    -or-
    IF 1 - triggers.BIT7 THEN again ; I/O 0, active high
    do whatever is I/O 7 active....
    GOTO again

    If this still misses input activations, you could refresh triggers
    throughout the loop, but that gets a little more complicated.


    Regards,

    Steve


    robertdelamerced wrote:

    > ...My problem is when 1 input is activated, the BS2 will not "see"
    > the other inputs while it is busy processing the subroutines of the
    > previous input...
  • ArchiverArchiver Posts: 46,084
    edited 2002-06-25 01:05
    Thanks for this. I will try this one and will check if there are
    other inputs not processed by BS2sx.

    --- In basicstamps@y..., "S Parkis" <parkiss@e...> wrote:
    > Here's an approach that may help: sample all 8 inputs
    simultaneously,
    > then process one or more active inputs one at a time.
    >
    > Suppose you have your 8 inputs on I/O 0 through I/O 7--
    >
    > triggers VAR BYTE
    >
    > again:
    > triggers = INL ; sample all 8 inputs
    > IF $FF - INL THEN again ; check for any active low inputs
    > -or-
    > IF INL THEN again ; check for any active high inputs
    >
    > check0:
    > IF triggers.BIT0 THEN check1 ; I/O 0, active low
    > -or-
    > IF 1 - triggers.BIT0 THEN check1 ; I/O 0, active high
    > do whatever if I/O 0 active....
    >
    > check1:
    > .
    > .
    > .
    > check7:
    > IF triggers.BIT7 THEN again ; I/O 7, active low
    > -or-
    > IF 1 - triggers.BIT7 THEN again ; I/O 0, active high
    > do whatever is I/O 7 active....
    > GOTO again
    >
    > If this still misses input activations, you could refresh triggers
    > throughout the loop, but that gets a little more complicated.
    >
    >
    > Regards,
    >
    > Steve
    >
    >
    > robertdelamerced wrote:
    >
    > > ...My problem is when 1 input is activated, the BS2 will not "see"
    > > the other inputs while it is busy processing the subroutines of
    the
    > > previous input...
Sign In or Register to comment.