You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Mi sta capitando una cosa strana, stranissima.
In un piccolo sketch leggo il valore ADC1 utilizzando il DMA in modo continuous tramite la funzione adc_continuous_read(...).
.....
adc_config.max_store_buf_size = 2048,
adc_config.conv_frame_size = 256,
adc_pattern[0].atten = ADC_ATTEN_DB_0;
adc_pattern[0].channel = ADC_CHANNEL_0;
adc_pattern[0].unit = ADC_UNIT_1;
adc_pattern[0].bit_width = ADC_BITWIDTH_9;
....
La cosa strana è questa:
su ADC_CHANNEL_0 tutto ok
sugli altri canali, ho provato tutti quelli che mette a disposizione ADC1, succede questo:
si leggono dei valori fuori range di questo tipo
ADC1_CHANNEL_3 restituisce valori da 12799a 12288 (la differenza è circa 512)
ADC1_CHANNEL_6 restituisce valori da 24576 a 25087(la differenza è circa 512)
Cosa analoga, con valori crescenti, per gli altri canali.
Visualizzando a byte i valori letti si vede che:
il byte LSB è sempre corretto (da 0 a 255)
al byte MSB viene stranamente sommato un valore che corrisponde a:
value (in hex) del ADC1_CHANNEL_x moltiplicato per 0x10
Ad esempio, ADC1_CHANNEL_3 ha value 3, ad MSB viene sommato 0x30
e così via per gli altri canali.
L'unico che funziona è ADC1_CHANNEL_0 il cui value è=0.
Qualche suggerimento
Ho già ridotto all'osso lo sketch, se serve lo posto
grazie
The text was updated successfully, but these errors were encountered:
Mi sta capitando una cosa strana, stranissima.
In un piccolo sketch leggo il valore ADC1 utilizzando il DMA in modo continuous tramite la funzione adc_continuous_read(...).
.....
adc_config.max_store_buf_size = 2048,
adc_config.conv_frame_size = 256,
adc_pattern[0].atten = ADC_ATTEN_DB_0;
adc_pattern[0].channel = ADC_CHANNEL_0;
adc_pattern[0].unit = ADC_UNIT_1;
adc_pattern[0].bit_width = ADC_BITWIDTH_9;
....
La cosa strana è questa:
Cosa analoga, con valori crescenti, per gli altri canali.
Visualizzando a byte i valori letti si vede che:
value (in hex) del ADC1_CHANNEL_x moltiplicato per 0x10
Ad esempio, ADC1_CHANNEL_3 ha value 3, ad MSB viene sommato 0x30
e così via per gli altri canali.
L'unico che funziona è ADC1_CHANNEL_0 il cui value è=0.
Qualche suggerimento
Ho già ridotto all'osso lo sketch, se serve lo posto
grazie
The text was updated successfully, but these errors were encountered: