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

📄 adc.c

📁 单相电机变频驱动原码,采用DISPIC30芯片
💻 C
字号:
/****************************************************************
*
*		Microchip 16-bit Embedded Control Design Contest
*
*		Entry # MT2268
*
*		Spa Pump Controller
*
*****************************************************************
*
*		ADC Control Routines
*
*****************************************************************/

#include "PumpCtl.h"
#include "ADC.h"
#include "PWM.h"

//		Initialize the ADC

void ADC_init (void)
{
	// The ADC is limited to 1.5MSPS => 18 MHz max clock freq (per Rev A1 Errata #9)
#ifdef HIGH_SPEED
	_ADCS = 5;		// Select Fadc/14 for 16.6 MHz clock
#else
	_ADCS = 3;		// Select Fadc/10 for 15.5 MHz clock
#endif
	_SEQSAMP = 1;	// Use sequential sampling (per Rev A1 Errata #6)
	_FORM = 1;		// Select fractional format

					// Select PFC PWM trigger for AN0-3, enable AN2-3 IRQ
	ADCPC0 = 0x8303 + PWM_CH_pfc + (PWM_CH_pfc << 8);
/*
		TRGSRC0 = 3 + PWM_CH_pfc;
		SWTRG0  = 0;
		PEND0   = 0;
		IRQEN0  = 0;
		TRGSRC1 = 3 + PWM_CH_pfc;
		SWTRG1  = 0;
		PEND1   = 0;
		IRQEN1  = 1;
*/

					// Select AUX PWM trigger for AN4-5, RUN PWM trigger for AN6-7
	ADCPC1 = 0x0303 + PWM_CH_aux + (PWM_CH_run << 8);
/*
		TRGSRC2 = 3 + PWM_CH_aux;
		SWTRG2  = 0;
		PEND2   = 0;
		IRQEN2  = 0;
		TRGSRC3 = 3 + PWM_CH_run;
		SWTRG3  = 0;
		PEND3   = 0;
		IRQEN3  = 0;
*/

	ADSTAT = 0;		// Clear all ADC interrupt flags

	_ADON = 1;		// Start the ADC

					// Init offset values based on hardware resistor values
	offset.isns_pfc = 65536UL * 115 / (115 + 2550);		// = 64K * R62 / (R62 + R61)
	offset.isns_aux = 65536UL * 162 / (162 + 162);		// = 64K * R46 / (R46 + R45)
	offset.isns_run = 65536UL * 162 / (162 + 162);		// = 64K * R46 / (R46 + R45)
}

⌨️ 快捷键说明

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