Пример #1
0
inline uint16_t satAddU16S16(uint16_t a, int16_t b)
{
	int32_t r;

	r=a;
	r+=b;
	r=__USAT(r,16);
	
	return r;
}
Пример #2
0
int main(void)
{
	int i=0, offset;

#if FILTRO_PASA_BANDA
	fir_q31_init(&filtro, history, bandpass_taps, BANDPASS_TAP_NUM);
	offset=500;
#elif FILTRO_PASA_BAJOS
	fir_q31_init(&filtro, history, lowpass_taps, LOWPASS_TAP_NUM);
	offset=-100;
#endif

	initHardware();

	*DWT_CTRL |= 1;

	while(1)
	{
		if(adcFlag)
		{
			adcFlag=0;
			*DWT_CYCCNT=0; /* para medir tiempos de ejecucion */
#if(USAR_FUNCIONES_ASSEMBLER)
			y[i] = asm_fir_q31_get(&filtro)+offset;
			y[i] = __USAT(y[i],10);
#else
			y[i] = fir_q31_get(&filtro)+offset;
			if(y[i]>0x3FF) y[i] = 0x3FF;
			else if(y[i]<0) y[i] = 0;
#endif
			dacWrite(y[i]);
			i++;
			if(i==500)
				i=0;
		}
	}
}