예제 #1
0
파일: watchdog.c 프로젝트: dwlinux/u-boot
void watchdog_init(void)
{
#ifdef CONFIG_WATCHDOG
	watchdog_set(WDT_MAX_TIMEOUT);
#else
	watchdog_set(WDT_OFF); /* no timeout */
#endif
}
예제 #2
0
파일: main.c 프로젝트: emaste/deebe
void main_sigrtmin(int sig)
{
	bool watch = watchdog_get();
	if (watch) {
		WATCHDOG_ERROR();
	} else {
		watchdog_set();
	}
}
예제 #3
0
int do_sunxi_watchdog(cmd_tbl_t *cmdtp, int flag, int argc, const char *argv[])
{
	unsigned long interval;

	if (argc < 2) {
		printf("usage: watchdog seconds\n");
		printf("over %d to disable watchdog\n", WDT_MAX_TIMEOUT);
	}
	interval = simple_strtoul(argv[1], NULL, 10);
	watchdog_set((unsigned int)interval);

	return 0;
}
예제 #4
0
void watchdog_init(void)
{
	watchdog_set(WDT_OFF); /* no timeout */
}
예제 #5
0
int main(void) {
	watchdog_clear_status();
#ifdef USING_PRINTF
	serial_init();
#endif
	cli();
	clear_radio_strings();
	system_schedule = new_schedule();
	
	//Be aware: order may matter, especially with si4703/5_init and nokia5110_init.  (they all share a reset pin)
	watchdog_set(WD_INTERRUPT_AND_SYSTEM_RESET, WD_TIMEOUT_1_S);

	set_data_directions();
	timer0_pwm_prescaler_compare_A(0, 3, true, false);
	timer1_pwm_prescaler_compare(0, MAX_BRIGHTNESS, 1, 1, false, false);
	timer2_ctc(0.001, true);
	nokia5110_spi_init(0x51);
	i2c_init();
	nokia5110_power_on();
	set_volume(0);
	ADC_init(ADC_PC3, ADC_NO_TRIGGER, ADC_REFERENCE_1V1, true, true); //ADC_TIMER0_OVERFLOW
	sei();
	
	ds1307_getdate_s(&time);
		
	//If the clock isn't set, it reads all values as zero.  Set a default time
	if (time.year == 0) {
		ds1307_setdate(14,10,21,12,28,30);
	}
	
	time_alarm_A.hour = eeprom_read_byte(&alarm_A_hours);
	time_alarm_A.minute = eeprom_read_byte(&alarm_A_minutes);
	alarm_A_is_beep = eeprom_read_byte(&alarm_A_tone_setting);
	if (time_alarm_A.hour >= time_limits[hours]) {
		time_alarm_A.hour = 0;
		eeprom_update_byte(&alarm_A_hours, time_alarm_A.hour);
	}
	if (time_alarm_A.minute >= time_limits[minutes]) {
		time_alarm_A.minute = 0;
		eeprom_update_byte(&alarm_A_minutes, time_alarm_A.minute);
	}
	if (alarm_A_is_beep > true) {
		alarm_A_is_beep = true;
	}
	
	time_alarm_B.hour = eeprom_read_byte(&alarm_B_hours);
	time_alarm_B.minute = eeprom_read_byte(&alarm_B_minutes);
	alarm_B_is_beep = eeprom_read_byte(&alarm_B_tone_setting);
	if (time_alarm_B.hour >= time_limits[hours]) {
		time_alarm_B.hour = 0;
		eeprom_update_byte(&alarm_B_hours, time_alarm_B.hour);
	}
	if (time_alarm_B.minute >= time_limits[minutes]) {
		time_alarm_B.minute = 0;
		eeprom_update_byte(&alarm_B_minutes, time_alarm_B.minute);
	}
	if (alarm_B_is_beep > true) {
		alarm_B_is_beep = true;
	}
	
	channel = eeprom_read_word(&saved_channel);
	if (channel < SI4705_FM_LOW || channel > SI4705_FM_HIGH) channel = 889;
	
	for (err = 0; err < NUMBER_OF_PRESETS; err++) {
		presets[err] = eeprom_read_word(&saved_presets[err]);
		if (presets[err] < SI4705_FM_LOW || presets[err] > SI4705_FM_HIGH) presets[err] = 945;
	}
	
	ms_clock = 0;
	while(true) {
		if (is_fresh) {
			is_fresh = false;
			check_schedule();
			switch(state) {
				case home:
					home_state(); break;
				case menu: 
					menu_state(); break;
				case set_clock:
					set_clock_state(); break;
				case set_alarm_A:
				case set_alarm_B:
					set_alarm_state(); break;
				case alarm_A:
				case alarm_B:
					alarm_state(); break;
				case radio:
					radio_state(); break;
				case preset:
					preset_state(); break;
				default: break;
			}
			init = false;
			state_handler();
			watchdog_entertain();
		}
	}
}