One suggestion could you please reduce the execution time of the ISR. Get the results int the ISR and mark a flag, do the printf action inside the main loop. Also could you try increasing the acquisition time in the code. See sample time (SAMPLE_TIME01) in code.
the printf in the ISR is lazy coding so i can definitely change that.
however the sample time is exactly that which is set in the documentation in the PDL.(section for Cy_SAR_Init() )
so if we think the sample time is an issue, perhaps we should change the default numbers?
The acquisition time should be dependent on the input source, 9 times the RC time constant is the recommended value to be given.
For inputs which are floating we cannot expect the reading to remain constant. But for inputs with proper input signal this should guarantee proper result.