Is there any method Of directly stopping timer0 in Atmega32 Through hardware and read the timercounter0
I would suggest You to use the ICP Method.
When the Method is activated and an edge ( adjustible ) appears on the ICP Pin, the actual TCNT value will be copied into the ICP Register without any delay.
In an ICP Interrupt routine it can be read out and stored for further processing. You also can read it out in Main Routine when the loop time is short enough.
The TCNT0 count along while doing this.
I think that is one of the most exact time measureing methods.
When change the ICP interrupt sensing in the ICP Interrupt routine You can measure pulse length and pause length - when You need that.
To get a value between 2 Pulses You can subtract the previous result from the actual, without manipulation of the TCNT register.
Be a little careful - The timer 0 is only an 8 Bit counter that only can count up to 255 then it begins again at 0.
When the TCNT period is to short You can use the TIMER 1 that is an 16Bit Counter.
Another Method to avoid overruns is to Count up a Variable in the Timer Overflow Interrupt.
Yet another Method is to cascade 2 Counters - First Counter give Out a Pulse on Overrun.
The second Counter count up with this pulses ( Hardware Bridge between 2 Pins ). By usage of this Method You get an 24Bit Counter ( The Idea is from a project in the ELECTOR Magazine ).