Compass calibration

Post here first, or if you can't find a relevant section!
Post Reply
nawasaqi
Posts: 20
Joined: Wed Dec 22, 2021 7:06 pm

Compass calibration

Post by nawasaqi »

Hi everyone, I have such a problem. I'm trying to run this code:
https://github.com/jremington/MPU-9250- ... 50_cal.ino

however i am getting a compile error on stm32.
Can anyone help me how could i run it on stm32f411 ???



Code: Select all

C:\Users\backu\OneDrive\Dokumenty\Arduino\libraries\I2Cdev\I2Cdev.cpp: In static member function 'static int8_t I2Cdev::readBytes(uint8_t, uint8_t, uint8_t, uint8_t*, uint16_t)':
C:\Users\backu\OneDrive\Dokumenty\Arduino\libraries\I2Cdev\I2Cdev.cpp:276:75: error: no matching function for call to 'min(uint8_t&, int)'
  276 |             for (uint8_t k = 0; k < length; k += min(length, BUFFER_LENGTH)) {
      |                                                                           ^
In file included from c:\users\backu\appdata\local\arduino15\packages\stm32\tools\xpack-arm-none-eabi-gcc\9.2.1-1.1\arm-none-eabi\include\c++\9.2.1\algorithm:62,
                 from C:\Users\backu\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/wiring_constants.h:26,
                 from C:\Users\backu\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/wiring.h:34,
                 from C:\Users\backu\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/Arduino.h:36,
                 from C:\Users\backu\OneDrive\Dokumenty\Arduino\libraries\I2Cdev\I2Cdev.h:74,
                 from C:\Users\backu\OneDrive\Dokumenty\Arduino\libraries\I2Cdev\I2Cdev.cpp:44:
c:\users\backu\appdata\local\arduino15\packages\stm32\tools\xpack-arm-none-eabi-gcc\9.2.1-1.1\arm-none-eabi\include\c++\9.2.1\bits\stl_algo.h:3450:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)'
 3450 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
c:\users\backu\appdata\local\arduino15\packages\stm32\tools\xpack-arm-none-eabi-gcc\9.2.1-1.1\arm-none-eabi\include\c++\9.2.1\bits\stl_algo.h:3450:5: note:   template argument deduction/substitution failed:
C:\Users\backu\OneDrive\Dokumenty\Arduino\libraries\I2Cdev\I2Cdev.cpp:276:75: note:   mismatched types 'std::initializer_list<_Tp>' and 'unsigned char'
  276 |             for (uint8_t k = 0; k < length; k += min(length, BUFFER_LENGTH)) {
      |                                                                           ^
In file included from c:\users\backu\appdata\local\arduino15\packages\stm32\tools\xpack-arm-none-eabi-gcc\9.2.1-1.1\arm-none-eabi\include\c++\9.2.1\algorithm:62,
                 from C:\Users\backu\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/wiring_constants.h:26,
                 from C:\Users\backu\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/wiring.h:34,
                 from C:\Users\backu\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/Arduino.h:36,
                 from C:\Users\backu\OneDrive\Dokumenty\Arduino\libraries\I2Cdev\I2Cdev.h:74,
                 from C:\Users\backu\OneDrive\Dokumenty\Arduino\libraries\I2Cdev\I2Cdev.cpp:44:
c:\users\backu\appdata\local\arduino15\packages\stm32\tools\xpack-arm-none-eabi-gcc\9.2.1-1.1\arm-none-eabi\include\c++\9.2.1\bits\stl_algo.h:3444:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)'
 3444 |     min(initializer_list<_Tp> __l)
      |     ^~~
c:\users\backu\appdata\local\arduino15\packages\stm32\tools\xpack-arm-none-eabi-gcc\9.2.1-1.1\arm-none-eabi\include\c++\9.2.1\bits\stl_algo.h:3444:5: note:   template argument deduction/substitution failed:
C:\Users\backu\OneDrive\Dokumenty\Arduino\libraries\I2Cdev\I2Cdev.cpp:276:75: note:   mismatched types 'std::initializer_list<_Tp>' and 'unsigned char'
  276 |             for (uint8_t k = 0; k < length; k += min(length, BUFFER_LENGTH)) {
      |                                                                           ^
In file included from c:\users\backu\appdata\local\arduino15\packages\stm32\tools\xpack-arm-none-eabi-gcc\9.2.1-1.1\arm-none-eabi\include\c++\9.2.1\algorithm:61,
                 from C:\Users\backu\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/wiring_constants.h:26,
                 from C:\Users\backu\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/wiring.h:34,
                 from C:\Users\backu\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/Arduino.h:36,
                 from C:\Users\backu\OneDrive\Dokumenty\Arduino\libraries\I2Cdev\I2Cdev.h:74,
                 from C:\Users\backu\OneDrive\Dokumenty\Arduino\libraries\I2Cdev\I2Cdev.cpp:44:
c:\users\backu\appdata\local\arduino15\packages\stm32\tools\xpack-arm-none-eabi-gcc\9.2.1-1.1\arm-none-eabi\include\c++\9.2.1\bits\stl_algobase.h:246:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  246 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
c:\users\backu\appdata\local\arduino15\packages\stm32\tools\xpack-arm-none-eabi-gcc\9.2.1-1.1\arm-none-eabi\include\c++\9.2.1\bits\stl_algobase.h:246:5: note:   template argument deduction/substitution failed:
C:\Users\backu\OneDrive\Dokumenty\Arduino\libraries\I2Cdev\I2Cdev.cpp:276:75: note:   deduced conflicting types for parameter 'const _Tp' ('unsigned char' and 'int')
  276 |             for (uint8_t k = 0; k < length; k += min(length, BUFFER_LENGTH)) {
      |                                                                           ^
In file included from c:\users\backu\appdata\local\arduino15\packages\stm32\tools\xpack-arm-none-eabi-gcc\9.2.1-1.1\arm-none-eabi\include\c++\9.2.1\algorithm:61,
                 from C:\Users\backu\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/wiring_constants.h:26,
                 from C:\Users\backu\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/wiring.h:34,
                 from C:\Users\backu\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/Arduino.h:36,
                 from C:\Users\backu\OneDrive\Dokumenty\Arduino\libraries\I2Cdev\I2Cdev.h:74,
                 from C:\Users\backu\OneDrive\Dokumenty\Arduino\libraries\I2Cdev\I2Cdev.cpp:44:
c:\users\backu\appdata\local\arduino15\packages\stm32\tools\xpack-arm-none-eabi-gcc\9.2.1-1.1\arm-none-eabi\include\c++\9.2.1\bits\stl_algobase.h:198:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  198 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
c:\users\backu\appdata\local\arduino15\packages\stm32\tools\xpack-arm-none-eabi-gcc\9.2.1-1.1\arm-none-eabi\include\c++\9.2.1\bits\stl_algobase.h:198:5: note:   template argument deduction/substitution failed:
C:\Users\backu\OneDrive\Dokumenty\Arduino\libraries\I2Cdev\I2Cdev.cpp:276:75: note:   deduced conflicting types for parameter 'const _Tp' ('unsigned char' and 'int')
  276 |             for (uint8_t k = 0; k < length; k += min(length, BUFFER_LENGTH)) {
      |                                                                           ^
exit status 1
User avatar
fpiSTM
Posts: 1738
Joined: Wed Dec 11, 2019 7:11 pm
Answers: 91
Location: Le Mans
Contact:

Re: Compass calibration

Post by fpiSTM »

Issue is well explained by the compiler:

Code: Select all

C:\Users\backu\OneDrive\Dokumenty\Arduino\libraries\I2Cdev\I2Cdev.cpp: In static member function 'static int8_t I2Cdev::readBytes(uint8_t, uint8_t, uint8_t, uint8_t*, uint16_t)':
C:\Users\backu\OneDrive\Dokumenty\Arduino\libraries\I2Cdev\I2Cdev.cpp:276:75: error: no matching function for call to 'min(uint8_t&, int)'
  276 |             for (uint8_t k = 0; k < length; k += min(length, BUFFER_LENGTH)) {
min() required to compare two value of the same type. which is not the case here.

So simply cast them to fix the issue here:
https://github.com/jremington/MPU-9250- ... v.cpp#L276

as explain here. An issue should be open to the MPU-9250-AHRS to fix this to avoid having this question later...
nawasaqi
Posts: 20
Joined: Wed Dec 22, 2021 7:06 pm

Re: Compass calibration

Post by nawasaqi »

The author does not answer but I used this I2CDEV library and it compiled with no problem. It is newer:

https://github.com/jrowberg/i2cdevlib/t ... ino/I2Cdev
Post Reply

Return to “General discussion”