Okay so I feel like an idiot for not figuring this out earlier, but I'll put it down to not writing picolisp before. Anyways, I figured out what is wrong, sbcl if statement works like so:

 (if test-form then-form else-form)

And the Picolisp works the same, and the easiest way to do multiple things in the "then-form" is with progn on SBCL, or prog on Picolisp :/ so the correct code to get it to blink is:

# A simple program which demonstrates
# the usage of user-buttons.
# declare pins
(setq led 'PB_29 button 'PX_16)

# a simple delay function
(de delay (t)
   (tmr-delay 0 t) )

# make sure the LED starts in
# the "off" position and enable
# input/output pins
(de init-pins ()
   (pio-pin-sethigh led)
   (pio-pin-setdir *pio-output* led)
   (pio-pin-setdir *pio-input* button) )

# And now, the main loop
(de prog-loop ()
   (init-pins)
   (loop
      (if (= 0 (pio-pin-getval button))
        (prog (pio-pin-setlow led)
              (delay 100000)
              (pio-pin-sethigh led)
              (delay 100000) ) ) ) )

(prog-loop)


*drops mic*
anyways, I got it working using that exact code, I've edited the wiki book.
*picks up mic and drops it again*
Thanks :P


On 20/12/15 13:48, J B wrote:
No circuit just the plain old Mizar B. The Example from the hempl wiki book is flashing PB_29. I'm Ubuntu to connect with terminal.

Sent from my iPhone

On Dec 20, 2015, at 12:12 PM, pd <eukel...@gmail.com <mailto:eukel...@gmail.com>> wrote:

sorry if you already said this but what platform are you using? also a schematic of your circuit would be interesting even being so simple

On Sun, Dec 20, 2015 at 3:18 AM, Josh <k1llfre...@hotmail.co.uk <mailto:k1llfre...@hotmail.co.uk>> wrote:

    Thought it might be a firmware problem or something, so I just
    re-flashed the firmware but it's still happening, just
    eliminating possibilities. Also the second of my last emails was
    the correct one, I canceled the previous but it sent anyways.
    Thanks.


    On 19/12/15 12:50, Josh wrote:
    I have put the main code onto the sd card and I use the shell to
    call the function prog-loop. The light just stays on. I've had
    this problem before with the example blink program, if I change
    any of it to make it shorter by using shorter function names
    like (de low () (pio-pin-setlow 'PB_29)) it doesn't work, but it
    does when it's just (pio-pijn-setlow 'PB_29). I don't really
    know what's going on, but it's starting to get irritating.
    On 19/12/15 03:45, Raman Gopalan wrote:

    Dear Josh, greetings!

    Firstly, great to know you're playing with your board! Perfect!

    > Why does this small amount of code not make the onboard LED
    flash?

    I think you're not providing enough delay for you to see the
    off state
    of the LED. Why don't you try this? I've just inserted an
    additional
    delay.

    (pio-pin-setdir *pio-output* 'PB_29)
    (pio-pin-sethigh 'PB_29)

    (loop
       (pio-pin-setlow 'PB_29)
       (tmr-delay 0 100000)
       (pio-pin-sethigh 'PB_29)
       (tmr-delay 0 100000) )

    > Any ideas? Also this example on the hempl wiki book:

    This example doesn't blink the on-board LED. It just reads the
    status
    of an input pin (SW-1 I think; the one near the voltage
    regulator) and
    turns the blue LED on when this input switch is pressed.

    > # And now, the main loop
    > (de prog-loop ()
    >    (init-pins)
    >    (loop
    >       (if (= 0 (pio-pin-getval button))
    >          (pio-pin-setlow led)
    >          (delay 100000)
    >          (pio-pin-sethigh led)
    >          (delay 100000) ) ) )

    Please copy the example on your micro-SD card and point picolisp in
    the direction of this file. If this doesn't happen, something
    strange
    is happening. We can then debug. But I'm almost certain it'll
    work :)

    Hempl# picolisp /mmc/user-button.l

    R

    P.S. You may also use the internal transient symbol
    `*tmr-sys-timer*'
    in the function tmr-delay. I think it uses a hardware PWM
    channel to
    generate the time (can't remember which; I'll have to see the
    sources
    again). That makes the timing accurate.


    On 18 December 2015 at 22:08, Josh <k1llfre...@hotmail.co.uk
    <mailto:k1llfre...@hotmail.couk>> wrote:

        Why does this small amount of code not make the onboard LED
        flash?
        (pio-pin-setdir *pio-output* 'PB_29)
        (pio-pin-sethigh 'PB_29)
        (loop (pio-pin-setlow 'PB_29)
                 (tmr-delay 0 100000)
                 (pio-pin-sethigh 'PB_29))
        All that happens in the blue LED turns on and stays on,
        even though the code clearly says for it to go from high to
        low repeatedly. Any ideas? Also this example on the hempl
        wiki book:

        # A simple program which demonstrates
        # the usage of user-buttons.
         # declare pins
        (setq led 'PB_29 button 'PX_16)

        # a simple delay function
        (de delay (t)
           (tmr-delay 0 t) )

        # make sure the LED starts in
        # the "off" position and enable
        # input/output pins
        (de init-pins ()
           (pio-pin-sethigh led)
           (pio-pin-setdir *pio-output* led)
           (pio-pin-setdir *pio-input* button) )

        # And now, the main loop
        (de prog-loop ()
           (init-pins)
           (loop
              (if (= 0 (pio-pin-getval button))
                 (pio-pin-setlow led)
                 (delay 100000)
                 (pio-pin-sethigh led)
                 (delay 100000) ) ) )

        (prog-loop)

        Doesn't make the LED flash it just stays on.

-- UNSUBSCRIBE: mailto:picolisp@software-lab.de
        <mailto:picolisp@software-lab.de>?subject=Unsubscribe







--
Andrés

/~ La mejor manera de librarse de la tentación es caer en ella//. ~ Oscar Wilde/ ~

Reply via email to