When polling ADC0 and ADC1 occasionally with adc_select_input() and adc_read() the code most times takes between 10 to 12 usec but occasionally takes 37 usec.
The code below is a fuction called by keyboard action for sandbox.
The final code is to poll a voltage within a stepper step cycle. While I can adjust for the longer period, the movement of the stepper would be ~4 times slower for the spurious longer ADC time.
Understand that the ADC is using successive approximations, and there is some inherent variability, but it does not appear to be related to the value, and certainly it is of an order of magnitude.
Any insights as to what may be causing it is much appreciated.
CodeResults of a few keyboard actions:
ADC0 - Value 083a
ADC1 - Value 0843
Readtime 12 usecs
ADC0 - Value 083d
ADC1 - Value 0845
Readtime 12 usecs
ADC0 - Value 083b
ADC1 - Value 0844
Readtime 12 usecs
ADC0 - Value 083c
ADC1 - Value 0843
Readtime 12 usecs
ADC0 - Value 083a
ADC1 - Value 0843
Readtime 12 usecs
ADC0 - Value 083b
ADC1 - Value 0844
Readtime 12 usecs
ADC0 - Value 083a
ADC1 - Value 083a
Readtime 12 usecs
ADC0 - Value 083a
ADC1 - Value 0843
Readtime 10 usecs
ADC0 - Value 083a
ADC1 - Value 0845
Readtime 12 usecs
ADC0 - Value 083a
ADC1 - Value 0843
Readtime 8 usecs
ADC0 - Value 0839
ADC1 - Value 0844
Readtime 12 usecs
ADC0 - Value 083c
ADC1 - Value 0844
Readtime 12 usecs
ADC0 - Value 083a
ADC1 - Value 0844
Readtime 11 usecs
ADC0 - Value 0839
ADC1 - Value 0846
Readtime 12 usecs
ADC0 - Value 083a
ADC1 - Value 0845
Readtime 11 usecs
ADC0 - Value 083a
ADC1 - Value 0845
Readtime 10 usecs
ADC0 - Value 083c
ADC1 - Value 0843
Readtime 11 usecs
ADC0 - Value 083b
ADC1 - Value 0846
Readtime 11 usecs
ADC0 - Value 083c
ADC1 - Value 0843
Readtime 12 usecs
ADC0 - Value 083b
ADC1 - Value 0847
Readtime 11 usecs
ADC0 - Value 0839
ADC1 - Value 0844
Readtime 12 usecs
ADC0 - Value 083b
ADC1 - Value 0843
Readtime 12 usecs
ADC0 - Value 083d
ADC1 - Value 0844
Readtime 11 usecs
ADC0 - Value 083b
ADC1 - Value 0843
Readtime 11 usecs
ADC0 - Value 083c
ADC1 - Value 0844
Readtime 12 usecs
ADC0 - Value 083a
ADC1 - Value 0845
Readtime 11 usecs
ADC0 - Value 083b
ADC1 - Value 0843
Readtime 11 usecs
ADC0 - Value 083b
ADC1 - Value 0845
Readtime 11 usecs
ADC0 - Value 083b
ADC1 - Value 0844
Readtime 12 usecs
ADC0 - Value 083a
ADC1 - Value 0845
Readtime 12 usecs
ADC0 - Value 083b
ADC1 - Value 0845
Readtime 10 usecs
ADC0 - Value 083b
ADC1 - Value 0845
Readtime 37 usecs
The code below is a fuction called by keyboard action for sandbox.
The final code is to poll a voltage within a stepper step cycle. While I can adjust for the longer period, the movement of the stepper would be ~4 times slower for the spurious longer ADC time.
Understand that the ADC is using successive approximations, and there is some inherent variability, but it does not appear to be related to the value, and certainly it is of an order of magnitude.
Any insights as to what may be causing it is much appreciated.
Code
Code:
void Sandbox_ADC (void) { uint16_t adc0_read =0x0000; uint16_t adc1_read =0x0000; uint64_t start_time = 0; uint64_t end_time = 0; // Set Start time start_time = to_us_since_boot (get_absolute_time()); // Time for next step // Select ADC0 adc_select_input(0); // Read ADC adc0_read = adc_read(); // Select ADC1 adc_select_input(1); // Read ADC adc1_read = adc_read(); // Set End time end_time = to_us_since_boot (get_absolute_time()); printf("ADC0 - Value %04x \nADC1 - Value %04x\nReadtime %d usecs\n",adc0_read, adc1_read, uint16_t (end_time-start_time)); ADC0 - Value 083a
ADC1 - Value 0843
Readtime 12 usecs
ADC0 - Value 083d
ADC1 - Value 0845
Readtime 12 usecs
ADC0 - Value 083b
ADC1 - Value 0844
Readtime 12 usecs
ADC0 - Value 083c
ADC1 - Value 0843
Readtime 12 usecs
ADC0 - Value 083a
ADC1 - Value 0843
Readtime 12 usecs
ADC0 - Value 083b
ADC1 - Value 0844
Readtime 12 usecs
ADC0 - Value 083a
ADC1 - Value 083a
Readtime 12 usecs
ADC0 - Value 083a
ADC1 - Value 0843
Readtime 10 usecs
ADC0 - Value 083a
ADC1 - Value 0845
Readtime 12 usecs
ADC0 - Value 083a
ADC1 - Value 0843
Readtime 8 usecs
ADC0 - Value 0839
ADC1 - Value 0844
Readtime 12 usecs
ADC0 - Value 083c
ADC1 - Value 0844
Readtime 12 usecs
ADC0 - Value 083a
ADC1 - Value 0844
Readtime 11 usecs
ADC0 - Value 0839
ADC1 - Value 0846
Readtime 12 usecs
ADC0 - Value 083a
ADC1 - Value 0845
Readtime 11 usecs
ADC0 - Value 083a
ADC1 - Value 0845
Readtime 10 usecs
ADC0 - Value 083c
ADC1 - Value 0843
Readtime 11 usecs
ADC0 - Value 083b
ADC1 - Value 0846
Readtime 11 usecs
ADC0 - Value 083c
ADC1 - Value 0843
Readtime 12 usecs
ADC0 - Value 083b
ADC1 - Value 0847
Readtime 11 usecs
ADC0 - Value 0839
ADC1 - Value 0844
Readtime 12 usecs
ADC0 - Value 083b
ADC1 - Value 0843
Readtime 12 usecs
ADC0 - Value 083d
ADC1 - Value 0844
Readtime 11 usecs
ADC0 - Value 083b
ADC1 - Value 0843
Readtime 11 usecs
ADC0 - Value 083c
ADC1 - Value 0844
Readtime 12 usecs
ADC0 - Value 083a
ADC1 - Value 0845
Readtime 11 usecs
ADC0 - Value 083b
ADC1 - Value 0843
Readtime 11 usecs
ADC0 - Value 083b
ADC1 - Value 0845
Readtime 11 usecs
ADC0 - Value 083b
ADC1 - Value 0844
Readtime 12 usecs
ADC0 - Value 083a
ADC1 - Value 0845
Readtime 12 usecs
ADC0 - Value 083b
ADC1 - Value 0845
Readtime 10 usecs
ADC0 - Value 083b
ADC1 - Value 0845
Readtime 37 usecs
Statistics: Posted by pm490 — Thu May 02, 2024 3:18 pm — Replies 2 — Views 45