示例#1
0
文件: event.c 项目: thegeek82000/asf
/**
 * \brief Event Button Init.
 */
void event_button_init(void)
{
	// Structure holding the configuration parameters
	// of the EIC module.
	struct eic_line_config eic_line_conf;

	// Initialize EIC Controller
	sysclk_enable_peripheral_clock(EIC);

	// Enable level-triggered interrupt.
	eic_line_conf.eic_mode   = EIC_MODE_EDGE_TRIGGERED;
	// Interrupt will trigger on low-level.
	eic_line_conf.eic_level  = EIC_LEVEL_LOW_LEVEL;
	// Edge on falling edge
	eic_line_conf.eic_edge = EIC_EDGE_FALLING_EDGE;
	// Enable filter.
	eic_line_conf.eic_filter = EIC_FILTER_DISABLED;
	// For Wake Up mode, initialize in asynchronous mode
	eic_line_conf.eic_async  = EIC_ASYNCH_MODE;

	// Enable clock for EIC controller
	eic_enable(EIC);
	// Init the EIC controller with the options
	eic_line_set_config(EIC, GPIO_PUSH_BUTTON_EIC_LINE,
		&eic_line_conf);
	// Init the callback
	eic_line_set_callback(EIC, GPIO_PUSH_BUTTON_EIC_LINE, eic5_callback,
		EIC_5_IRQn, 1);
	// Enable the EIC line
	eic_line_enable(EIC, GPIO_PUSH_BUTTON_EIC_LINE);

	// EIC can wake the device from backup mode
	bpm_enable_wakeup_source(BPM, BPM_BKUP_WAKEUP_SRC_EIC
		| BPM_BKUP_WAKEUP_SRC_AST);
	// EIC can wake the device from backup mode
	bpm_enable_backup_pin(BPM, 1 << GPIO_PUSH_BUTTON_EIC_LINE);
	// Retain I/O lines after wakeup from backup
	bpm_disable_io_retention(BPM);
	bpm_enable_io_retention(BPM);
	bpm_enable_fast_wakeup(BPM);
	sysclk_disable_peripheral_clock(EIC);

	event_pbEvent = false;

	// Initialize WDT Controller
	sysclk_enable_peripheral_clock(WDT);
	enable_wdt();
}
示例#2
0
static ssize_t set_enabled(struct device *dev, struct device_attribute *attr,
		const char *buf, size_t count)
{
	struct omap_wdt_dev *wdev = platform_get_drvdata(omap_wdt_dev);
	char *cp;
	int len = count;

	if (!kernelpet) {
		printk(KERN_WARNING "The watchdog is disabled permanently.\n");
		return -EINVAL;
	}

	cp = memchr(buf, '\n', count);
	if (cp)
		len = cp - buf;
	if (wdev->omap_wdt_users) {
		if (len == sizeof ctrl_off - 1 &&
				strncmp(buf, ctrl_off, len) == 0) {
			if (is_wdt_enabled == WDT_DISABLE) {
				printk(KERN_WARNING
					"The watchdog is already disabled\n");
				return -EINVAL;
			}
			disable_wdt(wdev);
		} else if (len == sizeof ctrl_on - 1 &&
				strncmp(buf, ctrl_on, len) == 0) {
			if (is_wdt_enabled == WDT_ENABLE) {
				printk(KERN_WARNING
					"The watchdog is already enabled\n");
				return -EINVAL;
			}
			enable_wdt(wdev);
		} else {
			printk(KERN_WARNING
				"Invalid enable setting, use on or off\n");
			return -EINVAL;
		}
	}

	return count;
}
//********************** 初期化関数
void initialize(void){

	spi_selectGPS(0);
	spi_selectDrive(0);
	subPIC_power(0);
	i2c_power(0);
	adc_power(0);

	//デバイス初期化
	hmr_device_initialize();
	hmr_clock_initialize_withNormal();
	hmr_interrupt_initalize();

	if(Config_DefaultMobilePhone){
		hmr_uart1_initialize(UART1_MODULEID_MP);
	}else{
		hmr_uart1_initialize(UART1_MODULEID_RF);
	}
	hmr_uart1_power_switch(1,hmr_uart1_getModuleID());

	rs_fputc('O',Stream_VMC);
	rs_fputc('K',Stream_VMC);
	rs_fputc((unsigned char)(RCON),Stream_VMC);
	rs_fputc((unsigned char)(RCON>>8),Stream_VMC);
	rs_fputc(0x0d,Stream_VMC);
	rs_fputc(0x0a,Stream_VMC);

	hmr_uart2_initialize();
	hmr_spi2_initialize();
	hmr_i2c_initialize();
	hmr_adc_initialize();

	rs_fputc('I',Stream_VMC);
	rs_fputc('n',Stream_VMC);
	rs_fputc(0x0d,Stream_VMC);
	rs_fputc(0x0a,Stream_VMC);

	spi_selectGPS(0);
	spi_selectDrive(0);
	subPIC_power(1);
	i2c_power(1);
	adc_power(1);
 //       HMR_PIN_I2C_ACCEL0_PW_set(1);
//        HMR_PIN_ADCPW_CH0to6_set(1);

    HMR_PIN_ADCPW_CH7_set(1);
    HMR_PIN_ADCPW_CH8_set(1);

	rs_fputc('P',Stream_VMC);
	rs_fputc('w',Stream_VMC);
	rs_fputc(0x0d,Stream_VMC);
	rs_fputc(0x0a,Stream_VMC);

	inertial_initialize();

	//通信関連機能の初期化
	pVMC=com_createVMC1();
	vmc1_initialize(pVMC,(const unsigned char*)("hmr"),(const unsigned char*)("ctr"));
	com_initialize();
	msg_initialize();

	rs_fputc('C',Stream_VMC);
	rs_fputc('m',Stream_VMC);
	rs_fputc(0x0d,Stream_VMC);
	rs_fputc(0x0a,Stream_VMC);

	//タスク機能の初期化
//	task_initialize();

	sprite_power(1);
	sprite_initialize();

	set_interrupt_fputflag(Stream_VMC);//割り込み予約
	enable_interrupt_fget(Stream_VMC);
	enable_interrupt_fput(Stream_VMC);

	//Watch dog timer
	if(Config_DisableWatchDogTimer){//DIPがOFFのとき
		disable_wdt();
	}else{
		enable_wdt();
	}

}