예제 #1
0
void sns_inputAnalog_Init(void)
{
#ifdef sns_inputAnalog_USEEEPROM
	if (EEDATA_OK)
	{
		/* Use stored data to set initial values for the module */
		for (uint8_t i=0; i<sns_inputAnalog_NUM_SUPPORTED; i++)
		{
			//eeprom_write_block( &sns_inputAnalog_Config[i], &eeprom_sns_inputAnalog, sizeof(sns_inputAnalog_Config)*i );
			eeprom_read_block( &sns_inputAnalog_Config[i], &eeprom_sns_inputAnalog+sizeof(sns_inputAnalog_Config)*i, sizeof(sns_inputAnalog_Config) );
		}
	} 
	else
	{
		/* The CRC of the EEPROM is not correct, store default values and update CRC */
		for (uint8_t i=0; i<sns_inputAnalog_NUM_SUPPORTED; i++)
		{
			sns_inputAnalog_Config[i].LowTh=50;			//Config, low level threshold voltage
			sns_inputAnalog_Config[i].HighTh=100;		//Config, high level threshold voltage
			sns_inputAnalog_Config[i].Periodicity=5000+i*100;	//Config, periodicity
			sns_inputAnalog_Config[i].Type=CAN_MODULE_ENUM_INPUTANALOG_ANALOGCONFIG_SETTING_PERIODICMEASURE;	//Config, if sensor is of type periodic or digital input
			sns_inputAnalog_Config[i].PullupEnable=CAN_MODULE_ENUM_INPUTANALOG_ANALOGCONFIG_PULLUP_DISABLE;		//Config, if the pullup should be enabled
			sns_inputAnalog_Config[i].RefEnable=CAN_MODULE_ENUM_INPUTANALOG_ANALOGCONFIG_REFERENCE_DISABLE;		//Config, if the reference to GND should be enabled
			
#if ((__AVR_LIBC_MAJOR__ == 1  && __AVR_LIBC_MINOR__ == 6 && __AVR_LIBC_REVISION__ >= 7)||(__AVR_LIBC_MAJOR__ == 1  && __AVR_LIBC_MINOR__ > 6)||__AVR_LIBC_MAJOR__ > 1)
			eeprom_update_block( &sns_inputAnalog_Config[i], &eeprom_sns_inputAnalog+sizeof(sns_inputAnalog_Config)*i, sizeof(sns_inputAnalog_Config) );
#else
			eeprom_write_block( &sns_inputAnalog_Config[i], &eeprom_sns_inputAnalog+sizeof(sns_inputAnalog_Config)*i, sizeof(sns_inputAnalog_Config) );
			#warning Using old version of AVRlibc, does not support eeprom_update-functions
#endif
		}
		EEDATA_UPDATE_CRC;
	}
#endif  

#if sns_inputAnalog_ENABLE_PCA95xx==1
	Pca95xx_Init(0);
#endif 
	/* Initiate ADC */
	ADC_Init();
	/* Start timer for reading inputs */
	Timer_SetTimeout(sns_inputAnalog_TIMER, sns_inputAnalog_POLL_PERIOD_MS , TimerTypeFreeRunning, 0);
	/* Set pullups according config */
	setPullups();
	/* Set gnd references according config */
	setReferences();
}
예제 #2
0
//--------------------------------------------------------------------------------------------------
/// 
//--------------------------------------------------------------------------------------------------
MimeDataWithReferences::MimeDataWithReferences(const MimeDataWithReferences& other)
    : QMimeData()
{
    setReferences(other.references());
}