This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Problem reading buttons on AT91sam7s-ek


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]