<?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: CFF flag is not change in CodeWarrior for MCU</title>
    <link>https://community.nxp.com/t5/CodeWarrior-for-MCU/CFF-flag-is-not-change/m-p/177780#M5822</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;ATD1SC=0x41; //Select ATDCO=1 and CH1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This code doesn't do what the commet says, but instead it enables interrupts, which you don't handle in your code, and it sets channel to AD0. This is why you shouldn't setup register with hex values, but with pre-defined bit masks.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void delay(void){&lt;BR /&gt;&amp;nbsp; uint I,j,k;&lt;BR /&gt;&amp;nbsp; for(I=0;I&amp;lt;1000;I++)&lt;BR /&gt;&amp;nbsp; for(j=0;j&amp;lt;500;j++)&lt;BR /&gt;&amp;nbsp; k++;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;This function does nothing and the compiler will most likely optimize it away entirely. I would strongly suggest using hardware timers instead. If you insist on keeping this burn-away loop, you must make all loop iterators volatile or there are no guarantees it will work.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 21 Jan 2011 15:52:38 GMT</pubDate>
    <dc:creator>Lundin</dc:creator>
    <dc:date>2011-01-21T15:52:38Z</dc:date>
    <item>
      <title>CFF flag is not change</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-MCU/CFF-flag-is-not-change/m-p/177779#M5821</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello forum I need your help I'm trying to acquirer an analog signal and convert to digital and send via SCI so I developed a code but I don't no where is my error because the CCF flag has not change 0 to 1 because that I&amp;nbsp; can not do the measurement and transmit to SCI port could anyone suggest me any idea please see the code&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hardware Demo908gb60&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;#include &amp;lt;hidef.h&amp;gt; /* for EnableInterrupts macro */
#include &amp;lt;MC9S08GB60.h&amp;gt; /* include peripheral declarations */

#define initSOPT 0b01110011&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //COP and STOP enable controls
//&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;&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; |||&amp;nbsp;&amp;nbsp; |+-RSTPE --- Reset pin enabled
//&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;&amp;nbsp; +--BKGDPE -- BKGD pin enabled
//&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; ||+------STOPE --- STOP allowed
//&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; |+-------COPT ---- long timeout 2^18
//&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; +--------COPE ---- COP off

#define initICGC2 0b01110000&amp;nbsp;&amp;nbsp;&amp;nbsp; //Clock Generator Control 2
//&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; ||||||||&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; should write MFDx before ICGC1
//&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; |||||||+-RFD0 \
//&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; ||||||+--RFD1&amp;nbsp; --- post-PLL divider (div by 1)
//&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; |||||+---RFD2 /
//&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; ||||+----LOCRE --- loss of clock doesn't reset
//&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; |||+-----MFD0 \
//&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; ||+------MFD1&amp;nbsp; --- FLL loop multiplier N = 18x
//&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; |+-------MFD2 /
//&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; +--------LOLRE --- loss of lock doesn't reset
// after FLL init, LOCRE will be set to force reset on clock loss
#define initICGC1 0b00111000&amp;nbsp;&amp;nbsp; //Clock Generator Control 1
//&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; 0|||||xx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this setting for 32kHz
//&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;&amp;nbsp; ||||+---OSCSTEN - don't keep osc on in stop mode
//&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;&amp;nbsp; |||+----CLKS0 \ - select FLL engaged external
//&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;&amp;nbsp; ||+-----CLKS1 /&amp;nbsp;&amp;nbsp;&amp;nbsp; (FEE) mode
//&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;&amp;nbsp; |+------REFS ---- enable oscillator amplifier
//&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;&amp;nbsp; +-------RANGE --- 32kHz crystal
//
//
//The following values has been test through communication with a PC
//except Baudrate230400 because usually PC doesn't support such high baud rate
#define Baudrate9600&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x007b;&amp;nbsp;&amp;nbsp; // actually&amp;nbsp; 9590.634
#define Baudrate19200&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x003d;&amp;nbsp;&amp;nbsp; // actually&amp;nbsp; 19338.492
#define Baudrate38400&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x001f;&amp;nbsp;&amp;nbsp; // actually&amp;nbsp; 38053.161
#define Baudrate57600&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0014;&amp;nbsp;&amp;nbsp; // actually&amp;nbsp; 58982.400
#define Baudrate115200&amp;nbsp;&amp;nbsp; 0x000a;&amp;nbsp;&amp;nbsp; // actually&amp;nbsp; 117964.800
#define Baudrate230400&amp;nbsp;&amp;nbsp; 0x0005;&amp;nbsp;&amp;nbsp; // actually&amp;nbsp; 235929.600
//************************************************??*************************************************?*?****************************************
void delay(void){
&amp;nbsp; uint I,j,k;
&amp;nbsp; for(I=0;I&amp;lt;1000;I++)
&amp;nbsp;&amp;nbsp;&amp;nbsp; for(j=0;j&amp;lt;500;j++)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; k++;
}
//************************************************??*************************************************?*?****************************************
//Variables declaration
void Transmit (unsigned char *sMessage);
unsigned char result;
unsigned char buffer [19] = "Voltage:&amp;nbsp; .&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \n\r";&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 16 char PC Buffer */

//************************************************??*************************************************?*?***************************************
/* --------------------------------------------------??------------
 Convert ATC CH1 conversion to a fractional number
 with two decimal precision.
&amp;nbsp; --------------------------------------------------??---------- */
void Bin2Frac(unsigned char value)
{
 //volatile unsigned int DecResult;
 volatile unsigned int temp;
 //volatile unsigned char remainder;

 temp = (value*100)/51;
 buffer[12]= (unsigned char)(temp % 10);
 temp = temp / 10;
 buffer[11]= (unsigned char)(temp % 10);
 buffer[9]= (unsigned char)temp / 10;

 buffer[9] += 0x30;
 buffer[11] += 0x30;
 buffer[12] += 0x30;

}
//************************************************??*************************************************?*?****************************************
void InitSCI1(void){
&amp;nbsp; SCI2C1 = 0x00;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Initializing SCI2C1
&amp;nbsp; SCI2C3 = 0x00;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Initializing SCI2C3
&amp;nbsp; SCI2C2 = 0x00;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Initializing SCI2C2
&amp;nbsp; SCI2BD = Baudrate9600;&amp;nbsp; //Baudrate
&amp;nbsp; SCI2C1_M = 0x00;&amp;nbsp;&amp;nbsp;&amp;nbsp; // eight bits
&amp;nbsp; SCI2C1_PE = 0x00;&amp;nbsp;&amp;nbsp; // hardware parity disable
&amp;nbsp; SCI2C2_TE = 0x01; //Transmition Enable
&amp;nbsp; SCI2C2_RE = 0x00;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Reception Disable
&amp;nbsp; //SCI2C2_RIE = 0x00;&amp;nbsp; //Receiver Interrupt Enable
}
//************************************************??*************************************************?*?***************************************
void InitATD(void){
ATD1PE=0x02;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Enable the ATP pin PTB1
ATD1SC=0x41;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Select ATDCO=1 and CH1
ATD1C=0xA0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Control Register configuration


}

//************************************************??*************************************************?*?***************************************
void main(void) {
&amp;nbsp; PTBSE = 0x00;
&amp;nbsp; SOPT = initSOPT; 
&amp;nbsp; ICGC2 = initICGC2;
&amp;nbsp; ICGC1 = initICGC1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //32kHz -&amp;gt; 18.874368MHz bus rate
&amp;nbsp; while(!ICGS1_LOCK);&amp;nbsp;&amp;nbsp;&amp;nbsp; //loop until FLL locks
&amp;nbsp; ICGC2_LOCRE = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //enable reset if ref clock fails
&amp;nbsp;&amp;nbsp; InitSCI1();&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;&amp;nbsp;&amp;nbsp; //Function to initialize the SCI port
&amp;nbsp;&amp;nbsp; InitATD();&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Function to initialize the ATD port&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp; EnableInterrupts; /* enable interrupts */

&amp;nbsp; /* include your code here */
&amp;nbsp; for(;;) {

&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __RESET_WATCHDOG(); /* feeds the dog */
&amp;nbsp;&amp;nbsp;&amp;nbsp; //Transmit ("Hello PC\n\r");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!ATD1SC_CCF);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result=ATD1RH;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bin2Frac(result);&amp;nbsp;&amp;nbsp; //Transform the ATD1RL(read channel and convert to format #.##)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Transmit(&amp;amp;buffer[0]); //Send to SCI port the measurement of CH1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ATD1SC = ATD1SC; //Re-start the conversion
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay();
&amp;nbsp; } /* loop forever */
&amp;nbsp; /* please make sure that you never leave this function */
}


//************************************************??*************************************************?*?****************************************
//This function allow to transmit data via RS232

void Transmit (unsigned char *sMessage)
{
 unsigned char k=0;
 while(sMessage[k] != 0){
&amp;nbsp; SCI2D&amp;nbsp; = sMessage[k];
&amp;nbsp; k++;

&amp;nbsp; while(!SCI2S1_TDRE);&amp;nbsp;&amp;nbsp; /* Polling for transmitter to be empty */

 }/* END while(sMessage) */
}
&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;thanks for your time and I hope you can help me&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 09:26:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-MCU/CFF-flag-is-not-change/m-p/177779#M5821</guid>
      <dc:creator>Cn</dc:creator>
      <dc:date>2020-10-29T09:26:55Z</dc:date>
    </item>
    <item>
      <title>Re: CFF flag is not change</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-MCU/CFF-flag-is-not-change/m-p/177780#M5822</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;ATD1SC=0x41; //Select ATDCO=1 and CH1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This code doesn't do what the commet says, but instead it enables interrupts, which you don't handle in your code, and it sets channel to AD0. This is why you shouldn't setup register with hex values, but with pre-defined bit masks.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void delay(void){&lt;BR /&gt;&amp;nbsp; uint I,j,k;&lt;BR /&gt;&amp;nbsp; for(I=0;I&amp;lt;1000;I++)&lt;BR /&gt;&amp;nbsp; for(j=0;j&amp;lt;500;j++)&lt;BR /&gt;&amp;nbsp; k++;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;This function does nothing and the compiler will most likely optimize it away entirely. I would strongly suggest using hardware timers instead. If you insist on keeping this burn-away loop, you must make all loop iterators volatile or there are no guarantees it will work.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Jan 2011 15:52:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-MCU/CFF-flag-is-not-change/m-p/177780#M5822</guid>
      <dc:creator>Lundin</dc:creator>
      <dc:date>2011-01-21T15:52:38Z</dc:date>
    </item>
  </channel>
</rss>

