| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- /*******************************************************************************
- 版权所有:
- 版本号: 1.00
- 文件名: samint.c
- 生成日期: 2008.9.18
- 作者:
- 功能说明:采样中断处理
-
- 修改日志:
- 日志1:
- 修改者:
- 修改日期:
- 修改内容:
- 修改原因:
- ****************************************************************************/
- #include "head.h"
- #include "goose.h"
- /**************************************************************************
- 函数名称:SamIntFunction
- 函数版本:1.00
- 作者:
- 创建日期:2008.8.8
- 函数功能说明:采样中断调用函数 (经示波器测量,该中断执行时间为21us左右)
- 输入参数:无
- 输出参数:无
- 返回值: 无
- 函数扇入清单:
- ***************************************************************************/
- extern bool is_goose_enable(void);
- int pit_156us_main(int mod)
- {
- // 串口中断处理
- #if defined (CPU_COLDFIRE) || defined (CPU_AM335X)
- uart_isr();
- #endif
- // 突变量启动必须放在pit_156us_main函数中,不能放入ADC中断中,
- // 否则将导致定值参数没有初始化好,就进行保护逻辑判断。
- if(g_adc_sync == 1)
- {
- //protect_tbl_qd();
- }
- #ifdef XDL_ZT //小电流接地
- // 小电流突变量启动不受g_adc_sync保护,避免频率跟踪的封锁。
- // 由于pit_156us_main启动时所有其它条件都初始化好了,且目前模块退出时已增加
- // 此中断的退出,所以因为没啥问题。
- xdl_tbl_qd(mod);
- #endif
- //fa_g_156us();
- if(mod == 3)
- {
- #ifndef CPU_FUXI
- dTCounter++; // 系统计数器
- #endif
- }
- #ifdef __IEC61850_GOOSE_FUNC__
- // sunxi 20190421 added start
- if(is_goose_enable())
- {
- static unsigned char goose_cnt = 0; // sunxi 20190421
- fa_g_packet(false); // sunxi 20190423 从下面的判断移到上面来
- goose_cnt ++;
- if(goose_cnt == 3)
- {
- goose_cnt = 0;
- goose_recv_wakeup();// sunxi 20180523 added
- }
- }
- // sunxi 20190421 added end
- #endif
- return 0;
- }
- /**************************************************************************
- 函数名称:SamIntFunction
- 函数版本:1.00
- 作者:
- 创建日期:2008.8.8
- 函数功能说明:5毫秒中断调用函数
- 输入参数:无
- 输出参数:无
- 返回值: 无
- 函数扇入清单:
- ***************************************************************************/
- void soe_test(void);
- #ifdef DC_OLLECT_NOT_156US_LOOPC
- void GetDcAdcValue(int dstep);
- #endif
- int pit_5ms_main(int dummy)
- {
- soe_test();
- #ifdef BSP_CAN_ENABLE
- can_app_timing();
- #endif
- // 保护巡检
- // ADC所有采样点准备好了,sw_init成功,才能进入保护。
- // g_adc_sync在两种情况下起作用,1、系统初始化;2、采样频率改变。
- if(g_adc_sync == 1 && g_sw_init == 1)
- {
- protect_polling();
- }
-
- //开出,放在保护巡检之后,确保及时开出
- dido_do_poll();
- // 频率跟踪
- #ifndef CPU_FUXI
- adc_freq_trace();
- #endif
- // 可编程逻辑
- plc_scan(1);
- // 主板直接控制的灯输出
- led_polling_5ms();
- // RTC时钟芯片时间更新,放在5ms中断的最后
- rtc_time_write_5ms();
- #ifdef CPU_COLDFIRE
- #ifdef DC_OLLECT_NOT_156US_LOOPC
- GetDcAdcValue(0);
- #endif
- #endif
- return 0;
- }
-
-
|