This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
RE: Enable EDB7xxx interrupts
- To: "'Dan Conti'" <danc at iobjects dot com>,"'eCos discussion'" <ecos-discuss at sources dot redhat dot com>
- Subject: RE: [ECOS] Enable EDB7xxx interrupts
- From: "Trenton D. Adams" <trent dot nospam at telusplanet dot net>
- Date: Mon, 25 Jun 2001 18:52:08 -0600
- Cc: <tadams at extremeeng dot com>
> > > > Then I have a thread that continuously prints out the PCMCIA
> > > > controller interrupt information.
> > > >
> > > > Anyhow, the printf () in the interrupt handler never
> > occurs. What
> > > > could be wrong?
> > >
> > > A missing \n? For an interrupt handler it is _lots_ better to
> > > use diag_printf from <cyg/infra/diag.h>. printf is not
> > interrupt safe.
> > It's still not working. I took everything out as you suggested.
> >
> > I've attached my program.
>
> Is EINT1 brought out anywhere on the board? Have you scoped
> it? I take it PCCIRRx are registers that control whether or
> not the pc card controller trips EINT1 on a card interrupt?
> For PCIOSR you indicate that you can switch interrupts
> between EINT1 and the fiq, have you tried setting up a
> handler on the fiq to see if that is catching any of your
> interrupts? Is EINT1 shared on that board? Is it possible
> that something else is holding it in limbo? From the cirrus
> web page, the cl-ps6700 can only be clocked at 13 or 18mHz, i
> take it your bus speed is adjusted appropriately? It might
> help if you included your definitions for PCCIRR1, PCPMR,
> PCSICR, PCIOSR, and a brief snippet of the output from your
> program. Also, out of convention, it's a bit more clear if
> you use the pin definitions in hal_edb7xxx.h, such as
> SYSCON2_PCMCIA1 instead of 0x020.
>
> In general your interrupt usage looks ok, i would be more
> suspicious about the setup of the controller or the hardware
> than eCos interrupt management.
Thanks for the reply
PCCIRR = PC Card Interrupt Reserved Register
These need to be set to all 1s in order for interrupts to be
enabled.
PCIOSR = PC Card Interrupt Output Select
This register selects which interrupts are output to what line.
Eg EINT1
PCICR = PC Card Interrupt Clear Register
I've got eCos set to 18Mhz on top of doing it manually in my code. The
line with SYSCON3 does this. But, as I said, eCos is set for 18Mhz
anyhow.
I'm pretty sure EINT1 is not shared. If it is, it's eCos sharing it,
and I don't know if it is or not.
As for using the predefined values in edb7xxx header file, it's just a
testing program so I didn't bother.