Hello, On 10/29/20, Bernd Walter <ti...@cicely7.cicely.de> wrote: > On Thu, Oct 29, 2020 at 08:51:13AM -0300, Alan Carvalho de Assis wrote: >> Hi Bernd, >> >> It was "working" few mont ago. I put working covered by quotes because >> the ADC convertion wasn't linear. I think the calibration process was >> failing. > > arch/arm/src/samd2l2/sam_adc.h was previously named > arch/arm/src/samd2l2/adc.h > With the rename the protector define was updated to be identic to the one > in arch/arm/src/samd2l2/sam_adc.h > https://github.com/apache/incubator-nuttx/commit/6bff1f4df4ae3e4fc21d7d98afdbfdcc855a6ed2 > > No idea what the convention for the fix would be, beside not using the same > protector name. >
Well, the sam_adc.h appears correct and the #ifdef protection appears correct too. >> I tested it on Arduino Zero board (SAMD21). > > Ok - I do have an Arduino Zero board to test on. > The second problem is puzzling me. > For my board code I copied boards/arm/samd2l2/arduino-m0/src/sam_adc.c > It calls adc_register with "/dev/adc0", which calls register_driver), > in which inode_reserve() then fails with EEXIST. > This is common code for all platforms, which fails. > The EEXIST error means that the file already exist and then probably the ADC was registers twice. Maybe sam_adc_setup() was called twice or it is called once but adc_register("/dev/adc0") is called from other place. Try to enable CONFIG_DEBUG_ANALOG_INFO and see if it will give you some hints. BR, Alan