<?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>Kinetis Microcontrollers中的主题 K66 Doc error for DAC Top/Bottom flag bits</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K66-Doc-error-for-DAC-Top-Bottom-flag-bits/m-p/610479#M36063</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;SPAN style="font-size: 15px;"&gt;Hello, I think I have found a documentation error in the K66 Reference Manual. I am using a MK66FX1M0VMD18 on an Arduino Teensy 3.6. It looks like Top and Bottom pointer flags in the 12-bit DAC DACx_SR register (0x02-DACBFRPTF and 0x01-DACBFRPBF) and in DACx_C0 (0x02-DACBTIEN and 0x01-DACBBIEN) are documented backwards. I noticed this when trying to connect DMA to the DAC.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;SPAN style="font-size: 15px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;SPAN style="font-size: 15px;"&gt;I verified this with a small Arduino program to step the DAC buffer pointer with a software trigger, and show the SR flags at each step (then clear the SR flags after each step). It shows the 0x01 bit going high at the TOP of the buffer (this is documented as the Bottom bit), and the 0x02 bit going high at the BOTTOM of the buffer (this is documented as the Top bit). The 0x04 water mark flag goes high correctly 4 words from the upper limit (which I have set to 8 here).&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 15px;"&gt;Program Output:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Initial: DAC0_SR:2&amp;nbsp; DAC0_C0:A0&amp;nbsp; DAC0_C1:19&amp;nbsp; DAC0_C2:08&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;0&amp;nbsp;&amp;nbsp; DACBufPtr: 0&amp;nbsp;&amp;nbsp; SR: 2 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;1&amp;nbsp;&amp;nbsp; DACBufPtr: 1&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;2&amp;nbsp;&amp;nbsp; DACBufPtr: 2&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;3&amp;nbsp;&amp;nbsp; DACBufPtr: 3&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;4&amp;nbsp;&amp;nbsp; DACBufPtr: 4&amp;nbsp;&amp;nbsp; SR: 4 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp; (Water Mark flag, correct)&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;5&amp;nbsp;&amp;nbsp; DACBufPtr: 5&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;6&amp;nbsp;&amp;nbsp; DACBufPtr: 6&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;7&amp;nbsp;&amp;nbsp; DACBufPtr: 7&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;8&amp;nbsp;&amp;nbsp; DACBufPtr: 8&amp;nbsp;&amp;nbsp; SR: 1 &amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif;"&gt;(the "BOTTOM" bit triggers at the top of the buffer)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;9&amp;nbsp;&amp;nbsp; DACBufPtr: 0&amp;nbsp;&amp;nbsp; SR: 2&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif;"&gt;(the "TOP bit triggers at the bottom of the buffer)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;10&amp;nbsp;&amp;nbsp; DACBufPtr: 1&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;11&amp;nbsp;&amp;nbsp; DACBufPtr: 2&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;12&amp;nbsp;&amp;nbsp; DACBufPtr: 3&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;13&amp;nbsp;&amp;nbsp; DACBufPtr: 4&amp;nbsp;&amp;nbsp; SR: 4 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;14&amp;nbsp;&amp;nbsp; DACBufPtr: 5&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;15&amp;nbsp;&amp;nbsp; DACBufPtr: 6&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;16&amp;nbsp;&amp;nbsp; DACBufPtr: 7&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;17&amp;nbsp;&amp;nbsp; DACBufPtr: 8&amp;nbsp;&amp;nbsp; SR: 1 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;18&amp;nbsp;&amp;nbsp; DACBufPtr: 0&amp;nbsp;&amp;nbsp; SR: 2 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;19&amp;nbsp;&amp;nbsp; DACBufPtr: 1&amp;nbsp;&amp;nbsp; SR: 0&lt;/SPAN&gt; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Complete working Arduino code:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;void dprintf(const char *Format, ...);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;//&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;// Initialize DAC0, set pointer to 0, and increment the pointer 20 times.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;// After each increment, print out the Status Register to see which&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;// interrupts have been fired, then reset the SR interrupt flags.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;//&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;void TestDacIRQ()&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; SIM_SCGC2 |= SIM_SCGC2_DAC0;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable DAC clock&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; DAC0_C0 = DAC_C0_DACEN | DAC_C0_DACTRGSEL;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; DAC0_C1 = DAC_C1_DACBFWM(3) | DAC_C1_DACBFEN;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; DAC0_C2 = 0x08;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 pointer=0, max=8.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; // Show initial state.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; dprintf("Initial: DAC0_SR:%d&amp;nbsp; DAC0_C0:%02X&amp;nbsp; DAC0_C1:%02X&amp;nbsp; DAC0_C2:%02X \n\n",&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DAC0_SR, DAC0_C0, DAC0_C1, DAC0_C2);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; for(int i=0; i &amp;lt; 20; ++i) {&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Show current DAC buffer pointer, and the Status Register.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dprintf("%2d&amp;nbsp;&amp;nbsp; DACBufPtr:%2d&amp;nbsp;&amp;nbsp; SR:%2d&amp;nbsp; \n",&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i, DAC0_C2&amp;gt;&amp;gt;4, DAC0_SR);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DAC0_SR = 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; // Clear Status Register bits.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DAC0_C0 |= DAC_C0_DACSWTRG;&amp;nbsp;&amp;nbsp; // Software Trigger to step Buffer Pointer.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; }&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;void setup() {&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; Serial.begin(9600);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; for(int i=0; !Serial &amp;amp;&amp;amp; (i &amp;lt; 50); ++i)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay(20);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; TestDacIRQ();&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;void loop() { }&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;char spbuf[300];&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;void dprintf(const char *Format, ...)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; va_list ap;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; va_start(ap, Format);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; vsnprintf(spbuf, sizeof(spbuf), Format, ap);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; va_end(ap);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; Serial.print(spbuf);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 01 Mar 2017 14:45:28 GMT</pubDate>
    <dc:creator>daleroberts</dc:creator>
    <dc:date>2017-03-01T14:45:28Z</dc:date>
    <item>
      <title>K66 Doc error for DAC Top/Bottom flag bits</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K66-Doc-error-for-DAC-Top-Bottom-flag-bits/m-p/610479#M36063</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;SPAN style="font-size: 15px;"&gt;Hello, I think I have found a documentation error in the K66 Reference Manual. I am using a MK66FX1M0VMD18 on an Arduino Teensy 3.6. It looks like Top and Bottom pointer flags in the 12-bit DAC DACx_SR register (0x02-DACBFRPTF and 0x01-DACBFRPBF) and in DACx_C0 (0x02-DACBTIEN and 0x01-DACBBIEN) are documented backwards. I noticed this when trying to connect DMA to the DAC.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;SPAN style="font-size: 15px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;SPAN style="font-size: 15px;"&gt;I verified this with a small Arduino program to step the DAC buffer pointer with a software trigger, and show the SR flags at each step (then clear the SR flags after each step). It shows the 0x01 bit going high at the TOP of the buffer (this is documented as the Bottom bit), and the 0x02 bit going high at the BOTTOM of the buffer (this is documented as the Top bit). The 0x04 water mark flag goes high correctly 4 words from the upper limit (which I have set to 8 here).&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 15px;"&gt;Program Output:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Initial: DAC0_SR:2&amp;nbsp; DAC0_C0:A0&amp;nbsp; DAC0_C1:19&amp;nbsp; DAC0_C2:08&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;0&amp;nbsp;&amp;nbsp; DACBufPtr: 0&amp;nbsp;&amp;nbsp; SR: 2 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;1&amp;nbsp;&amp;nbsp; DACBufPtr: 1&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;2&amp;nbsp;&amp;nbsp; DACBufPtr: 2&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;3&amp;nbsp;&amp;nbsp; DACBufPtr: 3&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;4&amp;nbsp;&amp;nbsp; DACBufPtr: 4&amp;nbsp;&amp;nbsp; SR: 4 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp; (Water Mark flag, correct)&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;5&amp;nbsp;&amp;nbsp; DACBufPtr: 5&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;6&amp;nbsp;&amp;nbsp; DACBufPtr: 6&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;7&amp;nbsp;&amp;nbsp; DACBufPtr: 7&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;8&amp;nbsp;&amp;nbsp; DACBufPtr: 8&amp;nbsp;&amp;nbsp; SR: 1 &amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif;"&gt;(the "BOTTOM" bit triggers at the top of the buffer)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;9&amp;nbsp;&amp;nbsp; DACBufPtr: 0&amp;nbsp;&amp;nbsp; SR: 2&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif;"&gt;(the "TOP bit triggers at the bottom of the buffer)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;10&amp;nbsp;&amp;nbsp; DACBufPtr: 1&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;11&amp;nbsp;&amp;nbsp; DACBufPtr: 2&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;12&amp;nbsp;&amp;nbsp; DACBufPtr: 3&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;13&amp;nbsp;&amp;nbsp; DACBufPtr: 4&amp;nbsp;&amp;nbsp; SR: 4 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;14&amp;nbsp;&amp;nbsp; DACBufPtr: 5&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;15&amp;nbsp;&amp;nbsp; DACBufPtr: 6&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;16&amp;nbsp;&amp;nbsp; DACBufPtr: 7&amp;nbsp;&amp;nbsp; SR: 0 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;17&amp;nbsp;&amp;nbsp; DACBufPtr: 8&amp;nbsp;&amp;nbsp; SR: 1 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;18&amp;nbsp;&amp;nbsp; DACBufPtr: 0&amp;nbsp;&amp;nbsp; SR: 2 &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;19&amp;nbsp;&amp;nbsp; DACBufPtr: 1&amp;nbsp;&amp;nbsp; SR: 0&lt;/SPAN&gt; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Complete working Arduino code:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;void dprintf(const char *Format, ...);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;//&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;// Initialize DAC0, set pointer to 0, and increment the pointer 20 times.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;// After each increment, print out the Status Register to see which&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;// interrupts have been fired, then reset the SR interrupt flags.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;//&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;void TestDacIRQ()&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; SIM_SCGC2 |= SIM_SCGC2_DAC0;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable DAC clock&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; DAC0_C0 = DAC_C0_DACEN | DAC_C0_DACTRGSEL;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; DAC0_C1 = DAC_C1_DACBFWM(3) | DAC_C1_DACBFEN;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; DAC0_C2 = 0x08;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 pointer=0, max=8.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; // Show initial state.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; dprintf("Initial: DAC0_SR:%d&amp;nbsp; DAC0_C0:%02X&amp;nbsp; DAC0_C1:%02X&amp;nbsp; DAC0_C2:%02X \n\n",&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DAC0_SR, DAC0_C0, DAC0_C1, DAC0_C2);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; for(int i=0; i &amp;lt; 20; ++i) {&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Show current DAC buffer pointer, and the Status Register.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dprintf("%2d&amp;nbsp;&amp;nbsp; DACBufPtr:%2d&amp;nbsp;&amp;nbsp; SR:%2d&amp;nbsp; \n",&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i, DAC0_C2&amp;gt;&amp;gt;4, DAC0_SR);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DAC0_SR = 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; // Clear Status Register bits.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DAC0_C0 |= DAC_C0_DACSWTRG;&amp;nbsp;&amp;nbsp; // Software Trigger to step Buffer Pointer.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; }&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;void setup() {&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; Serial.begin(9600);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; for(int i=0; !Serial &amp;amp;&amp;amp; (i &amp;lt; 50); ++i)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay(20);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; TestDacIRQ();&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;void loop() { }&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;char spbuf[300];&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;void dprintf(const char *Format, ...)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; va_list ap;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; va_start(ap, Format);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; vsnprintf(spbuf, sizeof(spbuf), Format, ap);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; va_end(ap);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;&amp;nbsp; Serial.print(spbuf);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: terminal,monaco,monospace;"&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Mar 2017 14:45:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K66-Doc-error-for-DAC-Top-Bottom-flag-bits/m-p/610479#M36063</guid>
      <dc:creator>daleroberts</dc:creator>
      <dc:date>2017-03-01T14:45:28Z</dc:date>
    </item>
    <item>
      <title>Re: K66 Doc error for DAC Top/Bottom flag bits</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K66-Doc-error-for-DAC-Top-Bottom-flag-bits/m-p/610480#M36064</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Yes, it seems you are right on this issue,I had checked and agree with you. Anyway, I should double check with the application team and will response you &amp;amp; report the document bug if this been confirmed. Thanks for your information and sorry for the inconvenience this may had caused to you.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Mar 2017 08:58:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K66-Doc-error-for-DAC-Top-Bottom-flag-bits/m-p/610480#M36064</guid>
      <dc:creator>miduo</dc:creator>
      <dc:date>2017-03-10T08:58:45Z</dc:date>
    </item>
    <item>
      <title>Re: K66 Doc error for DAC Top/Bottom flag bits</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K66-Doc-error-for-DAC-Top-Bottom-flag-bits/m-p/610481#M36065</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for looking into it. I am glad to be able to contribute to the community! And I really enjoy working with this chip. It is a little powerhouse!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Mar 2017 15:49:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K66-Doc-error-for-DAC-Top-Bottom-flag-bits/m-p/610481#M36065</guid>
      <dc:creator>daleroberts</dc:creator>
      <dc:date>2017-03-10T15:49:26Z</dc:date>
    </item>
  </channel>
</rss>

