Anda di halaman 1dari 1

C:\Users\user\Desktop\backup usb 081215\MT418\configs\adc_config.c sbado, 12 de diciembre de 2015 10:38 a.m.

#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
/* Cdigo */

void main(void)
{
/* Cdigo */

// Reloj de perifricos
SysCtrlRegs.HISPCP.all = 0x4; // Si HSPCLK!=0 {HSPCLK = SYSCLKOUT/(2*valor)}, Si HSPCLK=0
{HSPCLK = SYSCLKOUT}
// Inicializacin (Rutina ADC_cal, ADC bandgap, reference power down, y power down)
InitADC();
// Configuraciones de reloj (perodo de muestreo)
AdcRegs.ADCTRL3.bit.ADCCLKPS = 0x3; // Fclk = HSPCLK/[2*(1+3)]
AdcRegs.ADCTRL1.bit.CPS = 1; // ADCLK = Fclk/(1+1);
// Tiempo (ventana) de muestreo
AdcRegs.ADCTRL1.bit.ACQ_PS = 0x7; // Ts = (1+7)*(1/ADCLK)
// Configuraciones de funcionamiento
AdcRegs.ADCTRL3.bit.SMODE_SEL = 0; // 0->Secuencial, 1->Simultneo
AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // 0->Secuencia dual, 1->Cascada
AdcRegs.ADCTRL1.bit.CONT_RUN = 0; // 0->Start/Stop, 1->Continuo
AdcRegs.ADCTRL1.bit.SEQ_OVRD = 0; // 0->Wrap around, 1->Sin wrap around
// Secuencia de conversin
AdcRegs.ADCCHSELSEQ1.all = 0x5429;
AdcRegs.ADCCHSELSEQ2.CONV04 = 0x3;
AdcRegs.ADCCHSELSEQ2.CONV05 = 0xA;
AdcRegs.ADCCHSELSEQ2.CONV06 = 0xB;
AdcRegs.ADCCHSELSEQ2.CONV07 = 0xC;
// Nmero de conversiones (MAX_CONV1 + 1)
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0x7; // MAX_CONV1, MAX_CONV2->SEQ1, SEQ2
MAX_CONV1->Cascada

/* Cdigo */

do
{
/* Cdigo */

// Comienzo de secuencia de conversin


AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;
// Mientras el DSC est ocupado realizando las conversiones
while(AdcRegs.ADCST.bit.SEQ1_BSY){};

resultado[0] = AdcRegs.ADCRESULT0>>4;
resultado[1] = AdcRegs.ADCRESULT1>>4;
/* ... */

// Escalamiento a temperatura real


temp = ((resultado[0]+resultado[1])/2/4095.0*3.0)/2.5*100.0;

/* Cdigo */
}
while(1);
}

-1-

Anda mungkin juga menyukai