Marcel H. schrieb:
> /*
> * ADC samples buffer.
> */
> static adcsample_t samples1[ADC_GRP1_NUM_CHANNELS * ADC_GRP1_BUF_DEPTH];
>
Hi Marcel,
samples1 ist dein buffer da stehen die samples drin, darüber kannste n
Mittelwert bilden oder die Werte wie auch immer auswerten.
Bei deinen Einstellungen hast du also die letzten 8 Werte in dem Puffer
stehen. Oder du reduzierst ADC_GRP1_BUF_DEPTH auf 1 und wertest einfach
diesen einen Wert zyklisch aus.
Wenn es ganz schön machen willst machst das in der Callback des ADC
Treibers.
1 | static void adccallback(ADCDriver *adcp, adcsample_t *buffer, size_t n) {
|
2 | if ( buffer[0] >100 )
|
3 | palSetPad(GPIOD, GPIOD_LED3);
|
4 |
|
5 | }
|
6 |
|
7 | /*
|
8 | * ADC conversion group.
|
9 | * Mode: Linear buffer, 4 samples of 2 channels, SW triggered.
|
10 | * Channels: IN11 (48 cycles sample time)
|
11 | * Sensor (192 cycles sample time)
|
12 | */
|
13 | static const ADCConversionGroup adcgrpcfg1 = {
|
14 | FALSE,
|
15 | ADC_GRP1_NUM_CHANNELS,
|
16 | adccallback,
|
17 | NULL,
|
18 | 0, /* CR1 */
|
19 | ADC_CR2_SWSTART, /* CR2 */
|
20 | ADC_SMPR1_SMP_AN11(ADC_SAMPLE_3),
|
21 | 0, /* SMPR2 */
|
22 | ADC_SQR1_NUM_CH(ADC_GRP1_NUM_CHANNELS),
|
23 | 0, /* SQR2 */
|
24 | ADC_SQR3_SQ1_N(ADC_CHANNEL_IN11)
|
25 | };
|
Mit der Callback und den Settings des Kanals sollte das gehen.