ads8364_main.c

来自「PWM(可以查500筆的SPWM)由TI官網PWM範例改」· C语言 代码 · 共 171 行

C
171
字号
/************************************************************/
/* FILENAME: ADS8364_MAIN.c                            		*/
/* DESCRIPTION: This program uses the parallel interface to */
/*	read 512 samples continuously from the ADS8364 16-bit   */
/* 500KSPS Analog-to-Digital Converter.  The samples are    */
/* stored in buffers.                                		*/             
/* AUTHOR	: DAP Application Group, T. Hendrick, Dallas    */
/*    CREATED 2002(C) BY TEXAS INSTRUMENTS INCORPORATED.  	*/
/* VERSION: 1.0 							                */
/************************************************************/
#include "DSP28_Device.h"
#include "DSP28_Globalprototypes.h"
#include "ADS8364_2812.h"

#define DEBUG 0

// Prototype statements for functions found within this file.
interrupt void eva_timer1_isr(void);
void init_eva_timer1(void);
//Global counts used in this example;
unsigned int Count;
int x;//,y,z;
int Table[501]={0x0, 0x3, 0x6, 0xA, 0xD, 0x10, 0x13, 0x16, 0x1A, 0x1D, 
0x20, 0x23, 0x26, 0x2A, 0x2D, 0x30, 0x33, 0x36, 0x39, 0x3C, 
0x40, 0x43, 0x46, 0x49, 0x4C, 0x4F, 0x52, 0x55, 0x58, 0x5B, 
0x5E, 0x61, 0x64, 0x67, 0x6A, 0x6D, 0x70, 0x73, 0x75, 0x78, 
0x7B, 0x7E, 0x81, 0x83, 0x86, 0x89, 0x8C, 0x8E, 0x91, 0x94, 
0x96, 0x99, 0x9B, 0x9E, 0xA0, 0xA3, 0xA5, 0xA8, 0xAA, 0xAD, 
0xAF, 0xB1, 0xB4, 0xB6, 0xB8, 0xBA, 0xBD, 0xBF, 0xC1, 0xC3, 
0xC5, 0xC7, 0xC9, 0xCB, 0xCD, 0xCF, 0xD1, 0xD3, 0xD4, 0xD6, 
0xD8, 0xDA, 0xDB, 0xDD, 0xDF, 0xE0, 0xE2, 0xE3, 0xE5, 0xE6, 
0xE7, 0xE9, 0xEA, 0xEB, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 
0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xF9, 0xFA, 0xFB, 
0xFB, 0xFC, 0xFC, 0xFD, 0xFD, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 
0xFF, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 
0x100, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFD, 0xFD, 0xFC, 
0xFC, 0xFB, 0xFA, 0xFA, 0xF9, 0xF8, 0xF7, 0xF7, 0xF6, 0xF5, 
0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xEE, 0xED, 0xEC, 0xEB, 0xE9, 
0xE8, 0xE7, 0xE5, 0xE4, 0xE2, 0xE1, 0xDF, 0xDE, 0xDC, 0xDA, 
0xD9, 0xD7, 0xD5, 0xD3, 0xD2, 0xD0, 0xCE, 0xCC, 0xCA, 0xC8, 
0xC6, 0xC4, 0xC2, 0xC0, 0xBE, 0xBB, 0xB9, 0xB7, 0xB5, 0xB2, 
0xB0, 0xAE, 0xAB, 0xA9, 0xA7, 0xA4, 0xA2, 0x9F, 0x9D, 0x9A, 
0x98, 0x95, 0x92, 0x90, 0x8D, 0x8A, 0x88, 0x85, 0x82, 0x7F, 
0x7D, 0x7A, 0x77, 0x74, 0x71, 0x6E, 0x6B, 0x68, 0x65, 0x63, 
0x60, 0x5D, 0x5A, 0x57, 0x54, 0x50, 0x4D, 0x4A, 0x47, 0x44, 
0x41, 0x3E, 0x3B, 0x38, 0x35, 0x31, 0x2E, 0x2B, 0x28, 0x25, 
0x22, 0x1E, 0x1B, 0x18, 0x15, 0x12, 0xE, 0xB, 0x8, 0x5, 
0x2, 0xFFFE, 0xFFFB, 0xFFF8, 0xFFF5, 0xFFF2, 0xFFEE, 0xFFEB, 0xFFE8, 0xFFE5, 
0xFFE2, 0xFFDE, 0xFFDB, 0xFFD8, 0xFFD5, 0xFFD2, 0xFFCF, 0xFFCB, 0xFFC8, 0xFFC5, 
0xFFC2, 0xFFBF, 0xFFBC, 0xFFB9, 0xFFB6, 0xFFB3, 0xFFB0, 0xFFAC, 0xFFA9, 0xFFA6, 
0xFFA3, 0xFFA0, 0xFF9D, 0xFF9B, 0xFF98, 0xFF95, 0xFF92, 0xFF8F, 0xFF8C, 0xFF89, 
0xFF86, 0xFF83, 0xFF81, 0xFF7E, 0xFF7B, 0xFF78, 0xFF76, 0xFF73, 0xFF70, 0xFF6E, 
0xFF6B, 0xFF68, 0xFF66, 0xFF63, 0xFF61, 0xFF5E, 0xFF5C, 0xFF59, 0xFF57, 0xFF55, 
0xFF52, 0xFF50, 0xFF4E, 0xFF4B, 0xFF49, 0xFF47, 0xFF45, 0xFF42, 0xFF40, 0xFF3E, 
0xFF3C, 0xFF3A, 0xFF38, 0xFF36, 0xFF34, 0xFF32, 0xFF30, 0xFF2E, 0xFF2D, 0xFF2B, 
0xFF29, 0xFF27, 0xFF26, 0xFF24, 0xFF22, 0xFF21, 0xFF1F, 0xFF1E, 0xFF1C, 0xFF1B, 
0xFF19, 0xFF18, 0xFF17, 0xFF15, 0xFF14, 0xFF13, 0xFF12, 0xFF10, 0xFF0F, 0xFF0E, 
0xFF0D, 0xFF0C, 0xFF0B, 0xFF0A, 0xFF09, 0xFF09, 0xFF08, 0xFF07, 0xFF06, 0xFF06, 
0xFF05, 0xFF04, 0xFF04, 0xFF03, 0xFF03, 0xFF02, 0xFF02, 0xFF02, 0xFF01, 0xFF01, 
0xFF01, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 
0xFF00, 0xFF01, 0xFF01, 0xFF01, 0xFF01, 0xFF02, 0xFF02, 0xFF03, 0xFF03, 0xFF04, 
0xFF04, 0xFF05, 0xFF05, 0xFF06, 0xFF07, 0xFF07, 0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 
0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F, 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF15, 0xFF16, 
0xFF17, 0xFF19, 0xFF1A, 0xFF1B, 0xFF1D, 0xFF1E, 0xFF20, 0xFF21, 0xFF23, 0xFF25, 
0xFF26, 0xFF28, 0xFF2A, 0xFF2C, 0xFF2D, 0xFF2F, 0xFF31, 0xFF33, 0xFF35, 0xFF37, 
0xFF39, 0xFF3B, 0xFF3D, 0xFF3F, 0xFF41, 0xFF43, 0xFF46, 0xFF48, 0xFF4A, 0xFF4C, 
0xFF4F, 0xFF51, 0xFF53, 0xFF56, 0xFF58, 0xFF5B, 0xFF5D, 0xFF60, 0xFF62, 0xFF65, 
0xFF67, 0xFF6A, 0xFF6C, 0xFF6F, 0xFF72, 0xFF74, 0xFF77, 0xFF7A, 0xFF7D, 0xFF7F, 
0xFF82, 0xFF85, 0xFF88, 0xFF8B, 0xFF8D, 0xFF90, 0xFF93, 0xFF96, 0xFF99, 0xFF9C, 
0xFF9F, 0xFFA2, 0xFFA5, 0xFFA8, 0xFFAB, 0xFFAE, 0xFFB1, 0xFFB4, 0xFFB7, 0xFFBA, 
0xFFBD, 0xFFC0, 0xFFC4, 0xFFC7, 0xFFCA, 0xFFCD, 0xFFD0, 0xFFD3, 0xFFD6, 0xFFDA, 
0xFFDD, 0xFFE0, 0xFFE3, 0xFFE6, 0xFFEA, 0xFFED, 0xFFF0, 0xFFF3, 0xFFF6, 0xFFFA, 
0xFFFD };
void main(void)
{
    
    //Step1. Initialize System Control:
    InitSysCtrl();
    //Step2. Initalize GPIO:
    InitGpio();  
    //Step3. Clear all interrupts and initialize PIE vector table:
    DINT;
    InitPieCtrl();
    IER = 0x0000;//IFR |= 0x0000;
    IFR = 0x0000;//IER |= 0x0002;
    InitPieVectTable();
    EALLOW;
    PieVectTable.T1UFINT = &eva_timer1_isr;
    EDIS;
    //Step4. Initialize all the Device Peripherals:   
	init_eva_timer1();
	//InitPeripherals();
    //Step5. User specific code, enable interrupts:
    Count = 0;//Initialize count values to 0
    // Enable PIE group 2 interrupt 6 for T1UFINT
    PieCtrlRegs.PIEIER2.all = M_INT6; 
    // Enable CPU INT2 for T1UFINT
    IER |= (M_INT2);    
	EINT;
	
	for(;;);// Forever Loop

}     


// Read Function called from ISR in ADS8364_DefaultISR.c
/*******************************************************************************
 FUNC	: read_ADD
 DESC	: Prepare the system for the ADC conversions. Everything is set up to
 		  wait the CONV CLK start running (TIMER0)
 ARGS	: void
 RET	: void
 *******************************************************************************/

void init_eva_timer1(void)
{
	EALLOW;// Enable PWM pins
    GpioMuxRegs.GPAMUX.all = 0x003F; // EVA PWM 1-6  pins
    EDIS;
// EVA Configure T1PWM, PWM1-PWM6 
// Step 1  Initalize the timers
	// Initalize EVA Timer1 
	EvaRegs.T1PR =1000;       // 4000=Timer1 period
	EvaRegs.T1CMPR = 0x0000;     //  Compare Reg for Timer1
	EvaRegs.EVAIMRA.bit.T1UFINT = 1;
	EvaRegs.EVAIFRA.bit.T1UFINT = 1;
	
	EvaRegs.T1CNT = 0x0000;      // Clear the counter for GPtimer1 
	EvaRegs.T1CON.all = 0x9042;  //<--TMODE = continuous up count,//0x8842;<--TMODE = continuous up/down count// Timer enable// Timer compare enable

// Step 2  Setup T1PWM 
	
	EvaRegs.GPTCONA.all=0x0000;// Polarity of GP Timer 1 Compare = Active low
	EvaRegs.GPTCONA.bit.T2PIN = 2;// Polarity of GP Timer 2 Compare = Active high
// Step 3 Enable compare for PWM1-PWM6
	EvaRegs.CMPR1 = 500;//1000h=4096d
	EvaRegs.CMPR2 = 500;//1000h=4096d
	EvaRegs.CMPR3 = 500;//1000h=4096d
    
	EvaRegs.ACTRA.all = 0x0999; // Active Lo
	EvaRegs.DBTCONA.all = 0x0FF0;//0x0AE8
	EvaRegs.COMCONA.all = 0x8200;//0xAA00;
}

interrupt void eva_timer1_isr(void)
{
   GpioDataRegs.GPBDAT.all=0X0000;
   Count++;
   EvaRegs.EVAIMRA.bit.T1UFINT = 1;
   EvaRegs.EVAIFRA.bit.T1UFINT = 1;
   PieCtrlRegs.PIEACK.all = PIEACK_GROUP2;
   
   if(Count==501)
   	{
   		x=Table[0]+500;//change to asm code place
   		Count=0;
   	}
   	
    x=Table[Count]+500;
   	
   
   EvaRegs.CMPR1 = x;
   GpioDataRegs.GPBDAT.all=0XFFFF;
   
}

//===========================================================================
// End Program.
//===========================================================================

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?