10 mV spikes in adc readings
Since your charge controller is probably doing bursts of current into the battery you are getting large voltage changes across the battery (may be greater than a volt).
If the switching regulator you are using as the power supply for your MCU has insufficient power supply rejection ratio, then you will get variations in your power supply to the MCU.    

You may also be using the MCU power supply to provide your A/D reference voltage (you don't say in the question) and this will produce noise on your conversions. 

You should:


Use a shunt regulator to provide your A/D reference. Something like a tL430 series shunt would work well. Run your MCU at say 5.2V and the shunt regulator to produce the A/D reference.  
Use a LDO linear regulator for the final stage of the power supply. For example use a switching regulator to go from 12V to 6V then an LDO to go from 6V to 5V.