[ECOS] AT91 on EB55 DSR is started only once

Nick Garnett nickg@ecoscentric.com
Thu May 19 04:25:00 GMT 2005


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



More information about the Ecos-discuss mailing list