Hello,
1. In the header ADC_Module.h you can find the actual definitions of the conversion and sampling speeds. For the sampling you can see how many ADC clock (ADCK) cycles it adds:
Code:
ADC_VERY_LOW_SPEED is the lowest possible sampling speed (+24 ADCK).
ADC_LOW_SPEED adds +16 ADCK.
ADC_MED_SPEED adds +10 ADCK.
ADC_HIGH_SPEED (or ADC_HIGH_SPEED_16BITS) adds +6 ADCK.
ADC_VERY_HIGH_SPEED is the highest possible sampling speed (0 ADCK added).
For the conversion is a bit more difficult. When you change the conversion speed you mainly change the ADCK frequency. For example, for F_BUS = 48 Mhz (Teensy 3.x default), ADC_CFG1_MED_SPEED sets a ADCK frequency of 6 MHz. Apart from that the different speed setting change the low power (used only at low speeds) and high speed settings (used at high speed).
I also added support to use the internal asynchronous clock (ADACK). Only for the conversion speed you can select: ADC_ADACK_2_4, ADC_ADACK_4_0, ADC_ADACK_5_2 and ADC_ADACK_6_2, where the numbers are the frequency of the ADC clock (ADCK) in MHz and are independent on the bus speed.
If you wan to know more about this you should read the relevant sections of the manual (from 31.4.4.5 to 31.4.4.6.3 of the Teens 3.0 reference manual).
2. The conversion step can take longer or shorter time, use higher or lower resolution, etc.
3. I don't understand the question. The ADC can only read analog pins, not pure digital ones.
The 16 bit resolution is only actually realistic for differential inputs, single-ended inputs are only 12 bit. (see the electrical specifications datasheet for more information).
4. There's no oversampling option! setAveraging(N) only makes the ADC repeat the whole measurement N times. Oversampling would be measuring a signal with a frequency higher than Nyquist, but the ADC simply repeats the measurement as fast as it can. Because oversampling requires knowing the bandwidth of the signal you are trying to measure, it has to be the user who deals with it. If you use a timer (see the example) you can set periodic measurements and store them in a buffer.