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 + -
显示快捷键?