Why is this signal considered to be uninitialized?
You never initialized counter, so the simulator can't tell whether or not ready is being driven in the cntr process. This  U state overrides the drive from the rst_pr process.

Note that this is a problem only in the simulator. IRL (in real life), the counter will always have a definite value, even if you don't know what it is, and therefore, you'll know whether ready is being driven or not.