<?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: Problem reading cascaded timer values. in S12 / MagniV Microcontrollers</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Problem-reading-cascaded-timer-values/m-p/134768#M2122</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Let me answer my own post....&lt;BR /&gt;&lt;BR /&gt;I had to load the compare registers for C0 with max count. Refer to the paragraph 16.4.1 (specifically the third paragraph of 16.4.1) of the User's Manual:&lt;BR /&gt;&lt;BR /&gt;TMRC0_CMP1 = (unsigned)0xFFFF;&lt;BR /&gt;TMRC0_CMPLD1 = (unsigned)0xFFFF;&lt;BR /&gt;&lt;BR /&gt;And all is well...&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 03 Nov 2006 00:23:25 GMT</pubDate>
    <dc:creator>Summer07</dc:creator>
    <dc:date>2006-11-03T00:23:25Z</dc:date>
    <item>
      <title>Problem reading cascaded timer values.</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Problem-reading-cascaded-timer-values/m-p/134767#M2121</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I'm using an MC68F8333. I have TMRC0 and TMRC1 set up using the CASCADED timing mode to get 32 bits of resolution. For the most part all appears to be working well but occasionally when I read TMRC0_CNTR register it's value is 0x0000 (going through rollover). And then I read TMRC1_HOLD, and it has not been incremented to account for TMRC0 rollover causing my delta time to be negative.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here's an example of the error(values from debugger watch window):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;requestedDuration = 0x00012012&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;startTime = 0x905F93B2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;currentTime = 0x905F0000 -- TMRC0 = 0x0000, TMRC1 = 0x905F&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;timeTest = 0xFFFF6C4E (currentTime - startTime)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for any help you can give.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Here's my setup (it's a bit cryptic):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void initSysTime(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// stop both counters - TMRC0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TMRC0_CTRL = (unsigned) // Stop all functions&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(0 13 | // CM - off&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;10 9 | // PCS - (IPBus / 4)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0 7 | // SCS&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0 6 | // ONCE&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0 5 | // LENGTH&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0 4 | // DIR - up&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0 3 | // Co INIT&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0 0 | // OM - toggle OFLAG&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;// and TMRC1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TMRC1_CTRL = (unsigned) // Stop all functions&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(7 13 | // CM - Cascade to C0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;4 9 | // PCS - get OFLAG from C0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0 7 | // SCS&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0 6 | // ONCE&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0 5 | // LENGTH&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0 4 | // DIR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0 3 | // Co INIT&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0 0 | // OM&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;TMRC0_SCR = 0; // Reset Status Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TMRC1_SCR = 0; // Reset Status Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TMRC0_CNTR = 0; // Reset Counter&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TMRC1_CNTR = 0; // Reset Counter&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TMRC0_LOAD = 0; // Reset Load Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TMRC1_LOAD = 0; // Reset Load Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TMRC0_COMSCR = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TMRC1_COMSCR = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;TMRC0_CTRL |= (unsigned) // Enable Counter&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(1 13); // Count Rising Edges&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Oct 2006 23:56:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Problem-reading-cascaded-timer-values/m-p/134767#M2121</guid>
      <dc:creator>Summer07</dc:creator>
      <dc:date>2006-10-30T23:56:19Z</dc:date>
    </item>
    <item>
      <title>Re: Problem reading cascaded timer values.</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Problem-reading-cascaded-timer-values/m-p/134768#M2122</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Let me answer my own post....&lt;BR /&gt;&lt;BR /&gt;I had to load the compare registers for C0 with max count. Refer to the paragraph 16.4.1 (specifically the third paragraph of 16.4.1) of the User's Manual:&lt;BR /&gt;&lt;BR /&gt;TMRC0_CMP1 = (unsigned)0xFFFF;&lt;BR /&gt;TMRC0_CMPLD1 = (unsigned)0xFFFF;&lt;BR /&gt;&lt;BR /&gt;And all is well...&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Nov 2006 00:23:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Problem-reading-cascaded-timer-values/m-p/134768#M2122</guid>
      <dc:creator>Summer07</dc:creator>
      <dc:date>2006-11-03T00:23:25Z</dc:date>
    </item>
  </channel>
</rss>

