TC1796
Peripheral Units (Vol. 2 of 2)
General Purpose Timer Array (GPTA)
User’s Manual
24-117
V2.0, 2007-07
GPTA, V2.0
Delayed_Filter()
if (FPCk.Filter_Clock[n]) then
if (FPCk.Timer >= FPCk.Compare_Value) then
if (FPCk.Compare_Value == 0) then //by-pass
if (FPCk.Signal_Output.Level != FPCk.Signal_Input[m]) then
generate pulse on FPCk.Signal_Output.Transition
FPCk.Signal_Output.Level = FPCk.Signal_Input[m]
FPCk.Signal_Filtered = FPCk.Signal_Output.Level
endif
else //delay time is over
generate pulse on FPCk.Signal_Output.Transition
FPCk.Signal_Output.Level = !FPCk.Signal_Output.Level
FPCk.Signal_Filtered = FPCk.Signal_Output.Level
endif
FPCk.Timer = 0
else
if (FPCk.Timer != 0) then //delay time is running
if (FPCk.Rising_Edge is detected) then //edge detection done at clock input
FPCk.Rising_Edge_Glitch = 1
else
if (FPCk.Falling_Edge is detected) then //edge detection done at clock input
FPCk.Falling_Edge_Glitch = 1
endif
endif
endif
if (FPCk.Signal_Output.Level != FPCk.Signal_Input[m])
then //expected level
FPCk.Timer ++
else //unexpected level
if (FPCk.Timer != 0) then
if (FPCk.Reset_Timer) then
FPCk.Timer = 0
else
FPCk.Timer --
endif
endif
endif
endif