If you are using the Timer Template, then there's no reason to read or write to the Timer directly. It is handled for you by the template.
If you are not using the template, you should at least use the Timer Reload routine from the template.
To maintain a constant frequency that also accounts for interrupt latency, the reload value must be ADDED to the current value in the Timer.
Just reloading a value into the Timer will give a frequency output, but accuracy and consistency will suffer.
There are other ways to ADD the reload value to the Timer, but you must know exactly how many instructions it takes to do the addition.
The routine in the template is already known to take 8 instruction cycles.
The template automatically adjusts for that amount of time.
With the template, if you tell it you want 100hz ... you get 100.0 Hz.
With all of that said ... you still haven't revealed whether you want a Fixed frequency or Variable frequencies?
It makes a huge difference.
Bookmarks