From extensive testing...I have found that the LPC22xx just ignores an
invalid feed.
I have come across this in Motorola's Power PC chip also.
Ken Wada
--- In lpc2000@yahoogroups.com, "Ake Hedman, eurosource" <akhe@b...>
wrote:
>
> Ken,
>
> yes this is probably it (as zdravko_k_d@y... also pointed out
> earlier). Strange not to have an atomic feed. First time I have
come
> across that. I have the code taken apart now to try to track this
down.
> But all the symptoms of the problems I have match what should be
> expected from the watchdog triggering from something else then not
just
> lack of feed.
>
> What happens if the watchdog is feed with the wrong sequence? Is it
> triggered or does it just ignore it?
>
> Appreciate your input Ken.
>
> /Ake
>
> Ken Wada wrote:
>
> > Basically, your method works fine...
> > UNTIL: you start adding interrupt service routines!
> >
> > This is why:
> > void WDOG_pet()
> > {
> > WDFEED = 0xAA;
> > /* Interrupt occurs here...> dog will NOT pet
properly!!!
> > ***/
> > WDFEED = 0x55;
> > }
> >
> > /**** example uses Keil compiler directives ***/
> > /********** The following is what I wound up doing, (gotta avoid
that
> > spurious interrupt issue with the ARM also!!! ***/
> >
> > /**** The actual interface that everybody uses ***/
> > void WDOG_pet (void)
> > {
> > SYSSWI_service (12,0,0,0);
> > }
> >
> > /***** How the SYSSWI_service works, (based on SWI) ***/
> > unsigned SYSSWI_service (SYSSWI opcode, int id, void *pObj,
unsigned
> > _user1) __swi(12)
> > {
> > switch (opcode)
> > {
> > case SYSSWI_WDOGPET:
> > SYSSWI_watchDogPet ();
> > break;
> > ...
> > }
> > return (0);
> > }
> >
> > /***** How the SYSSWI_watchDogPet () works ***/
> > static void SYSSWI_watchDogPet (void)
> > {
> > ARM_disableFIQ (); /* make sure FIQ is disabled
> > */
> > WDFEED = 0xAA;
> > WDFEED = 0x55;
> > ARM_enableFIQ (); /* re-enable the FIQ
> > */
> > }
> >
> > /***** The IRQ is automatically disabled by vectoring to the SWI..
.
> > however, you need to make the operation atomic with respect to
FIQ,
> > which is NOT disabled ***/
> >
> > PUBLIC ARM_disableFIQ?A ; interface is ARM mode
> >
> > ARM_disableFIQ?A PROC CODE32
> > MRS R0,CPSR
> > ORR R0,R0,#0x0040 ; Mask just the FIQ
> > MSR CPSR_c,R0
> > BX R14
> >
> > ENDP
> >
> > PUBLIC ARM_enableFIQ?A ; interface is ARM mode
> >
> > ARM_enableFIQ?A PROC CODE32
> > MRS R0,CPSR
> > BIC R0,R0,#0x0040 ; Enable just the FIQ
> > MSR CPSR_c,R0
> > BX R14
> >
> > ENDP
> > END
> >
> >
> > --- In lpc2000@yahoogroups.com, "Ake Hedman, eurosource" <akhe@b..
.>
> > wrote:
> > >
> > > Hi all.
> > >
> > > I am trying to enable the watchdog but the result is a total
hang of
> > the
> > > board. Not even the bootloader is possible to reach after the
crash
> > and
> > > I have to reapply power with P0.14 low to get access to the
> > botloader
> > > again. Reset is not enough.
> > >
> > > The code to initialize the watchdog is
> > >
> > > // initialize the watchdog timer
> > > WDTC = 0xffffffff; // 15000000; //
One
> > second
> > > = 15000000
> > > WDMOD = WDEN | WDRESET; // Activate
watchdog
> > > WDFEED = 0xAA; WDFEED = 0x55;
> > >
> > > I must have misunderstood the WD functionality. What am I doing
> > wrong?
> > > In the above code the watchdog should not trigger until 5
minutes
> > > elapsed so even if a vector should be wrong the code that follow
> > should
> > > run for a while but as soon as I write to the WDMOD register I
get a
> > hang.
> > >
> > > /Ake
> > >
> > > --
> > > ---
> > > Ake Hedman (YAP - Yet Another Programmer)
> > > eurosource, Brattbergavägen 17, 820 50 LOS, Sweden
> > > Phone: (46) 657 413430 Cellular: (46) 73 84 84 102
> > > Company home: http://www.eurosource.se
> > > Kryddor/Te/Kaffe: http://www.brattberg.com
> > > Personal homepage: http://www.eurosource.se/akhe
> > > Automated home: http://www.vscp.org
> > >
> >
> >
> >
> >
> >
> >
> > SPONSORED LINKS
> > Microprocessor
> > <http://groups.yahoo.com/gads?
t=ms&k=Microprocessor&w1=Microprocessor&w2=Microcontrollers&w3=Pic+mic
rocontrollers&w4=8051+microprocessor&c=4&s=93&.
sig=tsVC-J9hJ5qyXg0WPR0l6g>
> > Microcontrollers
> > <http://groups.yahoo.com/gads?
t=ms&k=Microcontrollers&w1=Microprocessor&w2=Microcontrollers&w3=Pic+m
icrocontrollers&w4=8051+microprocessor&c=4&s=93&.
sig=DvJVNqC_pqRTm8Xq01nxwg>
> > Pic microcontrollers
> > <http://groups.yahoo.com/gads?
t=ms&k=Pic+microcontrollers&w1=Microprocessor&w2=Microcontrollers&w3=P
ic+microcontrollers&w4=8051+microprocessor&c=4&s=93&.
sig=TpkoX4KofDJ7c6LyBvUqVQ>
> >
> > 8051 microprocessor
> > <http://groups.yahoo.com/gads?
t=ms&k=8051+microprocessor&w1=Microprocessor&w2=Microcontrollers&w3=Pi
c+microcontrollers&w4=8051+microprocessor&c=4&s=93&.
sig=1Ipf1Fjfbd_HVIlekkDP-A>
> >
> >
> >
> >
----------------------------------------------------------------------
--
> > YAHOO! GROUPS LINKS
> >
> > * Visit your group "lpc2000
> > <http://groups.yahoo.com/group/lpc2000>" on the web.
> >
> > * To unsubscribe from this group, send an email to:
> > lpc2000-unsubscribe@yahoogroups.com
> > <mailto:lpc2000-unsubscribe@yahoogroups.com?
subject=Unsubscribe>
> >
> > * Your use of Yahoo! Groups is subject to the Yahoo! Terms of
> > Service <http://docs.yahoo.com/info/terms/>.
> >
> >
> >
----------------------------------------------------------------------
--
> >
>
>
> --
> ---
> Ake Hedman (YAP - Yet Another Programmer)
> eurosource, Brattbergavägen 17, 820 50 LOS, Sweden
> Phone: (46) 657 413430 Cellular: (46) 73 84 84 102
> Company home: http://www.eurosource.se
> Kryddor/Te/Kaffe: http://www.brattberg.com
> Personal homepage: http://www.eurosource.se/akhe
> Automated home: http://www.vscp.org
>
>
>
> [Non-text portions of this message have been removed]
>Message
Re: Problem with watchdog
2005-12-09 by Ken Wada
Attachments
- No local attachments were found for this message.