<?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 Timer interrupt in S12 / MagniV Microcontrollers</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timer-interrupt/m-p/478007#M11963</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm using a MC9S12XF521 microcontroller.&lt;/P&gt;&lt;P&gt;I want to create a function (timer_1_ms) which configure a timer and enable to counte the timer. After the timer has finished to count-down, an interrupt while set a semaphore in order to go out to the timer_1_ms() function. My problem is about using an IRQ. I don't know my code doesn't work.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/*******************************************************************************/&lt;/P&gt;&lt;P&gt;/* Timer 1 ms&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;/*******************************************************************************/&lt;/P&gt;&lt;P&gt;void timer_1_ms(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* with Clock_Settings(), the bus' speed is 40MHz */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; blink_led(LED5_MASK);&amp;nbsp;&amp;nbsp; /* LED5 for indicate that we are in the function */&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITCE_PITCE0 = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Le timer0 is disable, so doesn't count&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; timer_1_ms_flag = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* semaphore used to speak between timer_1_ms() function and the IRQ */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITCSTP &amp;amp;= ~BIT0_MASK;&amp;nbsp; /* The timer0 wont wait a bit set of PITFLT register to count again after an overflow */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITMTLD0 = 200;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Load of the timer0 8bits at 200 =&amp;gt; increment of the 16bits timer0 each 5us */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITLD0 = 200;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Load of the timer0 16bits at 200 =&amp;gt; flag each 1ms */&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITTF_PITTF0 = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* interrupt flag is clear (just in case) */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITINTE_PITINTE0 = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Interrup of the&amp;nbsp; timer0 is enable */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITCE_PITCE0 = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* The timer 0 is enable to count */&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITCFLMT_PITE = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* The PIT module si enable */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (timer_1_ms_flag != 1){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LED1 = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* LED1 ON to show that we are in the loop */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; blink_led(LED2_MASK);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* LED2 ON to show that we are out of the loop */&lt;/P&gt;&lt;P&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;/*******************************************************************************/&lt;/P&gt;&lt;P&gt;/* Timer Interrupt Service Routine&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;/*******************************************************************************/&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG __NEAR_SEG NON_BANKED&lt;/P&gt;&lt;P&gt;void interrupt Timer_Isr(void)&lt;/P&gt;&lt;P&gt;{&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; blink_led(LED4_MASK);&amp;nbsp;&amp;nbsp;&amp;nbsp; /* LED4 ON to show that we are in the timer interrupt routine*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(PITTF_PITTF0 == 1){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITCE_PITCE0 = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable the timer0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITTF_PITTF0 = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Clear the flag */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; blink_led(LED3_MASK);&amp;nbsp; /* LED3 ON to show that we are in the subroutine*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; timer_1_ms_flag = 1;&amp;nbsp; /* semaphore at 1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG TIMER_ISR_CODE&lt;/P&gt;&lt;P&gt;/*******************************************************************************/&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you,&lt;/P&gt;&lt;P&gt;Pierre&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 26 Apr 2016 10:04:32 GMT</pubDate>
    <dc:creator>pierrel</dc:creator>
    <dc:date>2016-04-26T10:04:32Z</dc:date>
    <item>
      <title>Timer interrupt</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timer-interrupt/m-p/478007#M11963</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm using a MC9S12XF521 microcontroller.&lt;/P&gt;&lt;P&gt;I want to create a function (timer_1_ms) which configure a timer and enable to counte the timer. After the timer has finished to count-down, an interrupt while set a semaphore in order to go out to the timer_1_ms() function. My problem is about using an IRQ. I don't know my code doesn't work.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/*******************************************************************************/&lt;/P&gt;&lt;P&gt;/* Timer 1 ms&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;/*******************************************************************************/&lt;/P&gt;&lt;P&gt;void timer_1_ms(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* with Clock_Settings(), the bus' speed is 40MHz */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; blink_led(LED5_MASK);&amp;nbsp;&amp;nbsp; /* LED5 for indicate that we are in the function */&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITCE_PITCE0 = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Le timer0 is disable, so doesn't count&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; timer_1_ms_flag = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* semaphore used to speak between timer_1_ms() function and the IRQ */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITCSTP &amp;amp;= ~BIT0_MASK;&amp;nbsp; /* The timer0 wont wait a bit set of PITFLT register to count again after an overflow */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITMTLD0 = 200;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Load of the timer0 8bits at 200 =&amp;gt; increment of the 16bits timer0 each 5us */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITLD0 = 200;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Load of the timer0 16bits at 200 =&amp;gt; flag each 1ms */&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITTF_PITTF0 = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* interrupt flag is clear (just in case) */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITINTE_PITINTE0 = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Interrup of the&amp;nbsp; timer0 is enable */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITCE_PITCE0 = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* The timer 0 is enable to count */&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITCFLMT_PITE = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* The PIT module si enable */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (timer_1_ms_flag != 1){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LED1 = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* LED1 ON to show that we are in the loop */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; blink_led(LED2_MASK);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* LED2 ON to show that we are out of the loop */&lt;/P&gt;&lt;P&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;/*******************************************************************************/&lt;/P&gt;&lt;P&gt;/* Timer Interrupt Service Routine&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;/*******************************************************************************/&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG __NEAR_SEG NON_BANKED&lt;/P&gt;&lt;P&gt;void interrupt Timer_Isr(void)&lt;/P&gt;&lt;P&gt;{&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; blink_led(LED4_MASK);&amp;nbsp;&amp;nbsp;&amp;nbsp; /* LED4 ON to show that we are in the timer interrupt routine*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(PITTF_PITTF0 == 1){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITCE_PITCE0 = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable the timer0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITTF_PITTF0 = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Clear the flag */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; blink_led(LED3_MASK);&amp;nbsp; /* LED3 ON to show that we are in the subroutine*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; timer_1_ms_flag = 1;&amp;nbsp; /* semaphore at 1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG TIMER_ISR_CODE&lt;/P&gt;&lt;P&gt;/*******************************************************************************/&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you,&lt;/P&gt;&lt;P&gt;Pierre&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 26 Apr 2016 10:04:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timer-interrupt/m-p/478007#M11963</guid>
      <dc:creator>pierrel</dc:creator>
      <dc:date>2016-04-26T10:04:32Z</dc:date>
    </item>
    <item>
      <title>Re: Timer interrupt</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timer-interrupt/m-p/478008#M11964</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;After some investigation, I found the problem's source but not its solution...&lt;/P&gt;&lt;P&gt;The function timer_1_ms() works but when the timer finish to count-down, this is the rti_isr which is called by the interruption.&lt;/P&gt;&lt;P&gt;I use an project example to go faster in my development.&lt;/P&gt;&lt;P&gt;The new question is : How to call the good interrupt routine after an overflow of a timer ?&lt;/P&gt;&lt;P&gt;Thank you&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 26 Apr 2016 13:14:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timer-interrupt/m-p/478008#M11964</guid>
      <dc:creator>pierrel</dc:creator>
      <dc:date>2016-04-26T13:14:21Z</dc:date>
    </item>
    <item>
      <title>Re: Timer interrupt</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timer-interrupt/m-p/478009#M11965</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I found a little &lt;EM&gt;trick&lt;/EM&gt; to solve this problem ( I call an other function in the RTI_isr) but I'm afraid with using this for the future.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;If you have a suitable idea, please do not hesitate!&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Thank you (again),&lt;/P&gt;&lt;P&gt;Pierre&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 26 Apr 2016 13:28:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timer-interrupt/m-p/478009#M11965</guid>
      <dc:creator>pierrel</dc:creator>
      <dc:date>2016-04-26T13:28:26Z</dc:date>
    </item>
    <item>
      <title>Re: Timer interrupt</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timer-interrupt/m-p/478010#M11966</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Pierre,&lt;/P&gt;&lt;P&gt;The most important question is what do you want to do?&lt;/P&gt;&lt;P&gt;Do you want to have periodic interrupt every 1ms? Or do you want to generate 1ms interval?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the first case, PIT or RTI is correct choice (PIT is more precise, but RTI could run in pseudo STOP mode). They are designed for generating periodic interrupts.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the second case, the ECT timer will better choice. You don’t need to take care about divider, disable and enable module again….&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The example codes are here:&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-95116"&gt;https://community.freescale.com/docs/DOC-95116&lt;/A&gt;&lt;/P&gt;&lt;P&gt;For example: XEP100 - ECT 500us interval - CW47, XEP100 - ECT 500us period - CW47, XS128 - PIT - CW47, ...&lt;/P&gt;&lt;P&gt;And here:&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-329209"&gt;https://community.freescale.com/docs/DOC-329209&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note: Be careful with commands like "PITTF_PITTF0 = 1; /* Clear the flag */". This is read/modify/write command and it will clear all pending flags in PITTF register. Please use rather commands like PITTF=0x01; or PITTF=PITTF_PITTF0_MASK; for clearing specific flag. This is important in all cases where the register contains at least two flags which are cleared by writing log.1 = general rule.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I hope it helps you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;RadekS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 26 Apr 2016 16:08:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timer-interrupt/m-p/478010#M11966</guid>
      <dc:creator>RadekS</dc:creator>
      <dc:date>2016-04-26T16:08:24Z</dc:date>
    </item>
    <item>
      <title>Re: Timer interrupt</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timer-interrupt/m-p/478011#M11967</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi RadekS,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your answere. &lt;/P&gt;&lt;P&gt;Before your comment, I did not know the PIT interrupt. I worked in this way and I found a solution to my problem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;See after (in case it could help someone) my new code :&lt;/P&gt;&lt;P&gt;In &lt;EM&gt;Interrupts.c&lt;/EM&gt; :&lt;/P&gt;&lt;P&gt;/*******************************************************************************/&lt;/P&gt;&lt;P&gt;/* Timer Interrupt Service Routine */&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG __NEAR_SEG NON_BANKED&lt;/P&gt;&lt;P&gt;void interrupt Timer_Isr(void)&lt;/P&gt;&lt;P&gt;{&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(PITTF_PITTF0 == 1){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITCE_PITCE0 = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable the timer0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PITTF_PITTF0 = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Clear the flag */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; timer_1_ms_flag = 1;&amp;nbsp;&amp;nbsp; /* semaphore at 1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG TIMER_ISR_CODE&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;/*******************************************************************************/&lt;/P&gt;&lt;P&gt;In &lt;EM&gt;Vector.c&lt;/EM&gt; :&lt;/P&gt;&lt;P&gt;/* Interrupt vectors table */&lt;/P&gt;&lt;P&gt;typedef void (*near tIsrFunc)(void);&lt;/P&gt;&lt;P&gt;const tIsrFunc _InterruptVectorTable[] @0xFF10 = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* ISR name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; No.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Pri&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XGATE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name&amp;nbsp; &lt;/P&gt;&lt;P&gt;Timer_Isr,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 0x3D&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xFF7A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; no&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ivVpit0&lt;/P&gt;&lt;P&gt;/*******************************************************************************/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It was really hard to me to find the good vector in the vectors table. &lt;STRONG&gt;There is any document which talk about the interrupt and their vector ?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you,&lt;/P&gt;&lt;P&gt;Pierre&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 27 Apr 2016 14:20:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timer-interrupt/m-p/478011#M11967</guid>
      <dc:creator>pierrel</dc:creator>
      <dc:date>2016-04-27T14:20:44Z</dc:date>
    </item>
    <item>
      <title>Re: Timer interrupt</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timer-interrupt/m-p/478012#M11968</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Pierre,&lt;/P&gt;&lt;P&gt;I am glad that it works now.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;About interrupt vector numbers)&lt;/P&gt;&lt;P&gt;You may look at mc9s12xf512.h file and you will find this definition:&lt;/P&gt;&lt;P&gt;#define VectorNumber_Vpit0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 66U&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, you could directly define interrupt routine as:&lt;/P&gt;&lt;P&gt;interrupt VectorNumber_Vpit0 void Timer_Isr(void)&lt;/P&gt;&lt;P&gt;or as&lt;/P&gt;&lt;P&gt;interrupt 66 void Timer_Isr(void)&lt;/P&gt;&lt;P&gt;In such case, you don’t need vector table.&lt;/P&gt;&lt;P&gt;The next option is definition this vector number in prm linker file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The interrupt number 0 presents POR reset vector, 1 is CM reset, 2 is COP reset, ... , 119 is Spurious Interrupt (63 in the case of S12 core).&lt;/P&gt;&lt;P&gt;Interrupt number = (0xFE-Vector Address)/2. See Table Interrupt Vector Locations at RM.&lt;/P&gt;&lt;P&gt;For Example: Interrupt number of SCI0 = (0xFE-D6)/2 = 0x14 = 20.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I hope it helps you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;RadekS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;EDIT: fixed Spurious Interrupt vector number.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 Apr 2016 15:01:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timer-interrupt/m-p/478012#M11968</guid>
      <dc:creator>RadekS</dc:creator>
      <dc:date>2016-04-28T15:01:03Z</dc:date>
    </item>
    <item>
      <title>Re: Timer interrupt</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timer-interrupt/m-p/478013#M11969</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you RadekS !&lt;/P&gt;&lt;P&gt;Your last comment will be very usefull for a beginner as me.&lt;/P&gt;&lt;P&gt;The community is quite good !&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have a great day,&lt;/P&gt;&lt;P&gt;Pierre&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 29 Apr 2016 07:28:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timer-interrupt/m-p/478013#M11969</guid>
      <dc:creator>pierrel</dc:creator>
      <dc:date>2016-04-29T07:28:36Z</dc:date>
    </item>
  </channel>
</rss>

