<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.arm.com/utility/feedstylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Software Reset</title><link>https://community.arm.com/developer/tools-software/tools/f/keil-forum/18093/software-reset</link><description> I can generate a software reset by the following code: 
 
((void (code *) (void)) 0x0000) (); 
 
After the reset, however, my application no longer responds to my interrupts. How can I reinizialize all my interrupts in C? 
 
Any help would be appreciated</description><dc:language>en-US</dc:language><generator>Telligent Community 10</generator><item><title>RE: Software Reset</title><link>https://community.arm.com/thread/111601?ContentTypeID=1</link><pubDate>Thu, 18 Aug 2005 09:18:56 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:72b5c8f1-fbd6-410b-a0c3-b23096ca1d67</guid><dc:creator>erik  malund</dc:creator><description>&lt;p&gt;&lt;i&gt;I was using the watchdog before but thought there might be a more &amp;quot;elegant&amp;quot; way of doing it.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
HUH ?&lt;br /&gt;
what could be better than&lt;br /&gt;
while(1); // let the puppy bite to reset the processor&lt;br /&gt;
or&lt;br /&gt;
jmp $ ;let the puppy bite to reset the processor&lt;br /&gt;
&lt;br /&gt;
both &lt;b&gt;use the hardware&lt;/b&gt; to generate a reset which is a &lt;b&gt;hardware&lt;/b&gt; function.&lt;br /&gt;
&lt;br /&gt;
Erik&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Software Reset</title><link>https://community.arm.com/thread/97391?ContentTypeID=1</link><pubDate>Thu, 18 Aug 2005 09:07:22 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:8b1bc864-018a-4d9a-946e-e20ee0a26755</guid><dc:creator>Paul Marley</dc:creator><description>&lt;p&gt;Thnaks for all the help.&lt;br /&gt;
&lt;br /&gt;
I was using the watchdog before but thought there might be a more &amp;quot;elegant&amp;quot; way of doing it.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Software Reset</title><link>https://community.arm.com/thread/87342?ContentTypeID=1</link><pubDate>Thu, 18 Aug 2005 08:56:09 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:99a9c310-b77a-43bb-9016-8cc5db3368d5</guid><dc:creator>erik  malund</dc:creator><description>&lt;p&gt;&lt;i&gt;My guess is that you are making that call from within an interrupt service routine so the interrupt hardware is never being reset by a RETI.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Excellent guess.  I do belive even the right one.&lt;br /&gt;
&lt;br /&gt;
To recover the interrupt status, you must pad the stack and execute a reti.  Somethimes you need to do it more than once.  One derivative, I do not recall which, lock up if you do too many, but most can handle you doing it for, say, 3 times without locking up.&lt;br /&gt;
&lt;br /&gt;
Use the watchdog, it WORKS ALWAYS.&lt;br /&gt;
&lt;br /&gt;
Erik&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Software Reset</title><link>https://community.arm.com/thread/44523?ContentTypeID=1</link><pubDate>Thu, 18 Aug 2005 07:36:31 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:2290978c-de7c-468a-b2e6-9caf2b74c780</guid><dc:creator>John Donaldson</dc:creator><description>&lt;p&gt;&amp;quot;I can generate a software reset by the following code:&lt;br /&gt;
&lt;br /&gt;
((void (code *) (void)) 0x0000) ();&lt;br /&gt;
&lt;br /&gt;
After the reset, however, my application no longer responds to my interrupts. How can I reinizialize all my interrupts in C?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
My guess is that you are making that call from within an interrupt service routine so the interrupt hardware is never being reset by a RETI.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Software Reset</title><link>https://community.arm.com/thread/44519?ContentTypeID=1</link><pubDate>Wed, 17 Aug 2005 14:03:35 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:1ffc01aa-8106-4b1f-a46e-1a0596cc9a77</guid><dc:creator>erik  malund</dc:creator><description>&lt;p&gt;&lt;i&gt;I can generate a software reset by the following code:&lt;br /&gt;
&lt;br /&gt;
((void (code *) (void)) 0x0000) ();&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
everybody and his brother &amp;quot;can generate a software reset by the following code&amp;quot; very few can make it work.&lt;br /&gt;
&lt;br /&gt;
To make it work by this method, you must &lt;b&gt;meticuously&lt;/b&gt; restore the reset value of each and every SFR at the beginning of startup/a51.&lt;br /&gt;
&lt;br /&gt;
The ONE safe and &lt;b&gt;easy&lt;/b&gt; method is to let the watchdog time out.&lt;br /&gt;
&lt;br /&gt;
Erik&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>