ADC Demo / Example for MCF5282

cancel
Showing results for 
Search instead for 
Did you mean: 

ADC Demo / Example for MCF5282

2,217 Views
krishnan
Contributor I
hi

I'm looking for someone sample C Source codes for ADC for MCF5282.

Will appreciate if anyone can share any sample codes that can help me get started. Have been looking around for a while, without a great deal of success..

Cheers

krish
Labels (1)
0 Kudos
4 Replies

179 Views
IsmaelSanchez_R
Contributor I
Hello , this is professor Ismael Sanchez from the University of Puerto Rico at Bayamon . If
what you say is a program in C releted to the analog to digital converter, i have this sample
program that we wrote for codewarrior for coldfire. We used the m5282lite board. There is some
spanish in the code:
 
Here is the source code:
 
#include <stdio.h>
#include "mcf5282.h"
int andea, i,QADC_Channel;
float resan0,resan1,resan2,resan3,resan4,resan5,resan6,resan7; //inicializa la variable resanN// 

int main()//Comienza la rutina principal//
 {//Rutina principal//
 
   MCF5282_WTM_WCR = 0x000E;  //Watchdog timer disabled writing to Watchdog Control Register
   
 MCF5282_GPIO_PTCPAR = 0x00;//Investigar esto
 MCF5282_GPIO_DDRTC = 0xFF;//La direccion del puerto PortTC es `de salida
 MCF5282_GPIO_PORTTC = 0xFF;// Se activan todos los bits del puerto PortTC
 MCF5282_QADC_QADCMCR = 0x0000;//Se inicializa el Module Configuration Register
 MCF5282_QADC_DDRQA = 0x0000;//Se inicializa DDRQA como entrada para abrir canales análogos(AN[56:55,53:52])
 MCF5282_QADC_DDRQB = 0x0000;//Se inicializa DDRQB como entrada para abrir canales análogos(AN[3:0])
 MCF5282_QADC_QACR0 = 0x003F;//Mux=0(internal multiplexing),TRG=0,Prescaler Clock divider=128
 MCF5282_QADC_QACR1 = 0x2100;//Dis queue1 interrupt,Dis pause interrup,SSE,software single scan
 MCF5282_QADC_QACR2 = 0x0000;// 0x1100;//CIE2 disabled, PIE2 disabled,SSE2 disabled, Disable Queue2, 0x113F;
 MCF5282_QADC_CCW(0) = 0x0000;//Código para cada palabra de comando de conversión
 MCF5282_QADC_CCW(1) = 0x0001;
 MCF5282_QADC_CCW(2) = 0x0002;
 MCF5282_QADC_CCW(3) = 0x0003;
 MCF5282_QADC_CCW(4) = 0x0034;
 MCF5282_QADC_CCW(5) = 0x0035;
 MCF5282_QADC_CCW(6) = 0x0037;
 MCF5282_QADC_CCW(7) = 0x0038;
 MCF5282_QADC_CCW(8) = 0x003F;
 printf("Prueba para el analogo a digital con ocho canales\n");
 printf("Hola Presiona una tecla para continuar\n");
 
 
while(1)//Lazo continuo//
 {//comienza lazo continuo
 
   
  
 
 QADC_CONVERTER();      //LLama la rutina de Conversión de análogo a digital//
 
 for (i=0;i<100000;i++);  //Retrazo
 
  printf(" Can 0 = %1.3f  \n", resan0);//Imprime valor canal 0//
  printf(" Can 1 = %1.3f  \n", resan1);//Imprime valor canal 1//
    printf(" Can 2 = %1.3f  \n", resan2);//Imprime valor canal 2//
  printf(" Can 3 = %1.3f  \n", resan3);//Imprime valor canal 3//
  printf(" Can 4 = %1.3f  \n", resan4);//Imprime valor canal 4//
  printf(" Can 5 = %1.3f  \n", resan5);//Imprime valor canal 5//
  printf(" Can 6 = %1.3f  \n", resan6);//Imprime valor canal 6//
  printf(" Can 7 = %1.3f  \n", resan7);//Imprime valor canal 7//
     
 }//Termina lazo continuo// 
 return 0;
 }//Termina rutina principal
//--------------------------------------------------------------------
int QADC_CONVERTER()//Rutina de conversión//
{
printf("Comienza Rutina de Conversion\n");
 
 MCF5282_QADC_QACR1 == 0x2100;//Inicializamos QACR1//
Channel_Detect: 
 atras:
 for (i=0;i<100000;i++);
 printf("Esta entrando al lazo del queue\n");
 printf("El valor de MCF5282_QADC_QASR0 es %X \n",MCF5282_QADC_QASR0);
// printf("El valor de CF1 es %X \n",MCF5282_QADC_QASR0_CF1 );
 andea=MCF5282_QADC_QASR0 & 0x8000;
 printf("andea %x\n",andea);
 if (andea = 0x8000 )
  {
  //MCF5282_QADC_QACR1 = 0x8000;
  resan0 = (3.3/1023)*MCF5282_QADC_RJURR(0);
  resan1 = (3.3/1023)*MCF5282_QADC_RJURR(1);
  resan2 = (3.3/1023)*MCF5282_QADC_RJURR(2);
  resan3 = (3.3/1023)*MCF5282_QADC_RJURR(3);
    resan4 = (3.3/1023)*MCF5282_QADC_RJURR(4);
  resan5 = (3.3/1023)*MCF5282_QADC_RJURR(5);
  resan6 = (3.3/1023)*MCF5282_QADC_RJURR(6);
  resan7 = (3.3/1023)*MCF5282_QADC_RJURR(7);
 printf("Computa\n");
 // QADC_Result0 = (3.3/1023)*QADC_Result0;
 // QADC_Result1 = (3.3/1023)*QADC_Result1;
 
  }
 else
 {
  printf("Hizo el ELSE, no ha terminado la conversión\n");
  goto atras;
  
 }

  {
//  printf("queue %X \n",MCF5282_QADC_RJURR(x));
 //Channel_Detect
  }
// printf("QACR1 = %X \n",MCF5282_QADC_QACR1); 
 
 printf("Sale de la rutina********************\n");
 return 0;
 }
  
//---------------------------------------------------------------------*/
 
 
 
 
ANOTHER VERSION IS with an application to measure some physical variables:
 
 
 
//float QADC_Result, resan0;
int anadig();
 
#include "src/common/m5282evb.h"
int andea, j, QADC_Channel;
extern float x;
float T,TC,H,R;
float resan0,resan1,resan2,resan3,resan4;
float resan5,resan6,resan7; //inicializa la variable resanN//
  
int anadig()
{
 
 
 MCF5282_QADC_QADCMCR = 0x0000; //Se inicializa el Module Configuration Register
   MCF5282_QADC_DDRQA = 0x0000;    //Se inicializa DDRQA como entrada para abrir canales análogos(AN[56:55,53:52])
 MCF5282_QADC_DDRQB = 0x0000;    //Se inicializa DDRQB como entrada para abrir canales análogos(AN[3:0])
 MCF5282_QADC_QACR0 = 0x003F; //Mux=0(internal multiplexing),TRG=0,Prescaler Clock divider=128
 MCF5282_QADC_QACR1 = 0x3100; //2100 Dis queue1 interrupt,Dis pause interrup,SSE,software continuous scan
 MCF5282_QADC_QACR2 = 0x1100; //CIE2 disabled, PIE2 disabled,SSE2 disabled, Queue2 in software continuous scan,posible 0x113F;
 
 
 MCF5282_QADC_CCW(0) = 0x0000; //Códigos para cada palabra de comando de conversión
 MCF5282_QADC_CCW(1) = 0x0001;
 MCF5282_QADC_CCW(2) = 0x0002;
 MCF5282_QADC_CCW(3) = 0x0003;
 MCF5282_QADC_CCW(4) = 0x0034;
 MCF5282_QADC_CCW(5) = 0x0035;
 MCF5282_QADC_CCW(6) = 0x0037;
 MCF5282_QADC_CCW(7) = 0x0038;
 MCF5282_QADC_CCW(8) = 0x003F;
 //printf("Todas las inicializaciones hasta aqui listas\n");
 QADC_CONVERTER();
for (j=0; j<100; j++);  //Retraso
          
        T= 99.96*resan5*1.8 + 32;
           TC= resan5*100;
   H= 100*resan2;
   R= resan1;
 x=T;// Canal 5 (resan5) para Temperatura
 //Convertir_Ascii();
}

//*********************************************************************************************
//*********************  SUB-RUTINA DE CONVERSION ANALOGO/DIGITAL ***********************
int QADC_CONVERTER() // Sub-Rutina de conversión análogo/digital
{
 printf("  \n"); 
 printf("*********** COMIENZA SUB-RUTINA DE CONVERSION ****************** \n");
 printf("  \n");
 
 MCF5282_QADC_QACR1 == 0x2100;//Inicializamos QACR1//
 Channel_Detect: 
 atras:
 for (j=0; j<100; j++);
  
  printf("ESTA ENTRANDO AL LAZO DEL QUEUE \n");
  printf("EL VALOR DE MCF5282_QADC_QASR0 ES %X \n",MCF5282_QADC_QASR0);
  // printf("El valor de CF1 es %X \n",MCF5282_QADC_QASR0_CF1 );
  andea=MCF5282_QADC_QASR0 & 0x8000;
  printf("ANDEA %x \n",andea);
  printf("  \n");
 if (andea = 0x8000 )
  {
   //MCF5282_QADC_QACR1 = 0x8000;
   resan0 = (3.3/1023)*MCF5282_QADC_RJURR(0);
   resan1 = (3.3/1023)*MCF5282_QADC_RJURR(1);
   resan2 = (3.3/1023)*MCF5282_QADC_RJURR(2);
   resan3 = (3.3/1023)*MCF5282_QADC_RJURR(3);
     resan4 = (3.3/1023)*MCF5282_QADC_RJURR(4);
   resan5 = (3.3/1023)*MCF5282_QADC_RJURR(5);
   resan6 = (3.3/1023)*MCF5282_QADC_RJURR(6);
   resan7 = (3.3/1023)*MCF5282_QADC_RJURR(7);
 printf("%4.1f\n",resan0);
   printf("%4.1f\n",resan1);
   printf("%4.1f\n",resan2);
   printf("%4.1f\n",resan3);
   printf("%4.1f\n",resan4);
   printf("%4.1f\n",resan5);
   printf("%4.1f\n",resan6);
   printf("%4.1f\n",resan7);
 
   printf("Computa\n");
   printf("  \n");
   // QADC_Result0 = (3.3/1023)*QADC_Result0;
   // QADC_Result1 = (3.3/1023)*QADC_Result1;
  }
 else
  {
  printf("HIZO EL ELSE PERO NO HA TERMINADO LA CONVERSION \n");
 // goto atras;
  }
  {
   // printf("queue %X \n",MCF5282_QADC_RJURR(x));
    // Channel_Detect
  }
  // printf("QACR1 = %X \n",MCF5282_QADC_QACR1); 
 
  printf("*********** SALE DE LA SUB-RUTINA ******************** \n");
  printf("  \n");
  return 0;
}// Termina Sub-Rutina de conversión análogo/digital
//***************************************************************************************************
//***************************************************************************************************
 
send me your email and i will send you all the files of this project
 
0 Kudos

179 Views
dhar
Contributor I

i am using the same board as what you had shared for the ADC Demo...

and same environment for the coding, codewarrior for the coldfire...

0 Kudos

179 Views
dhar
Contributor I

hello there professor...

 

i have this problem on how to get an output like if connected to LED it will light up using certain ports in the MCF5282 board..

 

if you don't mind, i'm looking for some help for a sample code to get me started...

 

hopefully you can share some ideas in me...

thanks a lot!

0 Kudos

179 Views
krishnan
Contributor I
Dear Mr. Ismael Sanchez-Rios

Thanks for the Inputs.... Gives me a start atleast.

cheers

Krish
0 Kudos