<?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>ColdFire/68K Microcontrollers and ProcessorsのトピックMCF52233 ADC INTERRUPT????????????</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-ADC-INTERRUPT/m-p/144138#M2839</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I'm not able to have ANY kind of ADC interrupt on coldfire MCF52233 processor.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Here is the init code for ADC's:&lt;/DIV&gt;&lt;DIV&gt;&lt;HR /&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;void ColdfireADCInit( WORD clockDivisor, BYTE interruptEnable )&lt;BR /&gt;{&lt;BR /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;//GPIO config.&lt;BR /&gt;MCF_GPIO_PANPAR&amp;nbsp; = 0xFF;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //COMO ADC&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;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;MCF_ADC_POWER = 0x00D4;&lt;BR /&gt;MCF_ADC_CTRL2 = ( clockDivisor &amp;amp; 0x001F );&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;&lt;BR /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;&amp;nbsp;if( interruptEnable )&lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;MCF_ADC_CTRL1 = 0x2802;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;else&lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;MCF_ADC_CTRL1 = 0x2002;&lt;BR /&gt;&amp;nbsp;}&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;&amp;nbsp;MCF_ADC_ADSTAT = 0x1800;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;HR /&gt;&lt;/DIV&gt;&lt;P&gt;The other interrupt config are ok since i have tested it by forcing these interrupts BY INTFRCHn registers.&lt;/P&gt;&lt;P&gt;Does any of you achieved to have ADC interrupts??? Because most of the examples i found are based on pooling....&lt;/P&gt;&lt;P&gt;Thank's in advance;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 31 Aug 2007 17:18:19 GMT</pubDate>
    <dc:creator>osanz</dc:creator>
    <dc:date>2007-08-31T17:18:19Z</dc:date>
    <item>
      <title>MCF52233 ADC INTERRUPT????????????</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-ADC-INTERRUPT/m-p/144138#M2839</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I'm not able to have ANY kind of ADC interrupt on coldfire MCF52233 processor.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Here is the init code for ADC's:&lt;/DIV&gt;&lt;DIV&gt;&lt;HR /&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;void ColdfireADCInit( WORD clockDivisor, BYTE interruptEnable )&lt;BR /&gt;{&lt;BR /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;//GPIO config.&lt;BR /&gt;MCF_GPIO_PANPAR&amp;nbsp; = 0xFF;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //COMO ADC&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;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;MCF_ADC_POWER = 0x00D4;&lt;BR /&gt;MCF_ADC_CTRL2 = ( clockDivisor &amp;amp; 0x001F );&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;&lt;BR /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;&amp;nbsp;if( interruptEnable )&lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;MCF_ADC_CTRL1 = 0x2802;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;else&lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;MCF_ADC_CTRL1 = 0x2002;&lt;BR /&gt;&amp;nbsp;}&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;&amp;nbsp;MCF_ADC_ADSTAT = 0x1800;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;HR /&gt;&lt;/DIV&gt;&lt;P&gt;The other interrupt config are ok since i have tested it by forcing these interrupts BY INTFRCHn registers.&lt;/P&gt;&lt;P&gt;Does any of you achieved to have ADC interrupts??? Because most of the examples i found are based on pooling....&lt;/P&gt;&lt;P&gt;Thank's in advance;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 31 Aug 2007 17:18:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-ADC-INTERRUPT/m-p/144138#M2839</guid>
      <dc:creator>osanz</dc:creator>
      <dc:date>2007-08-31T17:18:19Z</dc:date>
    </item>
    <item>
      <title>Re: MCF52233 ADC INTERRUPT????????????</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-ADC-INTERRUPT/m-p/144139#M2840</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;I have been using ATD interrupt with MCF52223 mcu. I used CFInt software available from Freescale website to create the initialization code. I have found this to be a very helpful application.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I am using 80Mhz external clock in this example. You will need to change divisor values to work with your clock.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;First off, initialize ATD&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;    /* Pin assignments for port AN            Pin AN7 : Battery voltage            Pin AN6 : Oil Psi            Pin AN5 : Analog Input2            Pin AN4 : Analog Input1            Pin AN3 : Water Temp            Pin AN2 : GPIO output, initially logic '0'            Pin AN1 : GPIO output, initially logic '0'            Pin AN0 : GPIO output, initially logic '0'     */    MCF_GPIO_PORTAN = 0;    MCF_GPIO_DDRAN = MCF_GPIO_DDRAN_DDRAN2 |                     MCF_GPIO_DDRAN_DDRAN1 |                     MCF_GPIO_DDRAN_DDRAN0;    MCF_GPIO_PANPAR = MCF_GPIO_PANPAR_PANPAR7 |                      MCF_GPIO_PANPAR_PANPAR6 |                      MCF_GPIO_PANPAR_PANPAR5 |                      MCF_GPIO_PANPAR_PANPAR4 |                      MCF_GPIO_PANPAR_PANPAR3;/********************************************************************** init_adc - Analog-to-Digital Converter (ADC)                       ***********************************************************************/static void init_adc (void){   /* Scan mode = Triggered sequential        ADC clock frequency = 2.00 MHz        Voltage reference supplied by VREFH and VREFL                 The following interrupt source are enabled:            End-of-Scan A                 Sample list:            Sample 0 : AN3                       Low limit = $000, High limit = $FFF, Offset = $000            Sample 1 : AN4                       Low limit = $000, High limit = $FFF, Offset = $000            Sample 2 : AN5                       Low limit = $000, High limit = $FFF, Offset = $000            Sample 3 : AN6                       Low limit = $000, High limit = $FFF, Offset = $000            Sample 4 : AN7                       Low limit = $000, High limit = $FFF, Offset = $000            Sample 5 : Disabled            Sample 6 : Disabled            Sample 7 : Disabled     */    /* Initialise LOLIM, HILIM and OFFST registers of enabled channels: */    MCF_ADC_ADLLMT0 = 0;    MCF_ADC_ADHLMT0 = MCF_ADC_ADHLMT_HLMT(0xfff);    MCF_ADC_ADOFS0 = 0;    MCF_ADC_ADLLMT1 = 0;    MCF_ADC_ADHLMT1 = MCF_ADC_ADHLMT_HLMT(0xfff);    MCF_ADC_ADOFS1 = 0;    MCF_ADC_ADLLMT2 = 0;    MCF_ADC_ADHLMT2 = MCF_ADC_ADHLMT_HLMT(0xfff);    MCF_ADC_ADOFS2 = 0;    MCF_ADC_ADLLMT3 = 0;    MCF_ADC_ADHLMT3 = MCF_ADC_ADHLMT_HLMT(0xfff);    MCF_ADC_ADOFS3 = 0;    MCF_ADC_ADLLMT4 = 0;    MCF_ADC_ADHLMT4 = MCF_ADC_ADHLMT_HLMT(0xfff);    MCF_ADC_ADOFS4 = 0;    /* Initialise ADC */    MCF_ADC_ADZCC = 0;    MCF_ADC_ADLST1 = MCF_ADC_ADLST1_SAMPLE3(0x6) |                     MCF_ADC_ADLST1_SAMPLE2(0x5) |                     MCF_ADC_ADLST1_SAMPLE1(0x4) |                     MCF_ADC_ADLST1_SAMPLE0(0x3);    MCF_ADC_ADLST2 = MCF_ADC_ADLST2_SAMPLE7(0x7) |                     MCF_ADC_ADLST2_SAMPLE6(0x6) |                     MCF_ADC_ADLST2_SAMPLE5(0x5) |                     MCF_ADC_ADLST2_SAMPLE4(0x7);        MCF_ADC_ADSDIS = MCF_ADC_ADSDIS_DS7 |                     MCF_ADC_ADSDIS_DS6 |                     MCF_ADC_ADSDIS_DS5;        MCF_ADC_CAL = 0x0;        MCF_ADC_CTRL1 = MCF_ADC_CTRL1_STOP0   |        MCF_ADC_CTRL1_SYNC0      |                    MCF_ADC_CTRL1_EOSIE0     |                    MCF_ADC_CTRL1_SMODE(0x4);                        MCF_ADC_CTRL2 = MCF_ADC_CTRL2_DIV(0x9);    /* Power up ADC converter(s) in use */ MCF_ADC_POWER = MCF_ADC_POWER_PUDELAY(0xd) |                    MCF_ADC_POWER_PD2;    /* Wait for converter A power up to complete */    while (MCF_ADC_POWER &amp;amp; MCF_ADC_POWER_PSTS0)     ;       /* Wait for converter B power up to complete */    while (MCF_ADC_POWER &amp;amp; MCF_ADC_POWER_PSTS1)     ;}&lt;/PRE&gt;&lt;/DIV&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;Start conversion sequence, every .05 second for my application&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt; /* Enter task loop */     while (TRUE) {      if(!AnalogActiveFlag &amp;amp;&amp;amp; !TimeoutFlag)     {   MCF_ADC_CTRL1 = MCF_ADC_CTRL1_SYNC0      |                      MCF_ADC_CTRL1_EOSIE0     |                      MCF_ADC_CTRL1_SMODE(0x4);            /* Start ATD conversion */      MCF_ADC_CTRL1 |= MCF_ADC_CTRL1_START0;    /* Set analog active flag */   AnalogActiveFlag = TRUE;     }             /* Wait for another .05 second */  OSTimeDly(5); }&lt;/PRE&gt;&lt;/DIV&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;Finally the ATD conversion complete interrupt. This code will take ANALOG_SAMPLE_COUNT number of samples and calc the average. For my application 20 samples. Also the 12-bit result is shifted to make a 10-bit result. I use 1024 entry lookup tables. Note the result registers are 16-bit with the 12-bit result left justified in the result register with sign bit. This is why it is shifted 5 bits to get 10-bit result. See referance manual for more details on this.&lt;/DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;/* ATD conversion complete interrupt */void AtdInterrupt(void) { /* Clear interrupt flag */ MCF_ADC_ADSTAT = MCF_ADC_ADSTAT_EOSI0; /* Get current conversion results */ WaterTempResult += MCF_ADC_ADRSLT0 &amp;gt;&amp;gt; 5; AnalogInput2Result += MCF_ADC_ADRSLT1 &amp;gt;&amp;gt; 5; AnalogInput1Result += MCF_ADC_ADRSLT2 &amp;gt;&amp;gt; 5; OilPsiResult += MCF_ADC_ADRSLT3 &amp;gt;&amp;gt; 5; BatteryVoltageResult += MCF_ADC_ADRSLT4 &amp;gt;&amp;gt; 5;  /* Increment sample count */ AnalogInCount++;  /* Sample array full— */ if(AnalogInCount &amp;gt;= ANALOG_SAMPLE_COUNT) {  /* Reset AnalogInCount */   AnalogInCount = 0;  /* Get conversion results */  WaterTempBinary = WaterTempResult / ANALOG_SAMPLE_COUNT;  AnalogInput2Binary = AnalogInput2Result / ANALOG_SAMPLE_COUNT;  AnalogInput1Binary = AnalogInput1Result / ANALOG_SAMPLE_COUNT;  OilPsiBinary = OilPsiResult / ANALOG_SAMPLE_COUNT;  BatteryVoltageBinary = BatteryVoltageResult / ANALOG_SAMPLE_COUNT;  /* Clear analog in results */  WaterTempResult = 0;  AnalogInput2Result = 0;  AnalogInput1Result = 0;  OilPsiResult = 0;  BatteryVoltageResult = 0; } /* Clear analog active flag */ AnalogActiveFlag = FALSE;}&lt;/PRE&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thsi may not be the best way to use the interrupt driven ATD, however, it works well for me.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Hope this helps...&lt;BR /&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 08:45:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-ADC-INTERRUPT/m-p/144139#M2840</guid>
      <dc:creator>Technoman64</dc:creator>
      <dc:date>2020-10-29T08:45:08Z</dc:date>
    </item>
    <item>
      <title>Re: MCF52233 ADC INTERRUPT????????????</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-ADC-INTERRUPT/m-p/144140#M2841</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Technoman64;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks a lot for your help.&lt;/DIV&gt;&lt;DIV&gt;I'm still working on it, but your example has been very usefull.&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 03 Sep 2007 19:58:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-ADC-INTERRUPT/m-p/144140#M2841</guid>
      <dc:creator>osanz</dc:creator>
      <dc:date>2007-09-03T19:58:07Z</dc:date>
    </item>
  </channel>
</rss>

