/** * \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(); }
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(); } }