On Thu, Oct 29, 2020 at 07:39:16PM -0300, Alan Carvalho de Assis wrote: > Ok, now I understood the issue you found > > Yes, arch/arm/include/samd2l2/sam_adc.h is wrong. > > I think this file shouldn't exit, it doesn't exist to other arches.
OK - I will take a look into this and change it to match other arches. But I like to find the other ADC problem before I rearrange the code. Might take a few days. > Its content should be inside the arch/arm/src/samd2l2/sam_adc.h > > BR, > > Alan > > On 10/29/20, Bernd Walter <ti...@cicely7.cicely.de> wrote: > > On Thu, Oct 29, 2020 at 06:33:46PM -0300, Alan Carvalho de Assis wrote: > >> I don't think it is wrong. > > > > Well - inlcuding and requiring two files with the same protector clearly > > is wrong. > > > >> See: arch/arm/src/stm32/stm32_adc.h > > > > There is no arch/arm/include/stm32/stm32_adc.h > > There is a arch/arm/src/stm32/hardware/stm32_adc.h, which uses > > __ARCH_ARM_SRC_STM32H7_HARDWARE_STM32_ADC_H, so no collision > > > > arch/arm/include/samd2l2/sam_adc.h > > arch/arm/src/samd2l2/sam_adc.h > > Both use the same protector > > There is also arch/arm/src/samd2l2/hardware/samd_adc.h, which uses > > __ARCH_ARM_SRC_SAMD2L2_HARDWARE_SAMD_ADC_H, so no collision with > > this file. > > > > arch/arm/include/samd2l2/sam_adc.h used to be named adc.h with > > a matching protector name and originally had no collision. > > > >> > >> Now look inside boards/arm/stm32/ and you will find many board that > >> includes this file same way. > > > > As I said - there is no arch/arm/include/stm32/stm32_adc.h > > This is likely very unique to those two archs: > > [239]cicely7> ls -al arch/arm/include/*/*adc.h > > -rw-r--r-- 1 ticso 1000 3395 Oct 29 20:42 arch/arm/include/cxd56xx/adc.h > > -rw-r--r-- 1 ticso 1000 2798 Oct 29 20:42 > > arch/arm/include/samd2l2/sam_adc.h > > > > As you can see, the cxd56xx isn't prefixed, which is the same it had been > > for the samd2l2 until 6bff1f4df4ae3e4fc21d7d98afdbfdcc855a6ed2 changed the > > filename and protector name. > > > >> On 10/29/20, Bernd Walter <ti...@cicely7.cicely.de> wrote: > >> > On Thu, Oct 29, 2020 at 05:42:58PM -0300, Alan Carvalho de Assis wrote: > >> >> 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. > >> > > >> > It is correct by itself, but not in the bigger context: > >> > arch/arm/include/samd2l2/sam_adc.c: > >> > ... > >> > #include <arch/chip/sam_adc.h> > >> > ... > >> > #include "sam_adc.h" > >> > > >> > Both included files have the same filename and use the same #define to > >> > protect. > >> > The first gets included and the content of the second is then missing. > >> > > >> >> > >> >> >> 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. > >> > > >> > Thanks you for the hints. > >> > Chaning the path didn't work, but did no further tests today. > >> > > >> >> Try to enable CONFIG_DEBUG_ANALOG_INFO and see if it will give you > >> >> some > >> >> hints. > >> >> > >> >> BR, > >> >> > >> >> Alan > >> > > >> > -- > >> > B.Walter <be...@bwct.de> http://www.bwct.de > >> > Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm. > >> > > > > > -- > > B.Walter <be...@bwct.de> http://www.bwct.de > > Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm. > > -- B.Walter <be...@bwct.de> http://www.bwct.de Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm.