61 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			61 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#include "os_types.h"
							 | 
						||
| 
								 | 
							
								#include "dbg_io.h"
							 | 
						||
| 
								 | 
							
								#include "iot_diag.h"
							 | 
						||
| 
								 | 
							
								#include "iot_io.h"
							 | 
						||
| 
								 | 
							
								#include "rtc_mon.h"
							 | 
						||
| 
								 | 
							
								#include "gp_timer.h"
							 | 
						||
| 
								 | 
							
								#include "iot_clock.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "rtc_hw.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								uint32_t rtc_mon_int_process(uint32_t cnt, uint32_t st)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    static int i=0, j=0;
							 | 
						||
| 
								 | 
							
								    iot_printf("RTC clk variration exceed thresh hold,status: 0x%x cnt: 0x%x\r\n", st, cnt );
							 | 
						||
| 
								 | 
							
								    i++;
							 | 
						||
| 
								 | 
							
								    if(i%20 == 0)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        if(j){
							 | 
						||
| 
								 | 
							
								           j=0;
							 | 
						||
| 
								 | 
							
								           rtc_tmr_set_comp(4, 0x20000);
							 | 
						||
| 
								 | 
							
								        }else{
							 | 
						||
| 
								 | 
							
								           rtc_tmr_set_comp(4, 0x50000);
							 | 
						||
| 
								 | 
							
								           j=1;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        rtc_tmr_load_set(4, 1);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    iot_delay_us(10000);
							 | 
						||
| 
								 | 
							
								    rtc_tmr_load_set(4, 0);
							 | 
						||
| 
								 | 
							
								    rtc_mon_start(1);
							 | 
						||
| 
								 | 
							
								    return 0;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int IRAM_ATTR main(void)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    gp_timer_init();
							 | 
						||
| 
								 | 
							
								    gp_timer_set(0, 1*10000000, 1);
							 | 
						||
| 
								 | 
							
								    gp_timer_start(0);
							 | 
						||
| 
								 | 
							
								    dbg_uart_init();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    rtc_tmr_set_value(4, 0xffffffff);
							 | 
						||
| 
								 | 
							
								    rtc_tmr_mode_set(4,1);
							 | 
						||
| 
								 | 
							
								    rtc_tmr_set_load_mode(4,0);
							 | 
						||
| 
								 | 
							
								    rtc_tmr_en(4, 1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    rtc_mon_cfg_threshold(0x3f);
							 | 
						||
| 
								 | 
							
								    rtc_mon_cfg_cycle(7);
							 | 
						||
| 
								 | 
							
								    rtc_mon_cfg_type(CONT_MON);
							 | 
						||
| 
								 | 
							
								    rtc_mon_int_init(rtc_mon_int_process);
							 | 
						||
| 
								 | 
							
								    rtc_mon_start(1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    while(1)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        iot_delay_us(1000000);
							 | 
						||
| 
								 | 
							
								        iot_printf("RTC MONITOR ...cfg: 0x%x  rtc_tmr0 current cnt:0x%x\r\n", rtc_mon_get_cfg(),rtc_tmr_get_curr_value(4));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return 0;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 |