This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: AT91 on EB55 DSR is started only once
- From: Nick Garnett <nickg at ecoscentric dot com>
- To: Marcel Ovidiu Achim <marcel dot achim at ovidius-ib dot de>
- Cc: ecos-discuss at ecos dot sourceware dot org
- Date: 18 May 2005 17:46:15 +0100
- Subject: Re: [ECOS] AT91 on EB55 DSR is started only once
- References: <E1DXzpq-0007Bq-00@mrelay.alturo.net><428AD5CA.4080900@ovidius-ib.de>
Marcel Ovidiu Achim <marcel.achim@ovidius-ib.de> writes:
> Dear all,
>
> I am experiencing some weird behaviour when trying to setup a timer
> interrupt on an EB55 board.
> I attached the relevant code below.
> What happens is that the DSR is started only once after init from main,
> and then never again, although the
> timer interrupt is shown to occur (on an ascilloscope).
> By accident I discovered that this can be fixed if I insert the
> following line in the DSR:
>
> HAL_READ_UINT32( AT91_TC1 + AT91_TC_SR, i );
>
> Although the read seems to have no impact of the content of the SR
> register,
> it seems to magically have the DSR activated again.
The timers need the SR register to be read to clear the interrupt,
although this does not seem to be documented. Take a look at the code
in eCos that sets up timer0 to generate clock interrupts.
> I could live fine with that, but then other external interrupts seem to
> considerably bring down overall system performance.
> What am I overseeing here? Can anyone please help?
I'm afraid I cannot help with these other interrupts, but I doubt that
they have anything to do with your timer. Try turning on assertions
and find out where they are coming from.
--
Nick Garnett eCos Kernel Architect
http://www.ecoscentric.com The eCos and RedBoot experts
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss