亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? spi_dac_adc.c

?? TMS320X281xDSP原理及C程序開發-光盤應用程序
?? C
字號:
//
//      Lab7A : TMS320F2812  Teaching CD ROM
//      (C) Frank Bormann
//
//###########################################################################
//
// FILE:	Lab7A.c
//
// TITLE:	DSP28 SPI - DAC TLV5617A, 2 sawtooth voltages 
//			CPU Timer0 ISR every 50 ms  
//			ADCINA1 and ADCINB1 to measure the DAC voltages
//			Watchdog active , served in ISR and main-loop 
//
//###########################################################################




#include "DSP281x_Device.h"

// Prototype statements for functions found within this file.

void Gpio_select(void);
void InitSystem(void);    
void SPI_Init(void);
void DAC_Update(char channel,int value);
interrupt void cpu_timer0_isr(void); // Prototype for Timer 0 Interrupt Service Routine
interrupt void ADC_ISR(void);

void main(void)
{
	int Voltage_A = 0;
	int Voltage_B = 511;       
	
	InitSystem();		// Initialize the DSP's core Registers
	
	Gpio_select();		// Setup the GPIO Multiplex Registers
	
	InitPieCtrl();		// Function Call to init PIE-unit ( code : DSP281x_PieCtrl.c)
	
	InitPieVectTable(); // Function call to init PIE vector table ( code : DSP281x_PieVect.c )
	
	// re-map PIE - entry for Timer 0 Interrupt 
	EALLOW;  // This is needed to write to EALLOW protected registers
   	PieVectTable.TINT0 = &cpu_timer0_isr;
   	EDIS;    // This is needed to disable write to EALLOW protected registers
	
	InitCpuTimers();
	
	// Configure CPU-Timer 0 to interrupt every 50 ms:
	// 150MHz CPU Freq, 50000 祍econds interrupt period
    ConfigCpuTimer(&CpuTimer0, 150, 50000);
    
    // Enable TINT0 in the PIE: Group 1 interrupt 7
   	PieCtrlRegs.PIEIER1.bit.INTx7 = 1;

	// Enable CPU INT1 which is connected to CPU-Timer 0:
    IER = 1;
    
	// Enable global Interrupts and higher priority real-time debug events:
   	EINT;   // Enable Global interrupt INTM
   	ERTM;   // Enable Global realtime interrupt DBGM
   	
   	CpuTimer0Regs.TCR.bit.TSS = 0;
   	
   	SPI_Init();    
   	InitAdc();
	// Configure ADC
   	AdcRegs.ADCTRL1.bit.SEQ_CASC = 0;	   // Dual Sequencer Mode
   	AdcRegs.ADCTRL1.bit.CONT_RUN = 0;	   // No Continuous run
   	AdcRegs.ADCTRL1.bit.CPS = 0;		   // prescaler = 1	
   	AdcRegs.ADCMAXCONV.all = 0x0001;       // Setup 2 conv's on SEQ1  
    AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x1; // Setup ADCINA0 as 1st SEQ1 conv.
    AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x9; // Setup ADCINB0 as 2nd SEQ1 conv.
    AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1 = 0;  // Disable EVASOC to start SEQ1
	AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1;  // Enable SEQ1 interrupt (every EOS)
	AdcRegs.ADCTRL3.bit.ADCCLKPS = 2;	   // Divide HSPCLK by 4
	
	EALLOW;	// This is needed to write to EALLOW protected registers
	PieVectTable.ADCINT = &ADC_ISR;
	EDIS;       // This is needed to disable write to EALLOW protected registers
	
	PieCtrlRegs.PIEIER1.bit.INTx6 = 1;	// Enable ADCINT in PIE group 1

	while(1)
	{    
  	    while(CpuTimer0.InterruptCount < 3); // wait for Timer 0
  		AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;  // start ADC
  		CpuTimer0.InterruptCount = 0;      
  		GpioDataRegs.GPBTOGGLE.bit.GPIOB0 = 1;	// Toggle LED B0
  		DAC_Update('B',Voltage_B);
   		DAC_Update('A',Voltage_A);
  		if (Voltage_A++ > 511) Voltage_A = 0;
  		if (Voltage_B-- < 0) Voltage_B = 511;
    	EALLOW;
    	SysCtrlRegs.WDKEY = 0xAA;		// and serve watchdog #2		
	    EDIS;
	}
} 	

void Gpio_select(void)
{
	EALLOW;
	GpioMuxRegs.GPAMUX.all = 0x0;	// all GPIO port Pin's to I/O
    GpioMuxRegs.GPBMUX.all = 0x0;   
    GpioMuxRegs.GPDMUX.all = 0x0; 
    
    GpioMuxRegs.GPFMUX.all = 0xF;		 
    GpioMuxRegs.GPEMUX.all = 0x0; 
    GpioMuxRegs.GPGMUX.all = 0x0;			
										
    GpioMuxRegs.GPADIR.all = 0x0;	// GPIO PORT  as input
    GpioMuxRegs.GPBDIR.all = 0x00FF;	// GPIO Port B15-B8 input , B7-B0 output
    GpioMuxRegs.GPDDIR.all = 0x0;	// GPIO PORT  as input
    GpioMuxRegs.GPDDIR.bit.GPIOD0 = 1;  // /CS for DAC
    GpioMuxRegs.GPDDIR.bit.GPIOD6 = 1;	// /CS for EEPROM	
    GpioMuxRegs.GPEDIR.all = 0x0;	// GPIO PORT  as input
    GpioMuxRegs.GPFDIR.all = 0x0;	// GPIO PORT  as input
    GpioMuxRegs.GPGDIR.all = 0x0;	// GPIO PORT  as input

	GpioDataRegs.GPBDAT.all = 0x0000;	// Switch off LED's ( B7...B0) 
	GpioDataRegs.GPDDAT.bit.GPIOD0 = 1;	// deactivate /CS for the DAC 
	GpioDataRegs.GPDDAT.bit.GPIOD5 = 1; // deactivate /CS for the EEPROM
	
    GpioMuxRegs.GPAQUAL.all = 0x0;	// Set GPIO input qualifier values to zero
    GpioMuxRegs.GPBQUAL.all = 0x0;
    GpioMuxRegs.GPDQUAL.all = 0x0;
    GpioMuxRegs.GPEQUAL.all = 0x0;
    EDIS;
}     


void InitSystem(void)
{
   	EALLOW;
   	SysCtrlRegs.WDCR= 0x00AF;		// Setup the watchdog 
   									// 0x00E8  to disable the Watchdog , Prescaler = 1
   									// 0x00AF  to NOT disable the Watchdog, Prescaler = 64
   	SysCtrlRegs.SCSR = 0; 			// Watchdog generates a RESET	
   	SysCtrlRegs.PLLCR.bit.DIV = 10;	// Setup the Clock PLL to multiply by 5
    
   	SysCtrlRegs.HISPCP.all = 0x1; // Setup Highspeed Clock Prescaler to divide by 2
   	SysCtrlRegs.LOSPCP.all = 0x2; // Setup Lowspeed CLock Prescaler to divide by 4
      	
   	// Peripheral clock enables set for the selected peripherals.   
   	SysCtrlRegs.PCLKCR.bit.EVAENCLK=0;
   	SysCtrlRegs.PCLKCR.bit.EVBENCLK=0;
   	SysCtrlRegs.PCLKCR.bit.SCIAENCLK=0;
   	SysCtrlRegs.PCLKCR.bit.SCIBENCLK=0;
   	SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=0;
   	SysCtrlRegs.PCLKCR.bit.SPIENCLK=1;
   	SysCtrlRegs.PCLKCR.bit.ECANENCLK=0;
   	SysCtrlRegs.PCLKCR.bit.ADCENCLK=1;
   	EDIS;
}

interrupt void cpu_timer0_isr(void)
{
    CpuTimer0.InterruptCount++;  
   	// Serve the watchdog every Timer 0 interrupt
   	EALLOW;
	SysCtrlRegs.WDKEY = 0x55;		// Serve watchdog #1
	EDIS;

   // Acknowledge this interrupt to receive more interrupts from group 1
   PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
} 

void SPI_Init(void)
{
	SpiaRegs.SPICCR.all = 0x004F;	
	// Bit 7 , Reset = 0 : 
	// Bit 6 , Clock Polarity = 1 : data output on falling edge of CLK
	//       , together with CLOCK PHASE = 1 : data output is one half cycle before
	//       , falling edge pf SPICLK
	// Bit 5 , reserved
	// Bit 4 , SPILBK = 0 : no loopback mode
	// Bit 3-0 , Chars = 1111 : 16 bit data transfer
	SpiaRegs.SPICTL.all =0x000E;
	// Bit 7-5 : reserved
	// Bit 4 , Overrun INT Enable = 0 : Disable Receiver Overrun Interrupt
	// Bit 3 , Clock-Phase = 1 , one half clock delay
	// Bit 2 , Master/Slave = 1 ,  MASTER
	// Bit 1 , Talk = 1 ,  Enable Transmission
	// Bit 0 , SPI INT ENA = 0 , No SPI - Interrupts
	SpiaRegs.SPIBRR = 124;
	// SPI Baud Rate =  LSPCLK / ( SPIBRR + 1)
	//				 =  37,5 MHz / ( 124 + 1 )
	//			     =  300 kHz
	SpiaRegs.SPICCR.bit.SPISWRESET = 1; // relinquish SPI from reset
}  

void DAC_Update(char channel, int value)
{
	int i;
	GpioDataRegs.GPDDAT.bit.GPIOD0 = 0;	// activate /CS for the DAC 
	if (channel == 'B') 
		SpiaRegs.SPITXBUF =  0x1000 + (value<<2);// transmit data to DAC-Buffer
	if (channel == 'A')
	    SpiaRegs.SPITXBUF =  0x8000 + (value<<2);// transmit data to DAC-A 
								                // and update DAC-B with Buffer
	while (SpiaRegs.SPISTS.bit.INT_FLAG == 0) ; // wait for end of transmission
	for (i=0;i<100;i++);            // wait for DAC to finish off
	GpioDataRegs.GPDDAT.bit.GPIOD0 = 1;	// deactivate /CS for the DAC 
	i = SpiaRegs.SPIRXBUF;			// dummy read of RXBUF to reset SPI 
    
}
//===========================================================================
// End of SourceCode.
//===========================================================================

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人99久久亚洲综合精品| 免费在线看一区| 亚洲欧美综合另类在线卡通| 中文字幕一区二区日韩精品绯色| 国产精品色婷婷| 亚洲成人动漫精品| 国产一区二区三区电影在线观看| 国产91高潮流白浆在线麻豆| 欧美日韩一级片在线观看| 日韩西西人体444www| 国产精品免费视频一区| 亚洲超碰97人人做人人爱| 国产一区欧美一区| 在线观看亚洲成人| 国产欧美日韩综合精品一区二区| 亚洲激情欧美激情| 国产成人综合在线观看| 欧美日韩1区2区| 亚洲欧洲精品一区二区三区| 极品少妇xxxx精品少妇偷拍| 欧美色国产精品| 日韩伦理电影网| 丰满白嫩尤物一区二区| 精品国产99国产精品| 日韩精品1区2区3区| 欧美性大战久久久久久久蜜臀| 亚洲欧洲国产专区| 丁香亚洲综合激情啪啪综合| 精品久久一区二区| 日韩国产欧美一区二区三区| 91麻豆精品国产自产在线| 日韩码欧中文字| 91伊人久久大香线蕉| 国产精品久久久久久久久免费相片 | 成人免费av资源| 国产精品伦一区二区三级视频| 国产99久久久国产精品| 日韩欧美亚洲国产另类| 日本特黄久久久高潮| 欧美日韩精品系列| 免费在线观看成人| 久久综合五月天婷婷伊人| 国产成人免费9x9x人网站视频| 国产亚洲精品免费| 色婷婷久久综合| 亚洲国产一区视频| 久久免费电影网| 依依成人精品视频| 国产乱子轮精品视频| 国产精品妹子av| 欧美日韩国产高清一区二区| 久久不见久久见免费视频7 | 国产真实乱偷精品视频免| 久久久美女毛片| 欧美色图在线观看| 国内不卡的二区三区中文字幕| 亚洲日本在线天堂| 日韩免费电影一区| 欧美午夜精品一区二区蜜桃| 国产一区二区三区高清播放| 亚洲电影第三页| 国产精品久久久久aaaa樱花| 欧美一区二区视频免费观看| 色综合天天在线| 国产99久久久国产精品潘金网站| 国产福利一区二区三区视频在线| 亚洲综合在线第一页| 国产精品网曝门| 欧美国产激情一区二区三区蜜月| 日韩一区二区三区视频| 欧美日韩一级二级| 欧美影院精品一区| 在线一区二区三区四区五区| 91女厕偷拍女厕偷拍高清| 粉嫩av亚洲一区二区图片| 国产精品中文有码| 久久99国产精品成人| 免费成人在线观看| 激情综合五月婷婷| 极品瑜伽女神91| 波多野结衣一区二区三区| 国产98色在线|日韩| 成人精品一区二区三区四区| 成人h动漫精品一区二| 一本久久a久久免费精品不卡| 91丝袜美女网| 欧美精品777| 精品国产一区二区亚洲人成毛片 | 北条麻妃国产九九精品视频| 成人性视频网站| 欧美主播一区二区三区美女| 91精品国产色综合久久| 久久精品亚洲麻豆av一区二区| 中文字幕制服丝袜成人av| 一区二区三区中文字幕电影| 日本不卡在线视频| 国产黄色精品网站| 欧美日韩国产综合一区二区三区 | 蜜桃一区二区三区在线观看| 国产传媒日韩欧美成人| 欧美日韩成人在线一区| 久久精品视频一区| 青娱乐精品视频在线| 国产精品亚洲а∨天堂免在线| 色哟哟国产精品免费观看| 欧美精品一区二区三区一线天视频| 国产精品久久久久三级| 免费观看日韩av| 欧美日韩国产美| 一区二区三区日本| 处破女av一区二区| 久久久99精品免费观看不卡| 亚洲亚洲精品在线观看| 成人黄色小视频| 国产午夜精品久久久久久免费视| 免费视频最近日韩| 欧美日韩国产另类一区| 香蕉久久一区二区不卡无毒影院| 成人av免费网站| 国产精品国产精品国产专区不片| 国产一区高清在线| 久久综合色8888| 国产真实乱偷精品视频免| 久久综合av免费| 国产九色精品成人porny | 日本欧美肥老太交大片| 91久久香蕉国产日韩欧美9色| 北条麻妃国产九九精品视频| 91精品国产欧美日韩| 亚洲一区二区高清| 在线电影院国产精品| 蜜桃久久精品一区二区| 精品日韩在线观看| 风间由美一区二区av101| 国产欧美一区二区精品性色超碰| 国产精品一区二区在线观看不卡| 亚洲精品在线三区| 粉嫩一区二区三区在线看| 亚洲视频在线一区二区| jvid福利写真一区二区三区| 亚洲成人精品影院| 欧美一区二区视频在线观看| 成人综合激情网| 夜夜精品视频一区二区| 日韩精品在线一区| 91在线观看污| 乱一区二区av| 亚洲一区在线视频观看| 日韩一二三区视频| 在线欧美小视频| 青青草伊人久久| 亚洲欧洲av在线| 欧美一级午夜免费电影| 成人妖精视频yjsp地址| 老司机精品视频一区二区三区| 国产精品福利电影一区二区三区四区| 欧美大肚乱孕交hd孕妇| 在线观看亚洲精品| av电影天堂一区二区在线观看| 美女视频一区在线观看| 亚洲国产精品视频| 亚洲三级小视频| 日韩欧美高清一区| 日韩免费一区二区三区在线播放| 91福利国产成人精品照片| caoporm超碰国产精品| 成人激情动漫在线观看| 成人免费视频网站在线观看| 国产一区二区三区不卡在线观看 | 成人激情小说乱人伦| 国产成人小视频| 国产一区二区看久久| 丰满放荡岳乱妇91ww| 成人性生交大合| 在线观看一区二区精品视频| 在线中文字幕一区| 在线中文字幕一区二区| 欧美一区二区性放荡片| 91九色最新地址| 欧美三级电影精品| 日韩欧美亚洲国产另类| 国产欧美综合在线| 一区二区在线免费观看| 亚洲综合偷拍欧美一区色| 另类小说欧美激情| 国产精品一区在线| 欧美日韩一区精品| 精品国产乱码久久久久久夜甘婷婷 | 一区二区三区日韩欧美| 国产一区二区三区精品视频| 成人一道本在线| 欧美一区二区三区人| 国产精品网站导航| 免费在线欧美视频| 国产盗摄视频一区二区三区| 欧美日韩激情在线| 国产亚洲欧美一级| 全国精品久久少妇| 色综合视频在线观看| 久久久91精品国产一区二区精品|