<?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 TWR-MCF54418 DAC Module in ColdFire/68K Microcontrollers and Processors</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/TWR-MCF54418-DAC-Module/m-p/287242#M12007</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am working on various peripherals of the tower board (TWR-MCF54418).&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;But for now, I am stuck at DAC (Digital to Analog Converter).&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The problem is that when I try to read the DAC related registers (MCF_DAC0_CR, MCF_DAC0_STEP, MCF_DAC0_MIN, MCF_DAC0_MAX, and MCF_DAC0_DATA) as mentioned in section 30.3 of the MCF54418RM (&lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fcache.freescale.com%2Ffiles%2F32bit%2Fdoc%2Fref_manual%2FMCF54418RM.pdf" rel="nofollow" target="_blank"&gt;http://cache.freescale.com/files/32bit/doc/ref_manual/MCF54418RM.pdf&lt;/A&gt;), they all return 0xFFFF.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Even when I configure them, they don't retain their states and immediately over-written as 0xFFFF.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have configured the MISCCR2 as 0xE861 to enable both the DAC modules and disable the ADCs.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My configuration of tower module contains, TWR-MCF54418 and TWR-SER2, attached with the TWR-ELEV modules.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am running Linux 2.6.29 on the said board.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have tried configuring those registers on the bare board, but it returned the same behavior as well.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Can anyone please point out what I am missing, or where I am doing wrong?&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the code for the bare board on&amp;nbsp; Code Warrior ProfessionalEditionMCU 10.0:&lt;/P&gt;&lt;P&gt;#include "support_common.h" /* include peripheral declarations and more */&lt;/P&gt;&lt;P&gt;#if (CONSOLE_IO_SUPPORT || ENABLE_UART_SUPPORT)&lt;/P&gt;&lt;P&gt;/* Standard IO is only possible if Console or UART support is enabled. */&lt;/P&gt;&lt;P&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#define MISCCR2 (*(unsigned short*)(0xEC09001A))&lt;/P&gt;&lt;P&gt;#define ADCTSR (*(unsigned short*)(0xEC09001C))&lt;/P&gt;&lt;P&gt;#define DACTSR (*(unsigned short*)(0xEC09001E))&lt;/P&gt;&lt;P&gt;#define ADC_CAL (*(unsigned short*)(0xFC094054))&lt;/P&gt;&lt;P&gt;#define PPMHR0 (*(unsigned int*)(0xFC040030))&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;enum STATES&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; STATE1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; STATE2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; STATE3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; STATE4,&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;int main(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int counter = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char state = STATE1;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#if (CONSOLE_IO_SUPPORT || ENABLE_UART_SUPPORT)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //printf("Hello World in C++ from MCF54418 derivative on TWR-MCF5441X board\n\r");&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(;;)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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;&amp;nbsp;&amp;nbsp; switch(state)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp; case STATE1:&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;&amp;nbsp; MISCCR2 = MISCCR2 &amp;amp; 0xFFE1; //0xEC09001A&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;&amp;nbsp; MISCCR2 = MISCCR2 | 0x0060; //0xEC09001A&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("Register states in STATE1\n");&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;&amp;nbsp; printf("MISCCR2: %d\n", MISCCR2);&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xEC09001A&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;&amp;nbsp; printf("ADCTSR: %d\n", ADCTSR);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xEC09001C&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;&amp;nbsp; printf("DACTSR: %d\n", DACTSR);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xEC09001E&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;&amp;nbsp; printf("ADC_CAL %d\n", ADC_CAL);&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC094054&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;&amp;nbsp; printf("PPMHR0 %d\n", PPMHR0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC040030&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;&amp;nbsp; printf("MCF_DAC0_CR: %d\n", MCF_DAC0_CR);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098000&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;&amp;nbsp; printf("MCF_DAC0_STEP: %d\n", MCF_DAC0_STEP);&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098004&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;&amp;nbsp; printf("MCF_DAC0_MIN: %d\n", MCF_DAC0_MIN);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098006&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;&amp;nbsp; printf("MCF_DAC0_MAX: %d\n", MCF_DAC0_MAX);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098008&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;&amp;nbsp; printf("MCF_DAC0_DATA: %d\n", MCF_DAC0_DATA);&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098002&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; state = STATE2;&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;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp; case STATE2:&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;&amp;nbsp; printf("Configuring Registers\n");&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;&amp;nbsp; MCF_DAC0_CR = 0x1101;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098000&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;&amp;nbsp; ADC_CAL = ADC_CAL | 0x03;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC094054&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;&amp;nbsp; MCF_DAC0_STEP = 0x0004;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098004&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;&amp;nbsp; MCF_DAC0_MIN = 0x0745;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098006&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;&amp;nbsp; MCF_DAC0_MAX = 0xFE8A;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098008&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;&amp;nbsp; MCF_DAC0_DATA = MCF_DAC0_MAX;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098008&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; state = STATE3;&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;&amp;nbsp; break;&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;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case STATE3:&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;&amp;nbsp; printf("Setting PDN low to activate DAC\n");&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;&amp;nbsp; MCF_DAC0_CR = MCF_DAC0_CR &amp;amp; 0xFFFE;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; state = STATE4;&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;&amp;nbsp; break;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case STATE4:&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;&amp;nbsp; printf("MISCCR2: %d\n", MISCCR2);&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;&amp;nbsp; printf("ADCTSR: %d\n", ADCTSR);&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;&amp;nbsp; printf("DACTSR: %d\n", DACTSR);&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;&amp;nbsp; printf("ADC_CAL %d\n", ADC_CAL);&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;&amp;nbsp; printf("PPMHR0 %d\n", PPMHR0);&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;&amp;nbsp; printf("MCF_DAC0_CR: %d\n", MCF_DAC0_CR);&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;&amp;nbsp; printf("MCF_DAC0_STEP: %d\n", MCF_DAC0_STEP);&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;&amp;nbsp; printf("MCF_DAC0_MIN: %d\n", MCF_DAC0_MIN);&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;&amp;nbsp; printf("MCF_DAC0_MAX: %d\n", MCF_DAC0_MAX);&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;&amp;nbsp; printf("MCF_DAC0_DATA: %d\n", MCF_DAC0_DATA);&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;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&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;And here is the output of the bare board:&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Register states in STATE1&lt;/P&gt;&lt;P&gt;MISCCR2: 59489&lt;/P&gt;&lt;P&gt;ADCTSR: 0&lt;/P&gt;&lt;P&gt;DACTSR: 0&lt;/P&gt;&lt;P&gt;ADC_CAL 65535&lt;/P&gt;&lt;P&gt;PPMHR0 2115943423&lt;/P&gt;&lt;P&gt;MCF_DAC0_CR: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_STEP: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MIN: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MAX: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_DATA: 65535&lt;/P&gt;&lt;P&gt;Configuring Registers&lt;/P&gt;&lt;P&gt;MISCCR2: 59489&lt;/P&gt;&lt;P&gt;ADCTSR: 0&lt;/P&gt;&lt;P&gt;DACTSR: 0&lt;/P&gt;&lt;P&gt;ADC_CAL 65535&lt;/P&gt;&lt;P&gt;PPMHR0 2115943423&lt;/P&gt;&lt;P&gt;MCF_DAC0_CR: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_STEP: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MIN: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MAX: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_DATA: 65535&lt;/P&gt;&lt;P&gt;MISCCR2: 59489&lt;/P&gt;&lt;P&gt;ADCTSR: 0&lt;/P&gt;&lt;P&gt;DACTSR: 0&lt;/P&gt;&lt;P&gt;ADC_CAL 65535&lt;/P&gt;&lt;P&gt;PPMHR0 2115943423&lt;/P&gt;&lt;P&gt;MCF_DAC0_CR: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_STEP: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MIN: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MAX: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_DATA: 65535&lt;/P&gt;&lt;P&gt;MISCCR2: 59489&lt;/P&gt;&lt;P&gt;ADCTSR: 0&lt;/P&gt;&lt;P&gt;DACTSR: 0&lt;/P&gt;&lt;P&gt;ADC_CAL 65535&lt;/P&gt;&lt;P&gt;PPMHR0 2115943423&lt;/P&gt;&lt;P&gt;MCF_DAC0_CR: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_STEP: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MIN: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MAX: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_DATA: 65535&lt;/P&gt;&lt;P&gt;MISCCR2: 59489&lt;/P&gt;&lt;P&gt;ADCTSR: 0&lt;/P&gt;&lt;P&gt;DACTSR: 0&lt;/P&gt;&lt;P&gt;ADC_CAL 65535&lt;/P&gt;&lt;P&gt;PPMHR0 2115943423&lt;/P&gt;&lt;P&gt;MCF_DAC0_CR: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_STEP: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MIN: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MAX: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_DATA: 65535&lt;/P&gt;&lt;P&gt;MISCCR2: 59489&lt;/P&gt;&lt;P&gt;ADCTSR: 0&lt;/P&gt;&lt;P&gt;DACTSR: 0&lt;/P&gt;&lt;P&gt;ADC_CAL 65535&lt;/P&gt;&lt;P&gt;PPMHR0 2115943423&lt;/P&gt;&lt;P&gt;MCF_DAC0_CR: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_STEP: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MIN: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MAX: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_DATA: 65535&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 26 Apr 2013 17:21:03 GMT</pubDate>
    <dc:creator>usmansaeed</dc:creator>
    <dc:date>2013-04-26T17:21:03Z</dc:date>
    <item>
      <title>TWR-MCF54418 DAC Module</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/TWR-MCF54418-DAC-Module/m-p/287242#M12007</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am working on various peripherals of the tower board (TWR-MCF54418).&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;But for now, I am stuck at DAC (Digital to Analog Converter).&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The problem is that when I try to read the DAC related registers (MCF_DAC0_CR, MCF_DAC0_STEP, MCF_DAC0_MIN, MCF_DAC0_MAX, and MCF_DAC0_DATA) as mentioned in section 30.3 of the MCF54418RM (&lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fcache.freescale.com%2Ffiles%2F32bit%2Fdoc%2Fref_manual%2FMCF54418RM.pdf" rel="nofollow" target="_blank"&gt;http://cache.freescale.com/files/32bit/doc/ref_manual/MCF54418RM.pdf&lt;/A&gt;), they all return 0xFFFF.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Even when I configure them, they don't retain their states and immediately over-written as 0xFFFF.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have configured the MISCCR2 as 0xE861 to enable both the DAC modules and disable the ADCs.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My configuration of tower module contains, TWR-MCF54418 and TWR-SER2, attached with the TWR-ELEV modules.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am running Linux 2.6.29 on the said board.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have tried configuring those registers on the bare board, but it returned the same behavior as well.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Can anyone please point out what I am missing, or where I am doing wrong?&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the code for the bare board on&amp;nbsp; Code Warrior ProfessionalEditionMCU 10.0:&lt;/P&gt;&lt;P&gt;#include "support_common.h" /* include peripheral declarations and more */&lt;/P&gt;&lt;P&gt;#if (CONSOLE_IO_SUPPORT || ENABLE_UART_SUPPORT)&lt;/P&gt;&lt;P&gt;/* Standard IO is only possible if Console or UART support is enabled. */&lt;/P&gt;&lt;P&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#define MISCCR2 (*(unsigned short*)(0xEC09001A))&lt;/P&gt;&lt;P&gt;#define ADCTSR (*(unsigned short*)(0xEC09001C))&lt;/P&gt;&lt;P&gt;#define DACTSR (*(unsigned short*)(0xEC09001E))&lt;/P&gt;&lt;P&gt;#define ADC_CAL (*(unsigned short*)(0xFC094054))&lt;/P&gt;&lt;P&gt;#define PPMHR0 (*(unsigned int*)(0xFC040030))&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;enum STATES&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; STATE1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; STATE2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; STATE3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; STATE4,&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;int main(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int counter = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char state = STATE1;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#if (CONSOLE_IO_SUPPORT || ENABLE_UART_SUPPORT)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //printf("Hello World in C++ from MCF54418 derivative on TWR-MCF5441X board\n\r");&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(;;)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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;&amp;nbsp;&amp;nbsp; switch(state)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp; case STATE1:&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;&amp;nbsp; MISCCR2 = MISCCR2 &amp;amp; 0xFFE1; //0xEC09001A&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;&amp;nbsp; MISCCR2 = MISCCR2 | 0x0060; //0xEC09001A&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("Register states in STATE1\n");&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;&amp;nbsp; printf("MISCCR2: %d\n", MISCCR2);&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xEC09001A&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;&amp;nbsp; printf("ADCTSR: %d\n", ADCTSR);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xEC09001C&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;&amp;nbsp; printf("DACTSR: %d\n", DACTSR);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xEC09001E&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;&amp;nbsp; printf("ADC_CAL %d\n", ADC_CAL);&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC094054&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;&amp;nbsp; printf("PPMHR0 %d\n", PPMHR0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC040030&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;&amp;nbsp; printf("MCF_DAC0_CR: %d\n", MCF_DAC0_CR);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098000&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;&amp;nbsp; printf("MCF_DAC0_STEP: %d\n", MCF_DAC0_STEP);&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098004&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;&amp;nbsp; printf("MCF_DAC0_MIN: %d\n", MCF_DAC0_MIN);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098006&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;&amp;nbsp; printf("MCF_DAC0_MAX: %d\n", MCF_DAC0_MAX);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098008&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;&amp;nbsp; printf("MCF_DAC0_DATA: %d\n", MCF_DAC0_DATA);&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098002&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; state = STATE2;&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;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp; case STATE2:&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;&amp;nbsp; printf("Configuring Registers\n");&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;&amp;nbsp; MCF_DAC0_CR = 0x1101;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098000&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;&amp;nbsp; ADC_CAL = ADC_CAL | 0x03;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC094054&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;&amp;nbsp; MCF_DAC0_STEP = 0x0004;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098004&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;&amp;nbsp; MCF_DAC0_MIN = 0x0745;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098006&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;&amp;nbsp; MCF_DAC0_MAX = 0xFE8A;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098008&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;&amp;nbsp; MCF_DAC0_DATA = MCF_DAC0_MAX;&amp;nbsp;&amp;nbsp;&amp;nbsp; //0xFC098008&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; state = STATE3;&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;&amp;nbsp; break;&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;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case STATE3:&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;&amp;nbsp; printf("Setting PDN low to activate DAC\n");&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;&amp;nbsp; MCF_DAC0_CR = MCF_DAC0_CR &amp;amp; 0xFFFE;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; state = STATE4;&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;&amp;nbsp; break;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case STATE4:&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;&amp;nbsp; printf("MISCCR2: %d\n", MISCCR2);&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;&amp;nbsp; printf("ADCTSR: %d\n", ADCTSR);&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;&amp;nbsp; printf("DACTSR: %d\n", DACTSR);&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;&amp;nbsp; printf("ADC_CAL %d\n", ADC_CAL);&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;&amp;nbsp; printf("PPMHR0 %d\n", PPMHR0);&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;&amp;nbsp; printf("MCF_DAC0_CR: %d\n", MCF_DAC0_CR);&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;&amp;nbsp; printf("MCF_DAC0_STEP: %d\n", MCF_DAC0_STEP);&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;&amp;nbsp; printf("MCF_DAC0_MIN: %d\n", MCF_DAC0_MIN);&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;&amp;nbsp; printf("MCF_DAC0_MAX: %d\n", MCF_DAC0_MAX);&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;&amp;nbsp; printf("MCF_DAC0_DATA: %d\n", MCF_DAC0_DATA);&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;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&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;And here is the output of the bare board:&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Register states in STATE1&lt;/P&gt;&lt;P&gt;MISCCR2: 59489&lt;/P&gt;&lt;P&gt;ADCTSR: 0&lt;/P&gt;&lt;P&gt;DACTSR: 0&lt;/P&gt;&lt;P&gt;ADC_CAL 65535&lt;/P&gt;&lt;P&gt;PPMHR0 2115943423&lt;/P&gt;&lt;P&gt;MCF_DAC0_CR: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_STEP: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MIN: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MAX: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_DATA: 65535&lt;/P&gt;&lt;P&gt;Configuring Registers&lt;/P&gt;&lt;P&gt;MISCCR2: 59489&lt;/P&gt;&lt;P&gt;ADCTSR: 0&lt;/P&gt;&lt;P&gt;DACTSR: 0&lt;/P&gt;&lt;P&gt;ADC_CAL 65535&lt;/P&gt;&lt;P&gt;PPMHR0 2115943423&lt;/P&gt;&lt;P&gt;MCF_DAC0_CR: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_STEP: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MIN: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MAX: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_DATA: 65535&lt;/P&gt;&lt;P&gt;MISCCR2: 59489&lt;/P&gt;&lt;P&gt;ADCTSR: 0&lt;/P&gt;&lt;P&gt;DACTSR: 0&lt;/P&gt;&lt;P&gt;ADC_CAL 65535&lt;/P&gt;&lt;P&gt;PPMHR0 2115943423&lt;/P&gt;&lt;P&gt;MCF_DAC0_CR: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_STEP: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MIN: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MAX: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_DATA: 65535&lt;/P&gt;&lt;P&gt;MISCCR2: 59489&lt;/P&gt;&lt;P&gt;ADCTSR: 0&lt;/P&gt;&lt;P&gt;DACTSR: 0&lt;/P&gt;&lt;P&gt;ADC_CAL 65535&lt;/P&gt;&lt;P&gt;PPMHR0 2115943423&lt;/P&gt;&lt;P&gt;MCF_DAC0_CR: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_STEP: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MIN: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MAX: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_DATA: 65535&lt;/P&gt;&lt;P&gt;MISCCR2: 59489&lt;/P&gt;&lt;P&gt;ADCTSR: 0&lt;/P&gt;&lt;P&gt;DACTSR: 0&lt;/P&gt;&lt;P&gt;ADC_CAL 65535&lt;/P&gt;&lt;P&gt;PPMHR0 2115943423&lt;/P&gt;&lt;P&gt;MCF_DAC0_CR: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_STEP: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MIN: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MAX: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_DATA: 65535&lt;/P&gt;&lt;P&gt;MISCCR2: 59489&lt;/P&gt;&lt;P&gt;ADCTSR: 0&lt;/P&gt;&lt;P&gt;DACTSR: 0&lt;/P&gt;&lt;P&gt;ADC_CAL 65535&lt;/P&gt;&lt;P&gt;PPMHR0 2115943423&lt;/P&gt;&lt;P&gt;MCF_DAC0_CR: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_STEP: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MIN: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_MAX: 65535&lt;/P&gt;&lt;P&gt;MCF_DAC0_DATA: 65535&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 26 Apr 2013 17:21:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/TWR-MCF54418-DAC-Module/m-p/287242#M12007</guid>
      <dc:creator>usmansaeed</dc:creator>
      <dc:date>2013-04-26T17:21:03Z</dc:date>
    </item>
    <item>
      <title>Re: TWR-MCF54418 DAC Module</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/TWR-MCF54418-DAC-Module/m-p/287243#M12008</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I believe there is a mistake in Table 9-5 of the MCF5441x Reference Manual, where PPMHR0[CDn] assignments are enumerated.&amp;nbsp; You are resetting CD39, which is associated to DAC0 in the table, and I have checked that it is CD38 which enables DAC.&amp;nbsp; There is also a mistake with ADC, which is enabled by CD37 instead of being enabled by CD38.&amp;nbsp; I have not checked all of the rest, but it is possible that more mistakes could exist.&amp;nbsp; If you reset CD38 in PPMHR0 you will notice that DAC0 registers return values different than 0xFFFF.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 16 Sep 2015 11:45:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/TWR-MCF54418-DAC-Module/m-p/287243#M12008</guid>
      <dc:creator>antonio_agenjo</dc:creator>
      <dc:date>2015-09-16T11:45:18Z</dc:date>
    </item>
    <item>
      <title>Re: TWR-MCF54418 DAC Module</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/TWR-MCF54418-DAC-Module/m-p/287244#M12009</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;gt; I believe there is a mistake in Table 9-5 of the MCF5441x Reference Manual,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Well spotted. If you want to use DMA you'll want the PREVIOUS version of the manual. They managed to take a good version 3 of the manual and add lots more errors in Version 4. And then never fixed them or released any Addenda for those. I've checked Version 3 and it has the same PPMHR assignments. This is "normal" with these manuals. I'm still finding bad bugs in the 1993 68000 User\'s Manual. "Table A-1. MC68010 Loop Mode Instructions" omits the "memory move" mode documented (with a bad typo) in "Figure A-1. DBcc Loop Mode Program Example".&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Old version of the manual available here:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/message/307125"&gt;Re: MCF54415 eDMA help&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Unless you are running on a battery and have to save power, or you want it to run cooler, or you want to reduce EMC, or you just want to program it the way it is documented, it might be worth turning EVERYTHING on in all four control registers. That's probably how it was tested, and may be the only way it works.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We might be able to work it out without resorting to trial-and-error with the hardware though. The manual says:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;9.2.4 Peripheral Power Management Registers (PPMHR{1,0}, PPMLR{1,0})&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;The PPMR registers provide a bit map for controlling the generation of the peripheral clocks for each&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;decoded address space. Recall &lt;STRONG&gt;each peripheral module is mapped into 16 kByte slots&lt;/STRONG&gt; within the memory&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;map. The PPMR registers provide a unique control bit for each address space that defines whether the&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;module clock for the given space is enabled or disabled.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So assuming they got the address map tables correct, we just have to find which 16k slot those peripherals are actually in, which is:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;Table 1-3. Peripheral Bus Controller 0 Memory Map (continued)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;0xFC08_0000 32 PIT 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;0xFC08_4000 33 PIT 1&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;0xFC08_8000 34 PIT 2&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;0xFC08_C000 35 PIT 3&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;0xFC09_0000 36 Edge port 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;0xFC09_4000 37 ADC&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;0xFC09_8000 38 DAC 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;0xFC09_C000 39 DAC 1&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;0xFC0A_8000 42 Robust real-time clock&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here you can see where this table gets it wrong, as it completely misses DAC1:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;Table 9-5. PPMHR0[CDn] Assignments&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;32 CD32 PIT 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;33 CD33 PIT 1&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;34 CD34 PIT 2&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;35 CD35 PIT 3&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e23d39; font-family: courier new,courier;"&gt;&lt;STRONG&gt;37 CD37 Edge Port&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e23d39; font-family: courier new,courier;"&gt;&lt;STRONG&gt;38 CD38 ADC&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e23d39; font-family: courier new,courier;"&gt;&lt;STRONG&gt;39 CD39 DAC0&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;42 CD42 Robust RTC&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is likely to be a cut/paste/edit mistake when composing the manual from another one for a similar chip. For instance, the MCF54455's Memory Map has the "Edge Port" in a different slot to the MCF54418, but it in the same place as in the mistaken MCF54418's PPMHR0 Table:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;MCF54455 Reference Manual, Rev 5&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;Table 1-3. Internal Peripheral Space Memory Map (continued)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;0xFC08_0000 32 PIT 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;0xFC08_4000 33 PIT 1&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;0xFC08_8000 34 PIT 2&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;0xFC08_C000 35 PIT 3&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e23d39;"&gt;&lt;STRONG style="font-family: courier new,courier;"&gt;0xFC09_4000 37 Edge Port&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;0xFC0A_0000 40 CCM, Reset Controller, Power Management&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Tom&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 30 Oct 2015 10:28:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/TWR-MCF54418-DAC-Module/m-p/287244#M12009</guid>
      <dc:creator>TomE</dc:creator>
      <dc:date>2015-10-30T10:28:45Z</dc:date>
    </item>
  </channel>
</rss>

