Hi
I suspect that your problem is to do with clock-domain timing.
The technique looks to be essentially correct since it is possible to set the CNT value by writing the CNTIN register and transferring it to the CNT value with a 'dummy' write (also with the timer clock stopped ).
If the timer module is being clocked from a different clock than the CPU it may be that the sequence
CNTIN = lo_word;
CNT = lo_word;
has not completed when the CPU sets CNTIN to 0 again. This would mean that the load trigger would start but the CNTIN has been changed again before it propogates to the latch cycle in the timer block.
Try doing something like
CNTIN = lo_word;
do {
CNT = lo_word;
} while (CNT != low_word);
CNTIN = 0;
Regards
Mark