示例#1
0
void AdcDacStartSynchro(uint32_t period, uint16_t amplitude)
{
	if(g_adcStatus==1)
		AdcStop();//Потенциально здесь может все зависнуть, если цикл внутри AdcQuant не завершился
	//for(int i=0;i<RESULT_BUFFER_SIZE;i++)
	//	g_resultBuffer[i]=0x00080008;

	g_cur_cycle = 0;

	LcdRepaint();

	DacSetPeriod(period, amplitude);
	AdcRoundSize(DacSamplesPerPeriod());
	AdcStartPre();

	USBAdd32(DacPeriod());
	USBAdd32(SystemCoreClock);
	USBAdd32(DacSamplesPerPeriod());

	ADC_StartConversion(ADC3);
	ADC_StartConversion(ADC4);

	g_adc_elapsed_time = 0;
	StartTimer();
	TIM_Cmd(TIM2, ENABLE); //Start DAC
}
示例#2
0
void AdcUsbStartReadBuffer()
{	
	g_adc_cur_read_pos = 0;
	g_adc_read_buffer = true;
	USBAdd32(g_ResultBufferSize);
	USBAdd32(g_adc_elapsed_time);
	USBAdd32(g_adc_cycles);
}
示例#3
0
void AdcSendLastCompute()
{
	AdcSummaryData* data = &g_data;
	USBAdd16(data->count);
	AdcSendLastComputeCh(&data->ch_v);
	AdcSendLastComputeCh(&data->ch_i);
	USBAdd8(data->error);
	USBAdd32(data->nop_number);

	g_usb_sampled_data = false;
}
示例#4
0
void PacketReceive(volatile uint8_t* data, uint32_t size)
{
	uint8_t command = data[0];
	data++;
	size--;

	switch(command)
	{

	case 3://COMMAND_SET_FREQ
		OnSetFreq(*(uint32_t*)(data+0));
		return;

	case 0://COMMAND_NONE
	default:
		USBAdd8(command);
		USBAdd32(size);
		USBSend();
		break;
	}

}