public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
From: Andrew Lunn <andrew@lunn.ch>
To: Rasmus Stougaard <stou.nospam@gmail.com>
Cc: ecos-discuss@ecos.sourceware.org
Subject: Re: [ECOS] Problem reading buttons on AT91sam7s-ek
Date: Tue, 02 Oct 2007 13:40:00 -0000	[thread overview]
Message-ID: <20071002134010.GC30037@lunn.ch> (raw)
In-Reply-To: <dbc951020710020604x78903db7p14ed2eb367a534ec@mail.gmail.com>

On Tue, Oct 02, 2007 at 03:04:16PM +0200, Rasmus Stougaard wrote:
> > >   // Enable the clock to the GPIO (enable input sampling)
> > >   HAL_WRITE_UINT32(AT91_PMC + AT91_PMC_PCER, AT91_PMC_PCER_PIOA);
> >
> > You only need to enable the clock once. You could move this outside of
> > the read function.
> 
> Ok thanks again, will do that. I also plan to convert my example to a
> macro, to save the overhead of making the function call.
> 
> >
> > Maybe i should add a macro to var_io.h to enable/disable the clock?
> 
> That might be a good idea, or add a comment to
> HAL_ARM_AT91_GPIO_CFG_DIRECTION
> and
> HAL_ARM_AT91_GPIO_GET
> stating that the clock must be enabled to receive inputs. At least it
> was not obvios to me, and others might benefit too :-)

It is in the data sheet, but i guess not everybody reads that.
 
> By the way can you point me to an example/documentation of how to use
> HAL_ARM_AT91_GPIO_CFG_INTERRUPT
> 
> I want to setup the buttons to generate interupts for handling user input.
> I have found some domentation of how to set up ISR and DSR using
> cyg_interrupt_create().

I don't think there is any code which actually uses it. It also might
not of been tested. 

You should get an interrupt on CYGNUM_HAL_INTERRUPT_PIOA. Again the
clock needs to be enabled. If i remember correctly the GPIO interrupts
are edge triggered, so you should get an interrupt for button press
and button release. To find out which has happened you need to read
first the interrupt status register, for which there is no macro at
the moment, to find out which GPIO line caused the interrupt. Then
read the GPIO pin to get its current state. You probably also need to
add debounce logic in software.

    Andrew

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

      reply	other threads:[~2007-10-02 13:40 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-01 12:27 Rasmus Stougaard
2007-10-01 14:28 ` Andrew Lunn
2007-10-02 11:40   ` Rasmus Stougaard
2007-10-02 11:47     ` Andrew Lunn
2007-10-02 13:04       ` Rasmus Stougaard
2007-10-02 13:40         ` Andrew Lunn [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20071002134010.GC30037@lunn.ch \
    --to=andrew@lunn.ch \
    --cc=ecos-discuss@ecos.sourceware.org \
    --cc=stou.nospam@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).