Beispiel #1
0
/**
 * \brief Configure the RTT to generate an alarm at the given time.
 * alarm happens when CRTV value equals ALMV+1, so RTT_AR should be alarmtime - 1.
 * if you want to get alarm when rtt hit 0 , ALMV should be set to 0xFFFFFFFF.
 *
 * \param p_rtt Pointer to an RTT instance.
 * \param ul_alarm_time Alarm time,Alarm time = ALMV + 1.
 *
 * \retval 0 Configuration is done.
 */
uint32_t rtt_write_alarm_time(Rtt *p_rtt, uint32_t ul_alarm_time)
{
	uint32_t flag;

	flag = p_rtt->RTT_MR & RTT_MR_ALMIEN;

	rtt_disable_interrupt(RTT, RTT_MR_ALMIEN);

	/**
	 * Alarm time = ALMV + 1,If the incoming parameter 
	 * is 0, the ALMV is set to 0xFFFFFFFF.
	*/
	if(ul_alarm_time == 0) {
		p_rtt->RTT_AR = 0xFFFFFFFF;
	}
	else {
		p_rtt->RTT_AR = ul_alarm_time - 1;
	}

	if (flag) {
		rtt_enable_interrupt(RTT, RTT_MR_ALMIEN);
	}

	return 0;
}
void terminate(const char *s)
{
	rtc_disable_interrupt(RTC, RTC_IDR_ALRDIS);//disabilito interrupt RTC
	rtt_disable_interrupt(RTT, RTT_MR_RTTINCIEN);//disabilito interrupt RTT
	afec_disable(AFEC0);//disabilito convertitore A/D
	dacc_disable_channel(DACC_BASE, DACC_CHANNEL);//disabilito convertitore D/A
	write_record_syslog(s);
	write_record_syslog("Programma terminato!");
	close_logfile_SD(); //chiudo logfile
	f_close(&syslog_file_object); //chiudo file syslog
	dac_out=0;//azzero tensione in uscita
	ioport_set_pin_level(LED_SD_USE, IOPORT_PIN_LEVEL_HIGH); //spengo led SD_USE
	ioport_set_pin_level(LED_SYSTEM_READY, IOPORT_PIN_LEVEL_HIGH); //spengo led SD_PRESENT
	ioport_set_pin_level(LED_ERROR, IOPORT_PIN_LEVEL_LOW); //accendo led ERROR
	exit(EXIT_SUCCESS);
}
Beispiel #3
0
/**
 * \brief Configure the RTT to generate an alarm at the given time.
 *
 * \param p_rtt Pointer to an RTT instance.
 * \param ul_alarm_time Alarm time.
 *
 * \retval 0 Configuration is done.
 * \retval 1 Parameter error.
 */
uint32_t rtt_write_alarm_time(Rtt *p_rtt, uint32_t ul_alarm_time)
{
	uint32_t flag;

	if (ul_alarm_time == 0) {
		return 1;
	}

	flag = p_rtt->RTT_MR & RTT_MR_ALMIEN;

	rtt_disable_interrupt(RTT, RTT_MR_ALMIEN);

	/* Alarm time = ALMV + 1 */
	p_rtt->RTT_AR = ul_alarm_time - 1;

	if (flag) {
		rtt_enable_interrupt(RTT, RTT_MR_ALMIEN);
	}

	return 0;
}