EmbeddedRelated.com
Forums

LPC17xx SCB->AIRCR:SYSRESETREQ

Started by Triffid Hunter December 15, 2012
Hi,

The LPC17xx user's manual (UM10360) says that SCB->AIRCR:SYSRESETREQ
is not supported by LPC17xx, and yet NXP's own CMSIS 2.0 for LPC17xx
implements NVIC_SystemReset() using it.

When I use NVIC_SystemReset in my programs, it appears to function as intended.

Is the datasheet wrong, is SYSRESETREQ actually supported on LPC17xx?

An Engineer's Guide to the LPC2100 Series

Hello Hunter)
You found a good bug) thanks.

I think that you a right. I mean that LPC does NOT support this CMSIS
kernel feature.
and NVIC_SystemReset() is done by ARM people but NXP people did NOT do
support of this hack.

So I advice you to 1.__enable_wdt() and 2. __disable_interrupt() and 3.
while (1==1);

2012/12/15 Triffid Hunter

> **
> Hi,
>
> The LPC17xx user's manual (UM10360) says that SCB->AIRCR:SYSRESETREQ
> is not supported by LPC17xx, and yet NXP's own CMSIS 2.0 for LPC17xx
> implements NVIC_SystemReset() using it.
>
> When I use NVIC_SystemReset in my programs, it appears to function as
> intended.
>
> Is the datasheet wrong, is SYSRESETREQ actually supported on LPC17xx?
>
>

--
CMake build environment project
for micro-controllers (use
it or
addyou
favorite MCU )


From CMSIS\Device\NXP\Drivers\Examples\WDT\RESET\wdt_reset_test.c

// Initialize WDT, IRC OSC, interrupt mode, timeout = 5000000us = 5s
WDT_Init(WDT_CLKSRC_IRC, WDT_MODE_RESET);
// Start watchdog with timeout given
WDT_Start(WDT_TIMEOUT);

//infinite loop to wait chip reset from WDT
while(1);


Il 18/12/2012 22:26, Dimirtos Cherepanov ha scritto:
> Hello Hunter)
> You found a good bug) thanks.
>
> I think that you a right. I mean that LPC does NOT support this CMSIS
> kernel feature.
> and NVIC_SystemReset() is done by ARM people but NXP people did NOT do
> support of this hack.
>
> So I advice you to 1.__enable_wdt() and 2. __disable_interrupt() and 3.
> while (1==1);
What LPC microcontroller are you using? And what IDE and compilers are
you using?
Because I use NVIC_SystemReset() on a LPC1769 and it put the
microcontroller in reset. I also checked these functionalities with a
LPC175x and also in this case it works. I made a try with LpcXpresso 5
and it is ok.
> 2012/12/15 Triffid Hunter > **
>> Hi,
>>
>> The LPC17xx user's manual (UM10360) says that SCB->AIRCR:SYSRESETREQ
>> is not supported by LPC17xx, and yet NXP's own CMSIS 2.0 for LPC17xx
>> implements NVIC_SystemReset() using it.
>>
>> When I use NVIC_SystemReset in my programs, it appears to function as
>> intended.
>>
>> Is the datasheet wrong, is SYSRESETREQ actually supported on LPC17xx?
>>
>>



Hello Dimirtos,

Tuesday, December 18, 2012, 10:43:48 PM, you wrote:

DC> From CMSIS\Device\NXP\Drivers\Examples\WDT\RESET\wdt_reset_test.c

DC> // Initialize WDT, IRC OSC, interrupt mode, timeout = 5000000us = 5s
DC> WDT_Init(WDT_CLKSRC_IRC, WDT_MODE_RESET);
DC> // Start watchdog with timeout given
DC> WDT_Start(WDT_TIMEOUT);

DC> //infinite loop to wait chip reset from WDT
DC> while(1);

Instead of waiting, just send an invalid feed sequence to the WDT, it
will cause immediate reset.

--
WBR,
Igor mailto:s...@mail.ru

Hi all,

The LPC1700 does supporting SYSRESETREQ, and NVIC_SystemReset() should work without any issue. We have scheduled update in LPC17xx User Manual to reflect this.

Thank you for brought this up

Regards,
Daniel Widyanto
Application Engineer,
NXP Semiconductors

-----Original Message-----
From: l... [mailto:l...] On Behalf Of Dimirtos Cherepanov
Sent: Wednesday, 19 December, 2012 5:26 AM
To: l...
Subject: Re: [lpc2000] LPC17xx SCB->AIRCR:SYSRESETREQ

Hello Hunter)
You found a good bug) thanks.

I think that you a right. I mean that LPC does NOT support this CMSIS kernel feature.
and NVIC_SystemReset() is done by ARM people but NXP people did NOT do support of this hack.

So I advice you to 1.__enable_wdt() and 2. __disable_interrupt() and 3.
while (1==1);

2012/12/15 Triffid Hunter

> **
> Hi,
>
> The LPC17xx user's manual (UM10360) says that SCB->AIRCR:SYSRESETREQ
> is not supported by LPC17xx, and yet NXP's own CMSIS 2.0 for LPC17xx
> implements NVIC_SystemReset() using it.
>
> When I use NVIC_SystemReset in my programs, it appears to function as
> intended.
>
> Is the datasheet wrong, is SYSRESETREQ actually supported on LPC17xx?

On Wed, Dec 19, 2012 at 5:07 PM, Daniel Widyanto
wrote:
> The LPC1700 does supporting SYSRESETREQ, and NVIC_SystemReset() should work without any issue. We have scheduled update in LPC17xx User Manual to reflect this.
>
> Thank you for brought this up

Thanks for official confirmation and fixing the manual :)
Il 19/12/2012 07:07, Daniel Widyanto ha scritto:
>
>
> Hi all,
>
> The LPC1700 does supporting SYSRESETREQ, and NVIC_SystemReset() should
> work without any issue. We have scheduled update in LPC17xx User
> Manual to reflect this.
>
> Thank you for brought this up
>
> Regards,
> Daniel Widyanto
> Application Engineer,
> NXP Semiconductors
>
> -----Original Message-----
> From: l...
> [mailto:l... ] On
> Behalf Of Dimirtos Cherepanov
> Sent: Wednesday, 19 December, 2012 5:26 AM
> To: l...
> Subject: Re: [lpc2000] LPC17xx SCB->AIRCR:SYSRESETREQ
>
> Hello Hunter)
> You found a good bug) thanks.
>
> I think that you a right. I mean that LPC does NOT support this CMSIS
> kernel feature.
> and NVIC_SystemReset() is done by ARM people but NXP people did NOT do
> support of this hack.
>
It works perfectly almost from the beginning I started to use LPC17xx.
It was a not well documented feature but to be correct NXP initially
didn't documented the ARM core functions at all in their manuals. After
some time they added an Appendix with some documentation about them.
I found it studying ARM Cortex-M3 core documentation during the 1st
project I did some years ago and I already posted an email here.
If you look well on the CMSIS files you will find it and it is not so
difficult to test that it works.
> So I advice you to 1.__enable_wdt() and 2. __disable_interrupt() and 3.
> while (1==1);
>
> 2012/12/15 Triffid Hunter > > > **
> >
> >
> > Hi,
> >
> > The LPC17xx user's manual (UM10360) says that SCB->AIRCR:SYSRESETREQ
> > is not supported by LPC17xx, and yet NXP's own CMSIS 2.0 for LPC17xx
> > implements NVIC_SystemReset() using it.
> >
> > When I use NVIC_SystemReset in my programs, it appears to function as
> > intended.
> >
> > Is the datasheet wrong, is SYSRESETREQ actually supported on LPC17xx?