📄 main.c
字号:
#include "includes.h"
unsigned int copy_DMA1CTL = 0;
unsigned int temp_i;
unsigned int value1 = 0, value2 = 4090;
//=========================INTERRUPTS ==================================
//====================== TIMER A Interrupt===============================
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
TimerA_IntFlag++;
if(globalProcessEnable)
{
// ==== BLOCK USED TO SEND A SIGNAL ALL THE TIME: LOOKUP TABLE =========
if(sinus_cycle == 0)
DAC12_1DAT = 20 + signal_1[DAC_sampleCounter];
else
DAC12_1DAT = 20 + 256 - signal_2[DAC_sampleCounter];
DAC_sampleCounter ++;
if(DAC_sampleCounter >= 128)
{
DAC_sampleCounter = 0;
if(sinus_cycle == 0) sinus_cycle = 1;
else sinus_cycle = 0;
}
}
// P4OUT ^= 0xFF ; // TOGGLE ALL
}
//====================== TIMER B Interrupt===============================
// Timer B interrupt service routine
#pragma vector=TIMERB0_VECTOR
__interrupt void Timer_B (void)
{
//TimerA_IntFlag++;
//P4OUT ^= 0xFF ; // TOGGLE ALL
}
//====================== DMA Interrupt =========================================
#pragma vector = DACDMA_VECTOR
__interrupt void DACDMAISR(void)
{
P4OUT ^= 0xFF ; // TOGGLE ALL
copy_DMA1CTL = DMA1CTL;
//======= Is it DMA1 Int flag (New 512 samples block from PC arrived)
if(copy_DMA1CTL & DMAIFG)
{
DMA1CTL &= ~DMAIFG; // Clear DMA1 interrupt flag
DMA1CTL &= ~DMAIE;
New_PC_Block_Trasfer = 1;
}
}
//================== delay_time (int cycles) ============================
void delay_time(int cycles)
{ int i,j; i=j=0;
for (i = cycles ; i > 0 ; i--) { for (j = 5; j > 0; j--); }
}
//=======================================================================
//========================= main () ===================================
//=======================================================================
void main( void )
{
int k = 0;
unsigned int DMA_bytes = 0, tempo_sample = 0,tempo_test, tempo_i_main;
char temp_char;
unsigned char button_scan_result = 0;
unsigned char temp_ARM_Muxes = 0;
//------- INIT VARIABLES
TimerA_IntFlag = SampleNumber = NrResetCommands = WatchdogCounter = 0;
Button1_State = UNPRESSED; Button2_State = UNPRESSED;
config_all();
// DMAs configuration:
DMA_bytes = (PC_to_MSP_Nr_SAMPLES * 4);
config_DMA(DMA_RX_TX,10,DMA_bytes,test_string, MSP_TO_PC);
//----- Enable Global Interrupts-----------------------------------------
_EINT();
delay_time(100000);
for(temp_i = 0; temp_i < DAC_DMA_BLOCK_SIZE; temp_i++)
{
DAC12_Buffer_1[temp_i] = value1;
DAC12_Buffer_2[temp_i] = value2;
value1 = value1 + 10;
value2 = value2 - 10;
if(value1 >= 4080)
{ value1 = 0;
value2 = 4090;
}
}
//--- MAIN LOOP ---
while(1)
{
// 1(>0 THEN 490uS),2(>1 THEN 1ms-1kHz),4(>3 THEN 2ms-500Hz),8(>7 THEN 4ms-250Hz)
if(TimerA_IntFlag >= 40)
{
TimerA_IntFlag=0;
if(!globalProcessEnable)
globalProcessEnable = 1;
//P4OUT ^= 0xFF ; // TOGGLE ALL
//============== ASK FOR NEW PC BLOCK ==================================
//-- When Timer Tick has sent all samples in current buffer, it sets
//-- "DAC_buffer_used_changed", and MSP ask for 512 samples more from PC.
if(DAC_buffer_used_changed)// 142 ms after requesting a block.
{
DAC_buffer_used_changed = 0;
//-- Enable a new 512 samples block from PC:
DMA1CTL = DMADSTINCR_3 + DMASBDB + DMAEN + DMADT_4 + DMAIE ;
send_UART0(0xAA);
//send_UART0(0xAA);
#ifdef VBnet_And_MSP_TEST
P4OUT |= 0xFF ; // TOGGLE ALL
#endif
}
//============== SYNC SAMPLES ==========================================
if(New_PC_Block_Trasfer == 1)//
{
// P4OUT ^= 0xFF ; // TOGGLE ALL
#ifdef VBnet_And_MSP_TEST
P4OUT &= 0x00 ; // TOGGLE ALL
#endif
New_PC_Block_Trasfer = 0;
if(DAC_buffer_used_number == 1)
goodSamplesArrived = SynchSamples(2);
else
goodSamplesArrived = SynchSamples(1);
// After this, new samples are in backup buffer.
}
}// End of " if(TimerA_IntFlag > 0) "
}// End of " while(1) "
}// End of " main() "
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -