Hi I am nearing the end of our first project with the LPC2294 and need to implement the watchdog. I am pretty sure I have it setup correctly, and with it in its debug mode I can cause a jump to the watchDog IRQ routine when I put the uP into an endless loop. As part of its functionality external interrupts are disabled until the equipment is set to GO, and this where the problems start. As soon as I enable the external interrupt the watchdog timer jumps to its ISR. (The external interrupts are set to FIQ and at 8uS intervals) Even with the watchdog timer set to a very very long timeout (i.e. ten seconds) as soon as external interrupts are enabled we jump to the WatchDog ISR. With the watchdog set to Off everything else works as expected. With the watchdog set to On but no external interrupts everything works as expected. When I kick the watchdog I am disabling all the interrupts using the VIC. Do I have to jump to system mode and disable the global IRQ and FIQ flags? This would probably be too slow... Has anyone else seen anything like this? At the moment its driving me nuts. many thanks Simon |
|
Watchdog and external Interrupt problem
Started by ●February 27, 2005
Reply by ●February 27, 20052005-02-27
At 03:22 PM 2/27/05 +0000, itsjustimpossible wrote: >When I kick the watchdog I am disabling all the interrupts using the >VIC. Do I have to jump to system mode and disable the global IRQ and >FIQ flags? This would probably be too slow... What mode are you normally in? You can't disable interrupts in user mode, but there is really no reason to ever be in user mode. Robert " 'Freedom' has no meaning of itself. There are always restrictions, be they legal, genetic, or physical. If you don't believe me, try to chew a radio signal. " Kelvin Throop, III |
Reply by ●February 28, 20052005-02-28
Yes I got fed up too. Get an external watchdog chip...you want to be able to 'scope' a real reset signal from something independent of the the LPC chip when the CPU screws up. If anything it will let you sleep at night, when you've got thousands of products out there in the field. Jane --- itsjustimpossible <> wrote: --------------------------------- Hi I am nearing the end of our first project with the LPC2294 and need to implement the watchdog. I am pretty sure I have it setup correctly, and with it in its debug mode I can cause a jump to the watchDog IRQ routine when I put the uP into an endless loop. As part of its functionality external interrupts are disabled until the equipment is set to GO, and this where the problems start. As soon as I enable the external interrupt the watchdog timer jumps to its ISR. (The external interrupts are set to FIQ and at 8uS intervals) Even with the watchdog timer set to a very very long timeout (i.e. ten seconds) as soon as external interrupts are enabled we jump to the WatchDog ISR. With the watchdog set to Off everything else works as expected. With the watchdog set to On but no external interrupts everything works as expected. When I kick the watchdog I am disabling all the interrupts using the VIC. Do I have to jump to system mode and disable the global IRQ and FIQ flags? This would probably be too slow... Has anyone else seen anything like this? At the moment its driving me nuts. many thanks Simon --------------------------------- Yahoo! Groups Links To Send instant messages to your online friends http://uk.messenger.yahoo.com |
Reply by ●February 28, 20052005-02-28
It sounds like you have a watchdog flag already lodged, ie even though not enabled the watchdog still runs, and, as soon as it becomes enabled , with ints enabled the old pending flag is executed. Try clearing any pending flags before enabling the watchdog. Al jane highland wrote: > Yes I got fed up too. Get an external watchdog > chip...you want to be able to 'scope' a real reset > signal from something independent of the the LPC chip > when the CPU screws up. > > If anything it will let you sleep at night, when > you've got thousands of products out there in the > field. > Jane > --- itsjustimpossible <> wrote: > > --------------------------------- > > Hi > I am nearing the end of our first project with the > LPC2294 and need > to implement the watchdog. > > I am pretty sure I have it setup correctly, and with > it in its debug > mode I can cause a jump to the watchDog IRQ routine > when I put the > uP into an endless loop. > > As part of its functionality external interrupts are > disabled until > the equipment is set to GO, and this where the > problems start. As > soon as I enable the external interrupt the watchdog > timer jumps to > its ISR. (The external interrupts are set to FIQ and > at 8uS > intervals) > > Even with the watchdog timer set to a very very long > timeout (i.e. > ten seconds) as soon as external interrupts are > enabled we jump to > the WatchDog ISR. > > With the watchdog set to Off everything else works as > expected. > With the watchdog set to On but no external interrupts > everything > works as expected. > > When I kick the watchdog I am disabling all the > interrupts using the > VIC. Do I have to jump to system mode and disable the > global IRQ and > FIQ flags? This would probably be too slow... > > Has anyone else seen anything like this? > At the moment its driving me nuts. > > many thanks > Simon > > > --------------------------------- > >. > > |
Reply by ●March 15, 20052005-03-15
Thanks to all those who replied. Sorry for the delay in replying, finally got back to working on this again. Just a quick question, yes I am in User mode all the time which means doing a software interrupt to change mode to disable/enable interrupts. This is all a bit too slow. We are not using an RTOS, so are there any drawbacks with staying in Supervisor mode as you suggest? many thanks Simon --- In , Robert Adsett <subscriptions@a...> wrote: > At 03:22 PM 2/27/05 +0000, itsjustimpossible wrote: > >When I kick the watchdog I am disabling all the interrupts using the > >VIC. Do I have to jump to system mode and disable the global IRQ and > >FIQ flags? This would probably be too slow... > > What mode are you normally in? You can't disable interrupts in user mode, > but there is really no reason to ever be in user mode. > > Robert > > " 'Freedom' has no meaning of itself. There are always restrictions, > be they legal, genetic, or physical. If you don't believe me, try to > chew a radio signal. " > > Kelvin Throop, III |
|
Reply by ●March 15, 20052005-03-15
At 07:43 PM 3/15/05 +0000, itsjustimpossible wrote: >Thanks to all those who replied. Sorry for the delay in replying, >finally got back to working on this again. > >Just a quick question, yes I am in User mode all the time which >means doing a software interrupt to change mode to disable/enable >interrupts. This is all a bit too slow. > >We are not using an RTOS, so are there any drawbacks with staying in >Supervisor mode as you suggest? Actually I'd suggest system mode. The only difference between User and System mode is (AFAIK) that in system mode you can control the interrupt and mode bits. RTOS or not, on this small a micro I see no benefit to user mode. Robert " 'Freedom' has no meaning of itself. There are always restrictions, be they legal, genetic, or physical. If you don't believe me, try to chew a radio signal. " -- Kelvin Throop, III http://www.aeolusdevelopment.com/ |
Reply by ●March 16, 20052005-03-16
Thanks, I will keep to system mode from now on. A bit embaressing, but I seem to be having all kinds of trouble getting the watchdog to do anything sensible. I don't suppose anyone knows of some example code to give me an idea of where I am going wrong? I have scrapped all the watchdog handler bits I have done so far and am starting again. I really wish I had gone with an external one, but its all too late now. The boards are done... many thanks Simon --- In , Robert Adsett <subscriptions@a...> > Actually I'd suggest system mode. The only difference between User and > System mode is (AFAIK) that in system mode you can control the interrupt > and mode bits. RTOS or not, on this small a micro I see no benefit to user > mode. > > Robert |