From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19686 invoked by alias); 2 Oct 2007 13:40:18 -0000 Received: (qmail 19676 invoked by uid 22791); 2 Oct 2007 13:40:16 -0000 X-Spam-Check-By: sourceware.org Received: from londo.lunn.ch (HELO londo.lunn.ch) (80.238.139.98) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 02 Oct 2007 13:40:14 +0000 Received: from lunn by londo.lunn.ch with local (Exim 3.36 #1 (Debian)) id 1Ichys-0006ND-00; Tue, 02 Oct 2007 15:40:10 +0200 Date: Tue, 02 Oct 2007 13:40:00 -0000 From: Andrew Lunn To: Rasmus Stougaard Cc: ecos-discuss@ecos.sourceware.org Message-ID: <20071002134010.GC30037@lunn.ch> Mail-Followup-To: Rasmus Stougaard , ecos-discuss@ecos.sourceware.org References: <20071001142828.GA22379@lunn.ch> <20071002114722.GA30037@lunn.ch> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.16 (2007-06-11) X-IsSubscribed: yes Mailing-List: contact ecos-discuss-help@ecos.sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: ecos-discuss-owner@ecos.sourceware.org Subject: Re: [ECOS] Problem reading buttons on AT91sam7s-ek X-SW-Source: 2007-10/txt/msg00024.txt.bz2 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