The problem is using the Analogread(), I can only read the values from ADC up to 10,000 samples/sec which is the maximum of 10kHz for the input signal. I also found an example of using ADC in free mode, which I was able to measure the frequencies up to ~190kHz. Please let me know if you know of any other way to read the values from ADC.
Measuring a signal's frequency via it's amplitude values via an ADC is simply the wrong method. I suspect you will not get anything to work worth using. To measure frequency one counts signal zero crossings for a fixed 'sample time', then store the result and reset the count for the next sample window.