<?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 Error when trying to read/change MCG_C1 value. in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Error-when-trying-to-read-change-MCG-C1-value/m-p/294161#M11964</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello, my first post! I am trying to read the value of MCG_C1 but having bad luck.&amp;nbsp; I am using a KL25Z Freescale Mbed board and trying to do some baremetal stuff.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have the following in my header file:&lt;/P&gt;&lt;BLOCKQUOTE&gt;
&lt;P&gt;#define MCG_C1&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; (*(volatile unsigned long *)(0x40064000)) // MCG Register &lt;/P&gt;
&lt;/BLOCKQUOTE&gt;&lt;P&gt;And I am simply trying to read it at this point in my main.cpp file:&lt;/P&gt;&lt;BLOCKQUOTE&gt;
&lt;P&gt;unsigned int FU_TIM=0;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;FU_TIM=MCG_C1;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;pc.printf("MCG_C1 = %x \n",FU_TIM);&lt;/SPAN&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am expecting an 8-bit Hex number per the datasheet (p. 372) but I get "C84241A" which translates to: 1100100001000010010000011010 ... clearly more than 8 bits.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Questions:&lt;/P&gt;&lt;P&gt;1) Why am I getting more than 8-bits on read?&lt;/P&gt;&lt;P&gt;2) How do I write to this register?&amp;nbsp; I want to select the slow IRC eventually.&lt;/P&gt;&lt;P&gt;3) Moreover, if I try to read MCG_C2 at 0x40064001, my board just hangs... what gives?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you,&lt;/P&gt;&lt;P&gt;Donovan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 10 Apr 2014 22:18:56 GMT</pubDate>
    <dc:creator>donovanlee</dc:creator>
    <dc:date>2014-04-10T22:18:56Z</dc:date>
    <item>
      <title>Error when trying to read/change MCG_C1 value.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Error-when-trying-to-read-change-MCG-C1-value/m-p/294161#M11964</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello, my first post! I am trying to read the value of MCG_C1 but having bad luck.&amp;nbsp; I am using a KL25Z Freescale Mbed board and trying to do some baremetal stuff.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have the following in my header file:&lt;/P&gt;&lt;BLOCKQUOTE&gt;
&lt;P&gt;#define MCG_C1&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; (*(volatile unsigned long *)(0x40064000)) // MCG Register &lt;/P&gt;
&lt;/BLOCKQUOTE&gt;&lt;P&gt;And I am simply trying to read it at this point in my main.cpp file:&lt;/P&gt;&lt;BLOCKQUOTE&gt;
&lt;P&gt;unsigned int FU_TIM=0;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;FU_TIM=MCG_C1;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;pc.printf("MCG_C1 = %x \n",FU_TIM);&lt;/SPAN&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am expecting an 8-bit Hex number per the datasheet (p. 372) but I get "C84241A" which translates to: 1100100001000010010000011010 ... clearly more than 8 bits.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Questions:&lt;/P&gt;&lt;P&gt;1) Why am I getting more than 8-bits on read?&lt;/P&gt;&lt;P&gt;2) How do I write to this register?&amp;nbsp; I want to select the slow IRC eventually.&lt;/P&gt;&lt;P&gt;3) Moreover, if I try to read MCG_C2 at 0x40064001, my board just hangs... what gives?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you,&lt;/P&gt;&lt;P&gt;Donovan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Apr 2014 22:18:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Error-when-trying-to-read-change-MCG-C1-value/m-p/294161#M11964</guid>
      <dc:creator>donovanlee</dc:creator>
      <dc:date>2014-04-10T22:18:56Z</dc:date>
    </item>
    <item>
      <title>Re: Error when trying to read/change MCG_C1 value.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Error-when-trying-to-read-change-MCG-C1-value/m-p/294162#M11965</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Donovan,&lt;/P&gt;&lt;P&gt;as you know, the MCG_C1 register has only 8 bits length, it is a byte register, if you want to access it, you should use a byte variable and define the address of&amp;nbsp; MCG_C1 register as a Byte address.&lt;/P&gt;&lt;P&gt;Pls modify in this way:&lt;/P&gt;&lt;P&gt;#define MCG_C1&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; (*(volatile unsigned long *)(0x40064000)) // MCG Register&lt;/P&gt;&lt;P&gt;TO&lt;/P&gt;&lt;P&gt;#define MCGG_C1&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; (*(volatile unsigned char*)(0x40064000)) // MCG Register &lt;/P&gt;&lt;P&gt;in&amp;nbsp; your main code, you can declare a global variable as:&lt;/P&gt;&lt;P&gt;unsigned char c0;&lt;/P&gt;&lt;P&gt;main()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c0=MCGG_C1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm("nop");&lt;/P&gt;&lt;P&gt;//the above code is okay&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;I do not know the tools you are using, I use CodeWarrior for mcu ver10.5 tools, the MCG_C1 name has been defined, you can use the name directly. So I use another name MCGG_C1.&lt;/P&gt;&lt;P&gt;If you declare as #define MCG_C1&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; (*(volatile unsigned long *)(0x40064000)) // MCG Register, you will get four bytes data from the following address: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;0x40064000, 0x40064001,0x40064002,0x40064003.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 Apr 2014 07:39:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Error-when-trying-to-read-change-MCG-C1-value/m-p/294162#M11965</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2014-04-11T07:39:56Z</dc:date>
    </item>
    <item>
      <title>Re: Re: Error when trying to read/change MCG_C1 value.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Error-when-trying-to-read-change-MCG-C1-value/m-p/294163#M11966</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you! What a silly mistake on my part.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Well now, I can read the value of MCG_C1, but when I try to set it, like&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;
&lt;P&gt;MCG_C1=0x3c;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;&lt;P&gt;The system hangs.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am using the online MBED compiler.&amp;nbsp; My full code is below:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;head.h:&lt;/P&gt;&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;#define SIM_SDID&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; (*(volatile unsigned long *)(0x40048024)) // Kinetis ID register&lt;/P&gt;
&lt;P&gt;#define PORTC_PCR3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*(volatile unsigned long *)(0x4004B00C)) // PORTC_PCR3 Mux&lt;/P&gt;
&lt;P&gt;#define SIM_SOPT2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*(volatile unsigned long *)(0x40048004)) // SIM Option Mux&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;#define MCG_C1&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; (*(volatile unsigned char *)(0x40064000)) // MCG Register &lt;/P&gt;
&lt;P&gt;#define MCG_C2&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; (*(volatile unsigned char *)(0x40064001))&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;main.cpp:&lt;/P&gt;&lt;BLOCKQUOTE&gt;
&lt;P&gt;#include "mbed.h"&lt;/P&gt;
&lt;P&gt;#include "head.h"&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Serial pc(USBTX, USBRX); // tx, rx for debug terminal&lt;/P&gt;
&lt;P&gt;Serial testOut(PTC4,PTC3);&lt;/P&gt;
&lt;P&gt;DigitalOut myled(LED1);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;int main() {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int cycle = 0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC_PCR3=0x501;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_SOPT2=0x4010080;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(true){&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pc.baud(9600);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myled = 1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wait(0.2);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myled = 0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wait(0.2);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int ID=0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int FU=0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int FU2=0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char FU_TIM=0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cycle++;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ID=SIM_SDID;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FU=SIM_SOPT2;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // PORTC_PCR3=0x501;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FU2=PORTC_PCR3;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //MCG_C1=0x3c;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FU_TIM=MCG_C1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pc.printf("Kinetis ID = %x \n",ID);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pc.printf("SIM_SOPT2 = %x \n",FU);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pc.printf("PORTC_PCR3 = %x \n",FU2);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pc.printf("MCG_C1 = %x \n",FU_TIM);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pc.printf("CycleNo = %d \n", cycle);&lt;/P&gt;
&lt;P&gt;&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&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 Apr 2014 21:11:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Error-when-trying-to-read-change-MCG-C1-value/m-p/294163#M11966</guid>
      <dc:creator>donovanlee</dc:creator>
      <dc:date>2014-04-11T21:11:50Z</dc:date>
    </item>
  </channel>
</rss>

