So is there only ever 1 frequency at a time? or more?
If there's only one, you can easily get the frequency by implementing a zero-crossing detector (with a bit of hyteresis). Then for a set number of samples you can count the zero crossings (or for a set number of zero crossings you can count the number of samples) - from this you can calculate the frequency.
The 'zero' is of course the mid-point/average of the signal. You don't need to store the actual ADC samples for this.