<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic LPC1114, RedProbe+: stepping through an interrupt fails in LPCXpresso IDE</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1114-RedProbe-stepping-through-an-interrupt-fails/m-p/590977#M29377</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by nevis123 on Mon Aug 29 01:42:03 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm trying to get a first step in with the LPC1114 (running on 48MHz) on a LPCXpresso board. My problem is that I always get an error if I'm stepping through my TIMER_16_0 interrupt service routine. I set a breakboint on the line &amp;lt; if(LPC_TMR16B0-&amp;gt;IR &amp;amp; (1&amp;lt;&amp;lt;0)) { &amp;gt; but if the debugger stops and I start single stepping through the code an error "10: Could not start execution from stop" appears,&amp;nbsp; if I only hit resume everything is fine.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Since I'm debugging with the RedProbe+ and a virtual Windows XP machine, I first thought that it might be a virtualisation problem,&amp;nbsp; with my Laptop and Windows 7 but I got the same error message there.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Then I realized that I had to adjust the FLASHTIM register according to the mcu speed (btw. is this define missing in the header files?) but this also doesn't solve the problem.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;To exclude some cabeling issues,&amp;nbsp; I did a (fast) setup with the Yagarto and JLink as debug tool. With the result that stepping through the ISR works fine.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If I disable the PLL so that the mcu only runs at 12MHz everything seems to be fine. Any ideas what is going wrong on my 48MHz setup?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
typedef struct
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t flashtim;
} tflashtim;
#define LPC_FLASHTIM ((tflashtim *) 0x4003C010)


void TIMER16_0_IRQHandler(void) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(LPC_TMR16B0-&amp;gt;IR &amp;amp; (1&amp;lt;&amp;lt;0)) {&amp;nbsp; //breakpoint is here
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static int i;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ++i;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;IR |= (1&amp;lt;&amp;lt;0);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}

int main(void) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; volatile int i;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= (1&amp;lt;&amp;lt;7); //enable clock for 16bit timer 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_8 = 0x02;&amp;nbsp;&amp;nbsp;&amp;nbsp; //select pin function for match 0 timer 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;MR0 = 1000;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;MCR |= (1&amp;lt;&amp;lt;1); //reset on MR0 match
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;MCR |= (1&amp;lt;&amp;lt;0); //enable interrupt on match 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;EMR |= (3&amp;lt;&amp;lt;4); //toggle pin on match
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;IR |= (1&amp;lt;&amp;lt;0);&amp;nbsp;&amp;nbsp;&amp;nbsp; //reset pending interrupt flag
&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_EnableIRQ(TIMER_16_0_IRQn);&amp;nbsp;&amp;nbsp;&amp;nbsp; //general enable of TIMER_16_IRQ
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;TCR |= (1&amp;lt;&amp;lt;0); //Counter enable

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_FLASHTIM-&amp;gt;flashtim |= (2&amp;lt;&amp;lt;0);

&amp;nbsp;&amp;nbsp;&amp;nbsp; //target speed = 48MHz, irc=12MHz
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSPLLCLKSEL = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; //pll source clock = internal rc oscillator
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSPLLCTRL |= 3&amp;lt;&amp;lt;0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //m divider value = 4
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSPLLCTRL |= 1&amp;lt;&amp;lt;5;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //p divider value = 2;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSPLLCLKUEN &amp;amp;= ~(1&amp;lt;&amp;lt;0);&amp;nbsp;&amp;nbsp;&amp;nbsp; //toggle pll clock update
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSPLLCLKUEN |= (1&amp;lt;&amp;lt;0);

&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!(LPC_SYSCON-&amp;gt;SYSPLLSTAT &amp;amp; 1)){&amp;nbsp;&amp;nbsp;&amp;nbsp; //wait for pll to lock
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i++;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;MAINCLKSEL = 3;&amp;nbsp;&amp;nbsp;&amp;nbsp; //set pll as main clock
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;MAINCLKUEN = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; //toggle main clock update
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;MAINCLKUEN = 1;

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;CLKOUTCLKSEL = 3;&amp;nbsp;&amp;nbsp;&amp;nbsp; //CLKOUT clock source = System oscillator
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;CLKOUTDIV |= 10;&amp;nbsp;&amp;nbsp;&amp;nbsp; //CLKOUT divider = 1
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_1 |= 0x01;&amp;nbsp;&amp;nbsp;&amp;nbsp; //pin has clock out function
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;CLKOUTUEN &amp;amp;= ~(1&amp;lt;&amp;lt;0);&amp;nbsp;&amp;nbsp;&amp;nbsp; //toggle clockout update
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;CLKOUTUEN |= 1&amp;lt;&amp;lt;0;

&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ++i;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 21:28:41 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T21:28:41Z</dc:date>
    <item>
      <title>LPC1114, RedProbe+: stepping through an interrupt fails</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1114-RedProbe-stepping-through-an-interrupt-fails/m-p/590977#M29377</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by nevis123 on Mon Aug 29 01:42:03 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm trying to get a first step in with the LPC1114 (running on 48MHz) on a LPCXpresso board. My problem is that I always get an error if I'm stepping through my TIMER_16_0 interrupt service routine. I set a breakboint on the line &amp;lt; if(LPC_TMR16B0-&amp;gt;IR &amp;amp; (1&amp;lt;&amp;lt;0)) { &amp;gt; but if the debugger stops and I start single stepping through the code an error "10: Could not start execution from stop" appears,&amp;nbsp; if I only hit resume everything is fine.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Since I'm debugging with the RedProbe+ and a virtual Windows XP machine, I first thought that it might be a virtualisation problem,&amp;nbsp; with my Laptop and Windows 7 but I got the same error message there.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Then I realized that I had to adjust the FLASHTIM register according to the mcu speed (btw. is this define missing in the header files?) but this also doesn't solve the problem.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;To exclude some cabeling issues,&amp;nbsp; I did a (fast) setup with the Yagarto and JLink as debug tool. With the result that stepping through the ISR works fine.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If I disable the PLL so that the mcu only runs at 12MHz everything seems to be fine. Any ideas what is going wrong on my 48MHz setup?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
typedef struct
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t flashtim;
} tflashtim;
#define LPC_FLASHTIM ((tflashtim *) 0x4003C010)


void TIMER16_0_IRQHandler(void) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(LPC_TMR16B0-&amp;gt;IR &amp;amp; (1&amp;lt;&amp;lt;0)) {&amp;nbsp; //breakpoint is here
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static int i;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ++i;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;IR |= (1&amp;lt;&amp;lt;0);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}

int main(void) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; volatile int i;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= (1&amp;lt;&amp;lt;7); //enable clock for 16bit timer 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_8 = 0x02;&amp;nbsp;&amp;nbsp;&amp;nbsp; //select pin function for match 0 timer 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;MR0 = 1000;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;MCR |= (1&amp;lt;&amp;lt;1); //reset on MR0 match
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;MCR |= (1&amp;lt;&amp;lt;0); //enable interrupt on match 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;EMR |= (3&amp;lt;&amp;lt;4); //toggle pin on match
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;IR |= (1&amp;lt;&amp;lt;0);&amp;nbsp;&amp;nbsp;&amp;nbsp; //reset pending interrupt flag
&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_EnableIRQ(TIMER_16_0_IRQn);&amp;nbsp;&amp;nbsp;&amp;nbsp; //general enable of TIMER_16_IRQ
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;TCR |= (1&amp;lt;&amp;lt;0); //Counter enable

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_FLASHTIM-&amp;gt;flashtim |= (2&amp;lt;&amp;lt;0);

&amp;nbsp;&amp;nbsp;&amp;nbsp; //target speed = 48MHz, irc=12MHz
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSPLLCLKSEL = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; //pll source clock = internal rc oscillator
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSPLLCTRL |= 3&amp;lt;&amp;lt;0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //m divider value = 4
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSPLLCTRL |= 1&amp;lt;&amp;lt;5;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //p divider value = 2;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSPLLCLKUEN &amp;amp;= ~(1&amp;lt;&amp;lt;0);&amp;nbsp;&amp;nbsp;&amp;nbsp; //toggle pll clock update
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSPLLCLKUEN |= (1&amp;lt;&amp;lt;0);

&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!(LPC_SYSCON-&amp;gt;SYSPLLSTAT &amp;amp; 1)){&amp;nbsp;&amp;nbsp;&amp;nbsp; //wait for pll to lock
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i++;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;MAINCLKSEL = 3;&amp;nbsp;&amp;nbsp;&amp;nbsp; //set pll as main clock
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;MAINCLKUEN = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; //toggle main clock update
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;MAINCLKUEN = 1;

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;CLKOUTCLKSEL = 3;&amp;nbsp;&amp;nbsp;&amp;nbsp; //CLKOUT clock source = System oscillator
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;CLKOUTDIV |= 10;&amp;nbsp;&amp;nbsp;&amp;nbsp; //CLKOUT divider = 1
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_1 |= 0x01;&amp;nbsp;&amp;nbsp;&amp;nbsp; //pin has clock out function
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;CLKOUTUEN &amp;amp;= ~(1&amp;lt;&amp;lt;0);&amp;nbsp;&amp;nbsp;&amp;nbsp; //toggle clockout update
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;CLKOUTUEN |= 1&amp;lt;&amp;lt;0;

&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ++i;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:28:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1114-RedProbe-stepping-through-an-interrupt-fails/m-p/590977#M29377</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:28:41Z</dc:date>
    </item>
  </channel>
</rss>

