2#if defined(TARGET_RP2040) || defined(TARGET_RP2350)
5#include "../../hardware_api.h"
6#include "./rp2040_mcu.h"
7#include "../../../drivers/hardware_specific/rp2040/rp2040_mcu.h"
10#include "hardware/dma.h"
11#include "hardware/irq.h"
12#include "hardware/pwm.h"
13#include "hardware/adc.h"
19alignas(32)
const uint32_t trigger_value = ADC_CS_START_ONCE_BITS;
95volatile int rp2040_intcount = 0;
97void _adcConversionFinishedHandler() {
99 volatile uint8_t* from = engine.
samples;
133 if (pin>=26 && pin<=29)
153 int enableMask = 0x00;
154 int channelCount = 0;
155 for (
int i = 3; i>=0; i--) {
158 enableMask |= (0x01<<i);
162 adc_set_round_robin(enableMask);
170 if (samples_per_second<1 || samples_per_second>=500000) {
179 dma_channel_config cc1 = dma_channel_get_default_config(
readDMAChannel);
180 channel_config_set_transfer_data_size(&cc1, DMA_SIZE_8);
181 channel_config_set_read_increment(&cc1,
false);
182 channel_config_set_write_increment(&cc1,
true);
183 channel_config_set_dreq(&cc1, DREQ_ADC);
184 channel_config_set_irq_quiet(&cc1,
false);
193 irq_add_shared_handler(DMA_IRQ_0, _adcConversionFinishedHandler, PICO_SHARED_IRQ_HANDLER_DEFAULT_ORDER_PRIORITY);
225 irq_set_enabled(DMA_IRQ_0,
true);
227 for (
int i=0;i<4;i++) {
247 irq_set_enabled(DMA_IRQ_0,
false);
#define SIMPLEFOC_DEBUG(msg,...)
ADCResults getLastResults()
volatile uint8_t samples[4]
volatile ADCResults lastResults
void * _configureADCInline(const void *driver_params, const int pinA, const int pinB, const int pinC=NOT_SET)
float _readADCVoltageInline(const int pinA, const void *cs_params)
const int const int const int pinC