⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main1.c

📁 AD9958arm控制源程序
💻 C
字号:
/*-------------------------------------------------------
  FILE NAME   : main.c
DESCRIPTION : BS1084 vector function Generator main.
VERSION     : 0.0.0 (C)aureole
AUTHOR      : Aureole
CREATE DATE : 3.30.2006
MODIFY DATE : ---
LOGS        :-\ 
1. First create for hardware test. 3.30.2006

---------------------------------------------------------*/


//--------------------Include files-----------------------//

#include "..\include\config.h" 
#include "..\include\main.h"
#include "..\include\ltc2600.h"
#include "..\include\spi.h"
#include "..\include\ad9958.h"
#include "..\include\common.h"
#include "..\include\uart.h"
#include "..\include\my_lib.h"

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

//-------------------Variable ----------------------------//
ARM_PORT p0,p1;	

WAVEFORM_STRUCT parameter[2]={
	{WAVEFORM_SINE,DEFAULT_FREQUENCY,DEFAULT_AMPLITUDE,(float)0.0},
	{WAVEFORM_SINE,DEFAULT_FREQUENCY,DEFAULT_AMPLITUDE,(float)0.0}
};

unsigned  int channel=0;
char buffer[BUFFER_SIZE]; //buffer




//-------------------Function prototype-------------------//
void initialize_system(void);
void set_relay(void);


/*--------------------------------------------------------
NAME       : main
ENTRY  TYPE: void
RETURN TYPE: void
PURPOSE    : --- 
VERSION    : 0.1 
DESCRIPTION: 
CREATE DATE: 3.30.2006
LOGS       : 1.first create;
---------------------------------------------------------*/
int main (void)
{
	unsigned char feedback=0,command_ready=0;
	double temp=0;
	int j=0;

	initialize_system();
	while(1){
		//command receive and feedback;
		if(uart0_receive_ok_flag){
			uart0_receive_ok_flag=FALSE;
			if(!feedback){
				if(!strcmp(receive_buffer,"ERROR\r\n"))goto aa;
				feedback=TRUE;
				strcpy(buffer,receive_buffer);
				send_string_to_uart0(receive_buffer);
				clear_receive_buffer();

				aa:;
			}else{
				if(!strcmp(receive_buffer,"OK\r\n"))command_ready=1;
				feedback=FALSE;
			}
		}

		//command interpret		
		if(command_ready){
			command_ready=FALSE;
			if(!strncmp(buffer,"FREQ",4)){
				temp=__atof(buffer+5);
				set_frequency(CHANNEL_A_B,temp);
			}
		}
	if(j++==2800000){LED_ON};
	if(j==2850000){LED_OFF
		j=0;};
	
		

	}


	return 0;
} 


/*--------------------------------------------------------
NAME       : initialize_system
ENTRY  TYPE: void
RETURN TYPE: void
PURPOSE    : ---
VERSION    : 0.1 
DESCRIPTION: 
CREATE DATE: 4.5.2006
LOGS       : 1.first create;
---------------------------------------------------------*/
void initialize_system(void)
{
	unsigned long i;

	set_sine_ac_zero(cal_a.sine_ac_zero,cal_b.sine_ac_zero);
	set_squa_ac_zero(cal_a.squa_ac_zero,cal_b.squa_ac_zero);
	
	
#ifdef DEBUG_FROM_UART1
	initialize_uart1();
#endif
	
#ifdef DEBUG_FROM_UART1
	send_string_to_uart1((char *)"----------DEMON FOR VECTOR----------\r\n\r\n\r\n");
	send_string_to_uart1((char *)"# set CHANNEL A&B SINE/SQUA ac zero success!\r\n");
#endif
	set_relay();
	INITIALIZE_LED
	LED_ON

	for(i=0;i<800000;i++); //power on delay;


	initialize_master_spi();
#ifdef DEBUG_FROM_UART1
	send_string_to_uart1((char *)"# Initialize master spi success!\r\n");
#endif	
	initialize_ad9958();
#ifdef DEBUG_FROM_UART1
	send_string_to_uart1((char *)"# Initialize AD9958 success!\r\n");
#endif	
	set_frequency(CHANNEL_A,8000000.0);
	set_frequency(CHANNEL_B,8000000.0);
	
	set_phase(CHANNEL_A,0.0);
	initialize_uart0();

	LED_OFF
	IO0DIR|=(1<<16);
	IO0DIR|=(1<<17);
	p0.bits.bit16=1;
	p0.bits.bit17=1;
	IO0PIN=p0.value;
	
	set_amplitude(CHANNEL_A,parameter[0].waveform,20.0);
	set_amplitude(CHANNEL_B,parameter[1].waveform,20.0);
	
	send_string_to_uart1((char *)"# Initialize system success!\r\n"); 
}

/*--------------------------------------------------------
NAME       : clear_buffer
ENTRY  TYPE: void
RETURN TYPE: void
PURPOSE    : ---
VERSION    : 0.1
DESCRIPTION:
CREATE DATE: 4.8.2006
LOGS       : 1.first create;
---------------------------------------------------------*/
void clear_buffer(void)
{
	memset(buffer,0,BUFFER_SIZE);
}

void set_relay(void)
{
	unsigned char i;

	IO0DIR|=(1<<12);
	IO0DIR|=(1<<13);
	p0.bits.bit12=0;
	p0.bits.bit13=0;
	IO0PIN=p0.value;
	for(i=0;i<8;i++){
		p0.bits.bit12=1;
		IO0PIN=p0.value;
		p0.bits.bit13=1;
		IO0PIN=p0.value;
		p0.bits.bit13=0;
		IO0PIN=p0.value;
	}

}

⌨️ 快捷键说明

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