I have a periodic timer that seems to be getting delayed or missed.
bios.CLK.instance("PRD_clock").order = 1;
bios.PRD.create("PRD0");
bios.PRD.instance("PRD0").order = 1;
bios.PRD.instance("PRD0").mode = "continuous";
bios.PRD.instance("PRD0").period = 8;
bios.PRD.instance("PRD0").fxn = prog.extern("periodicTimeUpdate");
(Software pipelining (-mu) is off).
On the execution graph I see it run every 8 ms (as designed), except occassionally when I a big gap where it was obviously missed/delayed. In the "gap" I see a lower priority task running. One thing that strikes me as odd is that there are many many SEM_posts of an unknown handle shown on the graph at the time I would expect the periodic timer run.
Can SEM_posts cause a periodic timer to be skipped or dropped? WHat is this DSP/BIOS SEM_post?
Execution Graph Detail Says.
45346624 PRD: begin PRD0 (0x852214ac)
45346625 PRD: end
45346626 SWI: end PRD_swi (0x852213ec) state = done 45346627 SWI: begin KNL_swi (TSK scheduler) (0x852213c0) 45346628 SWI: end KNL_swi (TSK scheduler) (0x852213c0) state = done
45346629 SEM: post <unknown handle> (0x850e2aa0) count = 0
45346630 SEM: post <unknown handle> (0x850e2aa0) count = 0
45346631 SEM: post <unknown handle> (0x850e2aa0) count = 0
45346632 SEM: post <unknown handle> (0x850e2aa0) count = 0
45346633 SEM: post <unknown handle> (0x850e2aa0) count = 0
45346634 SEM: post <unknown handle> (0x850e2aa0) count = 0
45346635 SEM: post <unknown handle> (0x850e2aa0) count = 0
45346636 SEM: post <unknown handle> (0x850e2aa0) count = 0
45346637 SEM: post <unknown handle> (0x850e2aa0) count = 0
45346638 SEM: post <unknown handle> (0x850e2aa0) count = 0
Map file says...
850e2aa0 00000028 bios.a64P : tsk_stup.o64P (.far)