<?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 Re: HCS08GB60 timer output compare interrupt - More Code in 8-bit Microcontrollers</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126285#M1007</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;P&gt;Hi agreer,&lt;/P&gt;&lt;P&gt;I can see anything wrong either. (except for the int vector perhaps)&lt;/P&gt;&lt;P&gt;A few other pointers:&lt;/P&gt;&lt;P&gt;it looks like you may be using old 05 code (or you may be an old 05 coder)&lt;/P&gt;&lt;P&gt;you can replace:&lt;/P&gt;&lt;P&gt;&amp;nbsp;lda #(mCLKSB|mPS2|mPS1|mPS0)&lt;BR /&gt;&amp;nbsp;sta TPM1SC&lt;BR /&gt;with:&lt;BR /&gt;&amp;nbsp;mov #(mCLKSB|mPS2|mPS1|mPS0),TPM1SC&lt;/P&gt;&lt;P&gt;and:&lt;/P&gt;&lt;P&gt;&amp;nbsp;lda #RTIDelayL&lt;BR /&gt;&amp;nbsp;add TPM1CNTL ; a = RTIDelayL + TPM1CNTL&lt;BR /&gt;&amp;nbsp;tax ; x = a&lt;/P&gt;&lt;P&gt;&amp;nbsp;lda #RTIDelayH&lt;BR /&gt;&amp;nbsp;adc TPM1CNTH ; a = RTIDelayH + TPM1CNTH + c&lt;BR /&gt;&amp;nbsp;psha&lt;BR /&gt;&amp;nbsp;pulh ; h = a&lt;/P&gt;&lt;P&gt;&amp;nbsp;store ix in channel value reg (TPM1C1VH:TPM1C1VL)&lt;BR /&gt;&amp;nbsp;sthx TPM1C1VH&lt;/P&gt;&lt;P&gt;with&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;lda #RTIDelayL&lt;BR /&gt;&amp;nbsp;add TPM1CNTL ; a = RTIDelayL + TPM1CNTL&lt;BR /&gt;&amp;nbsp;sta TPM1C1VL&lt;BR /&gt;&amp;nbsp;lda #RTIDelayH&lt;BR /&gt;&amp;nbsp;adc TPM1CNTH ; a = RTIDelayH + TPM1CNTH + c&lt;BR /&gt;&amp;nbsp;sta TPM1C1VH&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;the latches will handle the two 8 bit writes to the 16 bit register.&lt;/P&gt;&lt;P&gt;You should also change to adding to the previous compare like rocco suggested!&lt;/P&gt;&lt;P&gt;In the int handler you can do something similar and throw out the sei cli and the push/pull of h as you won't affect it.&lt;/P&gt;&lt;P&gt;All of the above won't make it work but it will look nicer doing nothing :smileyhappy:&lt;/P&gt;&lt;P&gt;Have you run your code in a simulator and set a breakpoint in the int handler???&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;Peg&lt;BR /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 13 Feb 2006 06:10:01 GMT</pubDate>
    <dc:creator>peg</dc:creator>
    <dc:date>2006-02-13T06:10:01Z</dc:date>
    <item>
      <title>HCS08GB60 timer output compare interrupt</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126279#M1001</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have the HCS08GB60 demo board and am using the serial monitor functionality to program and debug my code via Codewarrior.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have had several problems doing things that are relatively straightforward, at least they have been on the handful of other chips I've worked with.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;First of all, I am unable to make the external oscillator work. Secondly, as I've recently learned, the RTI functionality does not work alongside the serial monitor.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;As a result of not having RTI capability, I'm trying to setup a timer to generate a periodic interrupt as a pseudo-RTI.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is how I'm initializing the timer:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;;;;;;;;;;;; INIT CODE&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;;; setup timer 1 module&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;; use system clock, prescale by 128&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;lda #(mCLKSB+mPS2+mPS1+mPS0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;sta TPM1SC&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;; setup timer 1 channel 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;; for output compare (used for periodic interrupt)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;; output compare mode, software only, enable interrupt&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;lda #(mMS1A+mCH1IE)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;sta TPM1C1SC&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;; reset the channel count value&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;; calculate the current counter value + delay value&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;; do: ix = ix + cnt (ix = RTIDelayH:RTIDelayL)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;; current counter value ( cnt = TPM1CNTH:TPM1CNTL )&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;lda #RTIDelayL&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;add TPM1CNTL ; a = RTIDelayL + TPM1CNTL&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;tax ; x = a&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;lda #RTIDelayH&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;adc TPM1CNTH ; a = RTIDelayH + TPM1CNTH + c&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;psha&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pulh ; h = a&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;; store ix in channel value reg (TPM1C1VH:TPM1C1VL)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;sthx TPM1C1VH&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;; clear the channel flag&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;; read flag CH1F in TPM1C1SC&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;lda TPM1C1SC&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;; to clear flag, write zero to CH1F&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;bclr CH1F, TPM1C1SC&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;;;;;;;;;;;; END INIT CODE&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Because of post size constraints, I will continue with the ISR code in my next post.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Feb 2006 05:24:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126279#M1001</guid>
      <dc:creator>agreer</dc:creator>
      <dc:date>2006-02-12T05:24:28Z</dc:date>
    </item>
    <item>
      <title>HCS08GB60 timer output compare interrupt - More Code</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126280#M1002</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Here is the code inside the timer ISR:&lt;BR /&gt;;;;;;;;;;;; TIMER1CH1 ISR&lt;BR /&gt;;;; handle the psuedo-RTI interrupt - generated by TPMCH1&lt;BR /&gt;RTI_Handler:&lt;BR /&gt;sei ; disable interrupts&lt;BR /&gt;pshh ; save h reg&lt;BR /&gt;&lt;BR /&gt;; reset the channel count value&lt;BR /&gt;; calculate the current counter value + delay value&lt;BR /&gt;; do: ix = ix + cnt (ix = RTIDelayH:RTIDelayL)&lt;BR /&gt;; current counter value ( cnt = TPM1CNTH:TPM1CNTL )&lt;BR /&gt;lda #RTIDelayL&lt;BR /&gt;add TPM1CNTL ; a = RTIDelayL + TPM1CNTL&lt;BR /&gt;tax ; x = a&lt;BR /&gt;&lt;BR /&gt;lda #RTIDelayH&lt;BR /&gt;adc TPM1CNTH ; a = RTIDelayH + TPM1CNTH + c&lt;BR /&gt;psha&lt;BR /&gt;pulh ; h = a&lt;BR /&gt;&lt;BR /&gt;; store ix in channel value reg (TPM1C1VH:TPM1C1VL)&lt;BR /&gt;sthx TPM1C1VH&lt;BR /&gt;&lt;BR /&gt;; clear the channel flag&lt;BR /&gt;; read flag CH1F in TPM1C1SC&lt;BR /&gt;lda TPM1C1SC&lt;BR /&gt;; to clear flag, write zero to CH1F&lt;BR /&gt;bclr CH1F, TPM1C1SC&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;;lda SRTISC&lt;BR /&gt;; clear RTI flag&lt;BR /&gt;;ora mRTIACK&lt;BR /&gt;;sta SRTISC&lt;BR /&gt;&lt;BR /&gt;pulh ; restore h&lt;BR /&gt;cli ; enable interrupts&lt;BR /&gt;rti&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Feb 2006 05:25:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126280#M1002</guid>
      <dc:creator>agreer</dc:creator>
      <dc:date>2006-02-12T05:25:23Z</dc:date>
    </item>
    <item>
      <title>HCS08GB60 timer output compare interrupt - More Code</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126281#M1003</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;I have not included the code which simply blinks an LED in the ISR. As far as I can tell, the ISR is never entered. I used a similar setup with output compare on channel 0 to implement a timed delay and it worked fine.&lt;BR /&gt;If anyone has some experience with this or with the demo board, please offer some advice or suggestions.&lt;BR /&gt;Your help is greatly appreciated!&lt;BR /&gt;&lt;BR /&gt;Thanks!&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Feb 2006 05:26:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126281#M1003</guid>
      <dc:creator>agreer</dc:creator>
      <dc:date>2006-02-12T05:26:27Z</dc:date>
    </item>
    <item>
      <title>Re: HCS08GB60 timer output compare interrupt - More Code</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126282#M1004</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Agreer:&lt;BR /&gt;I cannot see anything obvious why your code would not work. It looks fine, but the way I do it is a little different, and maybe this will help.&lt;BR /&gt;&lt;BR /&gt;During initialization, I would not add the delay value to the current timer value. I would avoid reading the timer anywhere I can be interrupted.&lt;BR /&gt;&lt;BR /&gt;Instead:&lt;BR /&gt;Load the delay value directly into the timer value registers, and then reset the timer by writing to it. Do this for initialization only.&lt;BR /&gt;&lt;BR /&gt;Then, in the interrupt service routine:&lt;BR /&gt;Add the delay value to the old value register contents, rather than the current counter. This does two things:&lt;BR /&gt;1) It avoids reading the timer which, because of its latches, always makes me nervous, and&lt;BR /&gt;2) It keeps your time more accurately, because it is not affected by interrupt latency. Each output compare is referenced to the prior output compare, rather than where the timer might have been during the ISR.&lt;BR /&gt;&lt;BR /&gt;Again, I don't see how what you are doing would cause a problem, but I never do until after I have a problem fixed.&lt;BR /&gt;&lt;BR /&gt;One other thing, you may want to remove the SEI and CLI instructions from the ISR. The cpu sets the interrupt flag automatically upon dispatching the interrupt, so the SEI instruction is basically a nop. But the CLI would cause a pending interrupt to be serviced before the RTI instruction could execute, stacking up multiple interrupts. The RTI instruction will clear the interrupt flag for you.&lt;BR /&gt;&lt;BR /&gt;hope this helps . . .&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Feb 2006 14:58:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126282#M1004</guid>
      <dc:creator>rocco</dc:creator>
      <dc:date>2006-02-12T14:58:00Z</dc:date>
    </item>
    <item>
      <title>Re: HCS08GB60 timer output compare interrupt - More Code</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126283#M1005</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hi Rocco,&lt;BR /&gt;thanks for the insight. There is one subtle problem with what I was intending to do. I planned to continue using the output compare timed delay routine on channel zero. If I setup the timer reg value to be something other than $0000, then my delay routine won't calculate the proper value to stop delaying. I suppose I could solve that problem by using timer 1 channel 0 for the timed delay and timer 0 channel 0 for the isr generator. I'll give it a shot and post back on the results.&lt;BR /&gt;I have to say, I can't find anything fundamentally wrong with my code and it's maddening. The few things I've tried with this mcu aren't very difficult but they just don't seem to work. I'm not sure if the problem is with my code, the mcu, or the demo board and serial monitor interfering.&lt;BR /&gt;&lt;BR /&gt;thanks again!&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Feb 2006 02:57:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126283#M1005</guid>
      <dc:creator>agreer</dc:creator>
      <dc:date>2006-02-13T02:57:58Z</dc:date>
    </item>
    <item>
      <title>Re: HCS08GB60 timer output compare interrupt - More Code</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126284#M1006</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BR /&gt;&lt;BLOCKQUOTE&gt;&lt;HR /&gt;agreer wrote:&lt;BR /&gt;. . . As far as I can tell, the ISR is never entered. . .&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;Agreer:&lt;BR /&gt;I just noticed that you didn't post the lines that initialize the interrupt vector. Maybe the interrupt is in fact occurring, but not getting into your ISR because of a misdirected vector?&lt;BR /&gt;&lt;BR /&gt;just a thought . . .&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Feb 2006 04:39:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126284#M1006</guid>
      <dc:creator>rocco</dc:creator>
      <dc:date>2006-02-13T04:39:32Z</dc:date>
    </item>
    <item>
      <title>Re: HCS08GB60 timer output compare interrupt - More Code</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126285#M1007</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;P&gt;Hi agreer,&lt;/P&gt;&lt;P&gt;I can see anything wrong either. (except for the int vector perhaps)&lt;/P&gt;&lt;P&gt;A few other pointers:&lt;/P&gt;&lt;P&gt;it looks like you may be using old 05 code (or you may be an old 05 coder)&lt;/P&gt;&lt;P&gt;you can replace:&lt;/P&gt;&lt;P&gt;&amp;nbsp;lda #(mCLKSB|mPS2|mPS1|mPS0)&lt;BR /&gt;&amp;nbsp;sta TPM1SC&lt;BR /&gt;with:&lt;BR /&gt;&amp;nbsp;mov #(mCLKSB|mPS2|mPS1|mPS0),TPM1SC&lt;/P&gt;&lt;P&gt;and:&lt;/P&gt;&lt;P&gt;&amp;nbsp;lda #RTIDelayL&lt;BR /&gt;&amp;nbsp;add TPM1CNTL ; a = RTIDelayL + TPM1CNTL&lt;BR /&gt;&amp;nbsp;tax ; x = a&lt;/P&gt;&lt;P&gt;&amp;nbsp;lda #RTIDelayH&lt;BR /&gt;&amp;nbsp;adc TPM1CNTH ; a = RTIDelayH + TPM1CNTH + c&lt;BR /&gt;&amp;nbsp;psha&lt;BR /&gt;&amp;nbsp;pulh ; h = a&lt;/P&gt;&lt;P&gt;&amp;nbsp;store ix in channel value reg (TPM1C1VH:TPM1C1VL)&lt;BR /&gt;&amp;nbsp;sthx TPM1C1VH&lt;/P&gt;&lt;P&gt;with&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;lda #RTIDelayL&lt;BR /&gt;&amp;nbsp;add TPM1CNTL ; a = RTIDelayL + TPM1CNTL&lt;BR /&gt;&amp;nbsp;sta TPM1C1VL&lt;BR /&gt;&amp;nbsp;lda #RTIDelayH&lt;BR /&gt;&amp;nbsp;adc TPM1CNTH ; a = RTIDelayH + TPM1CNTH + c&lt;BR /&gt;&amp;nbsp;sta TPM1C1VH&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;the latches will handle the two 8 bit writes to the 16 bit register.&lt;/P&gt;&lt;P&gt;You should also change to adding to the previous compare like rocco suggested!&lt;/P&gt;&lt;P&gt;In the int handler you can do something similar and throw out the sei cli and the push/pull of h as you won't affect it.&lt;/P&gt;&lt;P&gt;All of the above won't make it work but it will look nicer doing nothing :smileyhappy:&lt;/P&gt;&lt;P&gt;Have you run your code in a simulator and set a breakpoint in the int handler???&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;Peg&lt;BR /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Feb 2006 06:10:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126285#M1007</guid>
      <dc:creator>peg</dc:creator>
      <dc:date>2006-02-13T06:10:01Z</dc:date>
    </item>
    <item>
      <title>Re: HCS08GB60 timer output compare interrupt - More Code</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126286#M1008</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hey Rocco,&lt;BR /&gt;here is how I setup the vector.&lt;BR /&gt;&lt;BR /&gt;ORG $FFF2&lt;BR /&gt;DC.W RTI_Handler ; TPMCH1&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Feb 2006 07:19:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126286#M1008</guid>
      <dc:creator>agreer</dc:creator>
      <dc:date>2006-02-13T07:19:34Z</dc:date>
    </item>
    <item>
      <title>Re: HCS08GB60 timer output compare interrupt - More Code</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126287#M1009</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hey peg,&lt;BR /&gt;&lt;BR /&gt;You are right, I've neglected a few commands like 'mov'. I need to study the instruction set of this chip a little more. I've been back and forth with a few different chips lately and sometimes I get the details of each blurred with the others.&lt;BR /&gt;thanks!&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Feb 2006 07:24:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126287#M1009</guid>
      <dc:creator>agreer</dc:creator>
      <dc:date>2006-02-13T07:24:30Z</dc:date>
    </item>
    <item>
      <title>Re: HCS08GB60 timer output compare interrupt NEW CODE</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126288#M1010</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;I've incorporated your suggestions into my code and it still doesn't work. The interrupt service routine is never entered.&lt;BR /&gt;Here's what I've got:&lt;BR /&gt;&lt;BR /&gt;RTI_init:&lt;BR /&gt;;; setup timer 1 module&lt;BR /&gt;mov #(mCLKSB+mPS2+mPS1+mPS0),TPM1SC&lt;BR /&gt;mov #(mMS1A+mCH1IE),TPM1C1SC&lt;BR /&gt;; reset the channel compare value&lt;BR /&gt;mov #RTIDelayL,TPM1C1VL&lt;BR /&gt;mov #RTIDelayH,TPM1C1VH&lt;BR /&gt;sthx TPM1CNTH ; write to counter to clear it&lt;BR /&gt;; clear the channel flag&lt;BR /&gt;lda TPM1C1SC ; read flag CH1F in TPM1C1SC&lt;BR /&gt;bclr CH1F, TPM1C1SC ; to clear flag, write zero to CH1F&lt;BR /&gt;rts&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Feb 2006 09:22:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126288#M1010</guid>
      <dc:creator>agreer</dc:creator>
      <dc:date>2006-02-13T09:22:57Z</dc:date>
    </item>
    <item>
      <title>Re: HCS08GB60 timer output compare interrupt NEW CODE</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126289#M1011</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Here is the rest of my new code:&lt;BR /&gt;&lt;BR /&gt;RTI_Handler:&lt;BR /&gt;; do something here...&lt;BR /&gt;&lt;BR /&gt;; reset the channel compare value&lt;BR /&gt;; calculate the current compare value + delay value&lt;BR /&gt;lda #RTIDelayL&lt;BR /&gt;add TPM1C1VL ; a = RTIDelayL + TPM1C1VL&lt;BR /&gt;sta TPM1C1VL&lt;BR /&gt;lda #RTIDelayH&lt;BR /&gt;adc TPM1C1VH ; a = RTIDelayH + TPM1C1VH + c&lt;BR /&gt;sta TPM1C1VH&lt;BR /&gt;&lt;BR /&gt;; clear the channel flag&lt;BR /&gt;lda TPM1C1SC ; read flag CH1F in TPM1C1SC&lt;BR /&gt;bclr CH1F, TPM1C1SC ; to clear flag, write zero to CH1F&lt;BR /&gt;rti&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Feb 2006 09:23:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126289#M1011</guid>
      <dc:creator>agreer</dc:creator>
      <dc:date>2006-02-13T09:23:39Z</dc:date>
    </item>
    <item>
      <title>Re: HCS08GB60 timer output compare interrupt NEW CODE</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126290#M1012</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;P&gt;Hi agreer,&lt;/P&gt;&lt;P&gt;Below is your last version of code that I have added to in order to get it to work&lt;BR /&gt;on an Axiom M68DEMO908GB60 board.&lt;/P&gt;&lt;P&gt;I had to add the following that you either didn't have or didn't tell us about.&lt;/P&gt;&lt;P&gt;(1) disable COP&lt;BR /&gt;(2) enable ints&lt;BR /&gt;(3) set CLKSA rather than CLKSB as I am running in SCM mode and XCLK is disabled in this mode&lt;BR /&gt;(4) a reset vector&lt;/P&gt;&lt;P&gt;So let us know what you were doing wrong&lt;/P&gt;&lt;P&gt;Peg&lt;/P&gt;&lt;P&gt;.NOLIST&lt;BR /&gt;#include "9S08GB60v1rdp.inc"&lt;BR /&gt;.LIST&lt;/P&gt;&lt;P&gt;&amp;nbsp;ORG&amp;nbsp;RamStart&lt;BR /&gt;RTIDelayL&amp;nbsp;equ&amp;nbsp;33&lt;BR /&gt;RTIDelayH&amp;nbsp;equ&amp;nbsp;44&lt;BR /&gt;counter&amp;nbsp;&amp;nbsp;rmb&amp;nbsp;1&lt;/P&gt;&lt;P&gt;&amp;nbsp;ORG&amp;nbsp;RomStart&lt;/P&gt;&lt;P&gt;&amp;nbsp;lda&amp;nbsp;#(mCOPT+mSTOPE+mBKGDPE)&lt;BR /&gt;&amp;nbsp;sta&amp;nbsp;SOPT&amp;nbsp;&amp;nbsp;&amp;nbsp;;disable COP (1)&lt;BR /&gt;&amp;nbsp;CLI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;enable ints (2)&lt;BR /&gt;&amp;nbsp;mov&amp;nbsp;#0,counter&lt;BR /&gt;&amp;nbsp;mov&amp;nbsp;#%00001111,PTFD&lt;BR /&gt;&amp;nbsp;mov&amp;nbsp;#%00001111,PTFDD&lt;BR /&gt;&amp;nbsp;jsr&amp;nbsp;RTI_init&lt;BR /&gt;&amp;nbsp;bra&amp;nbsp;*&lt;/P&gt;&lt;P&gt;RTI_init:&lt;BR /&gt;;; setup timer 1 module&lt;BR /&gt;&amp;nbsp;mov #(mCLKSA+mPS2+mPS1+mPS0),TPM1SC ;(3)&lt;BR /&gt;&amp;nbsp;mov #(mMS1A+mCH1IE),TPM1C1SC&lt;BR /&gt;; reset the channel compare value&lt;BR /&gt;&amp;nbsp;mov #RTIDelayL,TPM1C1VL&lt;BR /&gt;&amp;nbsp;mov #RTIDelayH,TPM1C1VH&lt;BR /&gt;&amp;nbsp;sthx TPM1CNTH ; write to counter to clear it&lt;BR /&gt;; clear the channel flag&lt;BR /&gt;&amp;nbsp;lda TPM1C1SC ; read flag CH1F in TPM1C1SC&lt;BR /&gt;&amp;nbsp;bclr CH1F,TPM1C1SC ; to clear flag, write zero to CH1F&lt;BR /&gt;&amp;nbsp;rts&lt;/P&gt;&lt;P&gt;RTI_Handler:&lt;BR /&gt;; do something here...&lt;BR /&gt;&amp;nbsp;inc&amp;nbsp;counter&lt;BR /&gt;&amp;nbsp;lda&amp;nbsp;counter&lt;BR /&gt;&amp;nbsp;coma&lt;BR /&gt;&amp;nbsp;sta&amp;nbsp;PTFD&lt;BR /&gt;; reset the channel compare value&lt;BR /&gt;; calculate the current compare value + delay value&lt;BR /&gt;&amp;nbsp;lda #RTIDelayL&lt;BR /&gt;&amp;nbsp;add TPM1C1VL ; a = RTIDelayL + TPM1C1VL&lt;BR /&gt;&amp;nbsp;sta TPM1C1VL&lt;BR /&gt;&amp;nbsp;lda #RTIDelayH&lt;BR /&gt;&amp;nbsp;adc TPM1C1VH ; a = RTIDelayH + TPM1C1VH + c&lt;BR /&gt;&amp;nbsp;sta TPM1C1VH&lt;/P&gt;&lt;P&gt;; clear the channel flag&lt;BR /&gt;&amp;nbsp;lda TPM1C1SC ; read flag CH1F in TPM1C1SC&lt;BR /&gt;&amp;nbsp;bclr CH1F,TPM1C1SC ; to clear flag, write zero to CH1F&lt;BR /&gt;&amp;nbsp;rti&lt;/P&gt;&lt;P&gt;&amp;nbsp;ORG $FFF2&lt;BR /&gt;&amp;nbsp;DC.W&amp;nbsp;RTI_Handler&amp;nbsp;; TPMCH1&lt;/P&gt;&lt;P&gt;&amp;nbsp;ORG $FFFE&lt;BR /&gt;&amp;nbsp;DC.W&amp;nbsp;ROMStart&amp;nbsp;;(4)&lt;BR /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Feb 2006 17:18:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126290#M1012</guid>
      <dc:creator>peg</dc:creator>
      <dc:date>2006-02-13T17:18:28Z</dc:date>
    </item>
    <item>
      <title>Re: HCS08GB60 timer output compare interrupt NEW CODE</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126291#M1013</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Have you actually verified that this code works on your board? I can't get it to work in the simulator or on the board. The interrupt is never entered. My code was that same as yours except for I used CLKSB instead of CLKSA. I made that change in my code and it still won't work. I even created a whole new codewarrior project and put your code into it. That doesn't work either.&lt;BR /&gt;I've never had so much trouble configuring an interrupt. I miss my AVR chips, they always worked.&lt;BR /&gt;&lt;BR /&gt;How did you configure your ICG regs?&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Feb 2006 03:40:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126291#M1013</guid>
      <dc:creator>agreer</dc:creator>
      <dc:date>2006-02-14T03:40:14Z</dc:date>
    </item>
    <item>
      <title>Re: HCS08GB60 timer output compare interrupt NEW CODE</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126292#M1014</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;P&gt;Hi agreer,&lt;/P&gt;&lt;P&gt;The code I posted is the *entire code*&lt;/P&gt;&lt;P&gt;just assemble it and download it.&lt;/P&gt;&lt;P&gt;I am looking at the flashing LED's as I write this.&lt;/P&gt;&lt;P&gt;I have not configured any ICG regs.&lt;/P&gt;&lt;P&gt;I am relying on power up defaults for everything you don't see explicitly set here.&lt;/P&gt;&lt;P&gt;I used PE assembler CASMHC08_Pro.&lt;/P&gt;&lt;P&gt;Codewarrior is probably _helping_ you by initialising stuff that you don't know about.&lt;/P&gt;&lt;P&gt;The code I have supplied is the absolute bare minimum required to get this done, you need everything that is there. It is intended to show you what you *have* to do not neccessarily what you should do.&lt;/P&gt;&lt;P&gt;If you don't touch any clock regs you will get Self Clocked Mode at untrimmed 4MHz. This will do for LED flashing. The XCLK signal is disabled in this mode and so you can't use it as a source for the timer.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Peg&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Feb 2006 05:31:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126292#M1014</guid>
      <dc:creator>peg</dc:creator>
      <dc:date>2006-02-14T05:31:29Z</dc:date>
    </item>
    <item>
      <title>Re: HCS08GB60 timer output compare interrupt</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126293#M1015</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;P&gt;&lt;FONT size="2"&gt;Agreer -&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;You said that you're using the serial monitor for debugging and it seems that you're not having any luck getting any interrupt service routines to run.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;You said in one post that you were placing the timer interrupt at $FFF2. However, the serial monitor uses the hardware based vector relocation feature of the GB60. The vector relocation addresses are at &lt;FONT face="Arial"&gt;$FBCC–$FBFD rather than from $FFCC–$FFFD. So the correct&amp;nbsp;vector location for the timer interrupt would be $FBF2.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Arial"&gt;&lt;FONT size="2"&gt;For a more complete discussion of this, you might check out AN2140 at:&lt;/FONT&gt; &lt;A href="http://www.freescale.com/files/microcontrollers/doc/app_note/AN2140.pdf" rel="nofollow" target="_blank"&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;A href="http://www.freescale.com/files/microcontrollers/doc/app_note/AN2140.pdf" target="test_blank"&gt;http://www.freescale.com/files/microcontrollers/doc/app_note/AN2140.pdf&lt;/A&gt;&lt;/FONT&gt;&lt;FONT face="Arial"&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Feb 2006 03:36:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126293#M1015</guid>
      <dc:creator>RockyRoad</dc:creator>
      <dc:date>2006-02-15T03:36:04Z</dc:date>
    </item>
    <item>
      <title>Re: HCS08GB60 timer output compare interrupt</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126294#M1016</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Being a hardware redirection method, I don't need to change the ORG statement in my code. When my code is downloaded to the flash, it's automatically adjusted.&lt;BR /&gt;&lt;BR /&gt;I did get the interrupt to work finally. I'm not sure what I did to make it work, everything in my code seems the same.&lt;BR /&gt;&lt;BR /&gt;Thanks everyone for your help.&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Feb 2006 09:10:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126294#M1016</guid>
      <dc:creator>agreer</dc:creator>
      <dc:date>2006-02-15T09:10:37Z</dc:date>
    </item>
    <item>
      <title>Re: HCS08GB60 timer output compare interrupt</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126295#M1017</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;P&gt;Agreer,&lt;/P&gt;&lt;P&gt;I don't think you are understanding this fully.&lt;/P&gt;&lt;P&gt;I didn't before today as I have a USB Multilink. So today I slummed it with the serial monitor to understand how this works.&lt;/P&gt;&lt;P&gt;The hardware redirection simply means that when an interrupt occurs it goes looking for its vector in a new place (just below the protected block with the same negative offset as from FFFF. It doesn't somehow move the actual vector addresses down!&lt;/P&gt;&lt;P&gt;You can't write to the standard vector area anyway (its protected!)&lt;/P&gt;&lt;P&gt;So you can either put the vector yourself in the new place or, in Codewarrior turn on vector mirroring and it will do it for you magically.&lt;/P&gt;&lt;P&gt;But the important thing is that before you run, the interrupt routines' address must be in the new location, so if it doesn't work look in the memory window to see if its there (at FBF2 in this case).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;Peg&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Feb 2006 19:27:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126295#M1017</guid>
      <dc:creator>peg</dc:creator>
      <dc:date>2006-02-15T19:27:10Z</dc:date>
    </item>
    <item>
      <title>Re: HCS08GB60 timer output compare interrupt</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126296#M1018</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Actually, I understand exactly what is going on. As I said, in the process of writing the code to the flash, the vectors are moved to the proper place. It is perfectly ok for me to locate my reset vector at $FFFE in my source code.&lt;BR /&gt;Here is the explanation from the freescale document (AN2295D) describing the routines used by a PC program (Codewarrior in this case) used to write to the flash:&lt;BR /&gt;&lt;BR /&gt;Interrupt Vector Table Relocation&lt;BR /&gt;After the ident information is read out of the MCU, the following operations within the image are carried out:&lt;BR /&gt;• The code is scanned to determine whether any interrupt vectors are present between the MCU interrupt vector table address and 0xFFFF (the last existing physical address of the M68HC(S)08 MCU).&lt;BR /&gt;• If interrupt vectors are present, relocation of these vectors is done as described in Interrupt Vector Table Relocation. Then, the original address spaces in the interrupt vector table are marked as unused (thus not being reprogrammed).&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;As you can see, the method determined by Freescale is to have the PC program move the vectors within the flash image before writing them to the chip. I understand that the vectors need to be located at the proper place on the hardware, but you misunderstand the method of putting the vectors there. By creating the "monitor" target in codewarrior, when the flash is programmed, the vectors located within that protected 1K of flash (containing the serial monitor code) are moved within the image before actually being programmed. I don't have to do anything special to accomplish this.&lt;BR /&gt;&lt;BR /&gt;Yes, the vectors are actually moved down in the flash, not by the "vector redirection" itself, but by the program used to write to the flash.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;thanks!&lt;P&gt;Message Edited by agreer on &lt;SPAN class="date_text"&gt;02-15-2006&lt;/SPAN&gt;&lt;SPAN class="time_text"&gt;02:05 PM&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Feb 2006 04:02:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126296#M1018</guid>
      <dc:creator>agreer</dc:creator>
      <dc:date>2006-02-16T04:02:29Z</dc:date>
    </item>
    <item>
      <title>Re: HCS08GB60 timer output compare interrupt</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126297#M1019</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;P&gt;Hi there,&lt;/P&gt;&lt;P&gt;interrupt vectors relocation (done by PC) works for AN2295 HC(S)08 Serial Bootloader, *not* for S08 Serial Monitor (desribed in AN2140). Please, do not mix these two.&lt;/P&gt;&lt;P&gt;AN2295 Bootloader has been started years ago and was made to program Flash over the serial line (no interrupt vectors mangling needed for the final code, etc.).&lt;/P&gt;&lt;P&gt;While Serial monitor was made for S08 only and to allow debugging over Serial line. AN2140 requires the vectors to be redirected (in the user code).&lt;/P&gt;&lt;P&gt;Regarding the code itself, I was able to replicate it here, the last version as it is worked OK assuming that counter variable was placed in Zero page. INC instruction does not work with extended addressing.&lt;/P&gt;&lt;P&gt;Although the code works with real hardware, I was not able to make it 'running' in the P&amp;amp;E simulator though.&lt;/P&gt;&lt;P&gt;Regards, Pavel Lajsner, Freescale Roznov&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;P.S. One little hint:&lt;/P&gt;&lt;P&gt;; clear the channel flag&lt;BR /&gt;lda TPM1C1SC ; read flag CH1F in TPM1C1SC&lt;BR /&gt;bclr CH1F, TPM1C1SC ; to clear flag, write zero to CH1F&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;maybe simplified to:&lt;/P&gt;&lt;P&gt;; clear the channel flag&lt;BR /&gt;bclr CH1F, TPM1C1SC ; to clear flag, write zero to CH1F&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;since BCLR/BSET instructions are read-modify-write thus read-before-clear condition is met using just BCLR. P.&lt;/P&gt;&lt;P&gt;Message Edited by ok2ucx on &lt;SPAN class="date_text"&gt;02-17-2006&lt;/SPAN&gt;&lt;SPAN class="time_text"&gt;02:13 PM&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 17 Feb 2006 18:27:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08GB60-timer-output-compare-interrupt/m-p/126297#M1019</guid>
      <dc:creator>ok2ucx</dc:creator>
      <dc:date>2006-02-17T18:27:35Z</dc:date>
    </item>
  </channel>
</rss>

