<?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>8-bit MicrocontrollersのトピックRe: MC9S08GT60 Timer interrupt modulo problem...</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/MC9S08GT60-Timer-interrupt-modulo-problem/m-p/136395#M4322</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;One other thing.&amp;nbsp; Just because you are disabling the timer overflow interrupts from time to time doesn't mean that the flags stop coming.&amp;nbsp; If there is enough time between a disabling and enabling of the timer overflow interrupt for the mod to be reached on the timer, a flag will appear, and when you re-enable the interrupt, it will immediately start running the overflow ISR, since a flag is already there.&amp;nbsp; You should ensure that the overflow flag is clear before enabling the overflow interrupt.&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 18 May 2006 11:39:59 GMT</pubDate>
    <dc:creator>rhinoceroshead</dc:creator>
    <dc:date>2006-05-18T11:39:59Z</dc:date>
    <item>
      <title>MC9S08GT60 Timer interrupt modulo problem...</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/MC9S08GT60-Timer-interrupt-modulo-problem/m-p/136393#M4320</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV align="left"&gt;I am currently developing software for the MC9S08GT60 and i am trying to implement timer interrupts. I am&amp;nbsp;using TPM1. i have set&amp;nbsp;CPWMS to 0 which enables the counter as a simple up counter and i have enabled TOIE. i have&amp;nbsp;my code&amp;nbsp;entering the interrupt service routine (vector location 8) upon timer oferflow from 0xffff to 0x0000 but i cannot manage to get&amp;nbsp;it to overflow on my software determined modulo value... in my understanding it is a simple procedure of writing to the modulo value registers (TPM1MODL and TPM1MODL&amp;nbsp;) to enable the modulo overflow interrupt. (i.e. interrupt and reset to 0x00 after my count value rather than the overflow from 0xff to 0x00) I am ovoiding using the Channels because it seems overcomplicated for my application especially when im sure its possible to trigger the int on modulo overflow!&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;i have included the basics of the code i am using. please feel free to scrutanise&amp;nbsp; as i would love to know a solution. obviously there are fragments of code missing but the register set up should be as shown&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;my intentions are this:&lt;/DIV&gt;&lt;DIV align="left"&gt;*enable external interrupts on PORTA bit 7&lt;/DIV&gt;&lt;DIV align="left"&gt;*enable internal timer interrupts with a modulo value&lt;/DIV&gt;&lt;DIV align="left"&gt;*change the modulo value dependant on variable (set elsewhere) and the externally generated interrupt&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;*do stuff when the timer reaches that modlo value (which is a certain time after the external interrupt decided by the variable)&lt;/DIV&gt;&lt;DIV align="left"&gt;*return to normal code and wait for the next external interrupt&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;PLEASE HELP ME ENABLE THE MODULO OVERFLOW INTERRUPT instead of interrupting after 0xffff&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/DIV&gt;&lt;DIV align="left"&gt;#include &amp;lt;hidef.h&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* for EnableInterrupts macro */&lt;BR /&gt;#include &amp;lt;MC9S08GT60.h&amp;gt;&amp;nbsp;&amp;nbsp; /* include peripheral declarations */&lt;BR /&gt;#include &amp;lt;Demo_1.h&amp;gt;&lt;BR /&gt;#include &amp;lt;UART.h&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* include UART initialisation*/&lt;/DIV&gt;&lt;DIV align="left"&gt;&lt;BR /&gt;#define PRESCALER 0&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;int i = 0;&lt;BR /&gt;int value = 0;&lt;BR /&gt;int flag = 0;&lt;/DIV&gt;&lt;DIV align="left"&gt;&lt;BR /&gt;////////////////////////////////////////////////////////////////&lt;BR /&gt;////////////////////////////////////////////////////////////////&lt;BR /&gt;&lt;BR /&gt;interrupt&amp;nbsp;EXTERNAL_INT&amp;nbsp;void ext_int()&lt;BR /&gt;{&lt;/DIV&gt;&lt;DIV align="left"&gt;&lt;BR /&gt;DisableInterrupts;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // disable interrupts&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// EXTERNAL KEYBOARD INTERRUPT DETECTED&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;TPM1CNT = 0x00;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // reset timer to zero (any write to TPM1CNT does this)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TPM1MOD = 0xffff;&amp;nbsp;//&amp;nbsp;write modulo value&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;TPM1SC_TOIE = 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; // timer interupt on overflow enabled&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV align="left"&gt;EnableInterrupts;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable interrupts&lt;BR /&gt;&amp;nbsp;KBI1SC_KBACK = 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; // acknowlege interrupt&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // RTI&lt;/DIV&gt;&lt;DIV align="left"&gt;&lt;BR /&gt;////////////////////////////////////////////////////////////////&lt;BR /&gt;////////////////////////////////////////////////////////////////&lt;BR /&gt;interrupt INTERNAL_TMR_INT void TMR1_int()&lt;BR /&gt;{&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;//&amp;nbsp;DO STUFF HERE when modulo expires&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;TPM1SC_TOF = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // clear timer overflow flag&lt;BR /&gt;&amp;nbsp;&amp;nbsp;TPM1SC_TOIE = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // timer interupt overflow disabled&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // RTI&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;////////////////////////////////////////////////////////////////&lt;BR /&gt;////////////////////////////////////////////////////////////////&lt;BR /&gt;&lt;BR /&gt;void main(void) {&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;SOPT_COPE = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // disable watchdog&lt;BR /&gt;&lt;BR /&gt;/* PORT A DATA DIRECTION */&lt;/DIV&gt;&lt;DIV align="left"&gt;&lt;BR /&gt;PTADD_PTADD7 = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// initalise bit 7 of port A as input&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;PTAPE = 0xff;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// enable pullups on PORTA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;/* ENABLE PORTA KEYBOARD INTERRUPT */&lt;BR /&gt;KBI1PE_KBI1PE7 = 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; // enable portA pin 7 as input with keyboard int&lt;BR /&gt;KBI1SC_KBI1E = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// enable keyboard interrupts&lt;/DIV&gt;&lt;DIV align="left"&gt;&lt;BR /&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;/*Initalise timer TPM1 channel, asssume not touched since reset*/&lt;BR /&gt;TPM1SC_CLKSA = 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;&amp;nbsp;&amp;nbsp; // select bus clock (4MHz)&amp;nbsp; (B:A = 0:1)&lt;BR /&gt;TPM1SC_CLKSB = 0;&lt;/DIV&gt;&lt;DIV align="left"&gt;TPM1SC_CPWMS = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 16bit counter is set to count up from 0x00 ot 0xff or to modulo&amp;nbsp; (i.e. PWM disabled)&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;TPM1SC_TOIE = 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;&amp;nbsp;&amp;nbsp;&amp;nbsp; // timer interupt on overflow enabled&lt;/DIV&gt;&lt;DIV align="left"&gt;TPM1SC_PS = PRESCALER;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// set clock divider 4Mhz when 0&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;EnableInterrupts;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable interrupts&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;for(;&lt;A href="http://freescale.i.lithium.com/i/smilies/16x16_smiley-wink.gif"&gt;&lt;IMG alt=":smileywink:" class="emoticon emoticon-smileywink" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-wink.gif" title="Smiley Wink" /&gt;&lt;/A&gt;&lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;/* loop forever */&lt;BR /&gt;&amp;nbsp;}&lt;BR /&gt;}&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 May 2006 09:35:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/MC9S08GT60-Timer-interrupt-modulo-problem/m-p/136393#M4320</guid>
      <dc:creator>Danny</dc:creator>
      <dc:date>2006-05-18T09:35:49Z</dc:date>
    </item>
    <item>
      <title>Re: MC9S08GT60 Timer interrupt modulo problem...</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/MC9S08GT60-Timer-interrupt-modulo-problem/m-p/136394#M4321</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Yes, it should interrupt on the modulo value that you set.&amp;nbsp; I see a couple things wrong with your code, though.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;1)&amp;nbsp; In your KBI service routine, you are re-enabling interrupts before you are clearing the KBI flag - which should make the pending interrupt happen over and over again.&amp;nbsp; I think this should be making your stack overflow.&amp;nbsp; Is it?&amp;nbsp; I always clear the flag right away at the beginning of the ISR.&amp;nbsp; Also, you do not need to disable interrupts at the beginning of an ISR because the CPU does that for you.&amp;nbsp; And in this case, since you are re-enabling them at the end of your ISR, there is no point in doing it at all&amp;nbsp;since the CPU will restore the I bit in the CCR register back to the state it was in before the ISR occurred.&amp;nbsp; The only time you should enable interrupts in an ISR is if you want that ISR to be interruptable.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;2)&amp;nbsp; Even though it looks like it, you are not actually clearing the overflow flag in your overflow interrupt routine.&amp;nbsp; If you check the data sheet, the flag clearing procedure needs to have a read of the TPM1SC register before writing a 0 to the TOF.&amp;nbsp; Check the data sheet, page 161.&amp;nbsp; (You also have an extra curly brace at the end, but that was probably just a typo.)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;So, I recommend this:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;interrupt&amp;nbsp;EXTERNAL_INT&amp;nbsp;void ext_int()&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// EXTERNAL KEYBOARD INTERRUPT DETECTED&amp;nbsp;&lt;DIV align="left"&gt;&amp;nbsp;KBI1SC_KBACK = 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; // acknowlege interrupt&lt;BR /&gt;&amp;nbsp;TPM1CNT = 0x00;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // reset timer to zero (any write to TPM1CNT does this)&lt;BR /&gt;&amp;nbsp;TPM1MOD = 0xffff;&amp;nbsp;//&amp;nbsp;write modulo value&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;TPM1SC_TOIE = 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; // timer interupt on overflow enabled&lt;/DIV&gt;&lt;DIV align="left"&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // RTI&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;and this:&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;interrupt INTERNAL_TMR_INT void TMR1_int()&lt;BR /&gt;{&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;char temp;&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;temp = TPM1SC;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// read timer status and control&lt;BR /&gt;&amp;nbsp;&amp;nbsp;TPM1SC_TOF = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // clear timer overflow flag&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&amp;nbsp;TPM1SC_TOIE = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // timer interupt overflow disabled&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;//&amp;nbsp;DO STUFF HERE when modulo expires&lt;BR /&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // RTI&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;or this:&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV align="left"&gt;interrupt INTERNAL_TMR_INT void TMR1_int()&lt;BR /&gt;{&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;TPM1SC &amp;amp;=&amp;nbsp;~0x80;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // read timer status and clear flag&lt;/DIV&gt;&lt;DIV align="left"&gt;&amp;nbsp;&amp;nbsp;TPM1SC_TOIE = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // timer interupt overflow disabled&lt;/DIV&gt;&lt;DIV align="left"&gt;//&amp;nbsp;DO STUFF HERE when modulo expires&lt;/DIV&gt;&lt;DIV align="left"&gt;}&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 May 2006 11:35:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/MC9S08GT60-Timer-interrupt-modulo-problem/m-p/136394#M4321</guid>
      <dc:creator>rhinoceroshead</dc:creator>
      <dc:date>2006-05-18T11:35:02Z</dc:date>
    </item>
    <item>
      <title>Re: MC9S08GT60 Timer interrupt modulo problem...</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/MC9S08GT60-Timer-interrupt-modulo-problem/m-p/136395#M4322</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;One other thing.&amp;nbsp; Just because you are disabling the timer overflow interrupts from time to time doesn't mean that the flags stop coming.&amp;nbsp; If there is enough time between a disabling and enabling of the timer overflow interrupt for the mod to be reached on the timer, a flag will appear, and when you re-enable the interrupt, it will immediately start running the overflow ISR, since a flag is already there.&amp;nbsp; You should ensure that the overflow flag is clear before enabling the overflow interrupt.&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 May 2006 11:39:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/MC9S08GT60-Timer-interrupt-modulo-problem/m-p/136395#M4322</guid>
      <dc:creator>rhinoceroshead</dc:creator>
      <dc:date>2006-05-18T11:39:59Z</dc:date>
    </item>
    <item>
      <title>Re: MC9S08GT60 Timer interrupt modulo problem...</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/MC9S08GT60-Timer-interrupt-modulo-problem/m-p/136396#M4323</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;WOW! that was the quickest reply that i have ever recieved!! thankyou so much! i will make the changes immediatly and let you know!&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;cheers once again!&lt;/DIV&gt;&lt;DIV&gt;beers all round if it works!&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 May 2006 12:52:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/MC9S08GT60-Timer-interrupt-modulo-problem/m-p/136396#M4323</guid>
      <dc:creator>Danny</dc:creator>
      <dc:date>2006-05-18T12:52:07Z</dc:date>
    </item>
    <item>
      <title>Re: MC9S08GT60 Timer interrupt modulo problem...</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/MC9S08GT60-Timer-interrupt-modulo-problem/m-p/136397#M4324</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;EVERYTHING WORKS BEAUTIFULLY!!!!!!&lt;BR /&gt;&lt;BR /&gt;thanx for the advice!!&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 29 May 2006 07:32:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/MC9S08GT60-Timer-interrupt-modulo-problem/m-p/136397#M4324</guid>
      <dc:creator>Danny</dc:creator>
      <dc:date>2006-05-29T07:32:36Z</dc:date>
    </item>
  </channel>
</rss>

