Adapter les bibliothèque pour Arduino M0

Bonjour à tous,

Je suis récemment passer d'un Arduino UNO à un M0 et quand je veux compiler mon code pour le M0, une série d'erreur concernant les bibliothèques que je ne comprend pas apparaissent :

Les options de compilation ont été modifiées, tout sera recompilé
ATTENTION : la bibliothèque SparkFun_MAG3110_Breakout_Board_Arduino_Library-master prétend être exécutable sur la (ou les) architecture(s) (avr) et peut être incompatible avec votre carte actuelle qui s'exécute sur (samd).
In file included from C:\Users\NVaudaux\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.1.0/CMSIS/Device/ATMEL/samd21/include/samd21.h:69:0,

                 from C:\Users\NVaudaux\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.1.0/CMSIS/Device/ATMEL/samd.h:105,

                 from C:\Users\NVaudaux\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.1.0/CMSIS/Device/ATMEL/sam.h:470,

                 from C:\Users\NVaudaux\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.6.15\cores\arduino/Arduino.h:48,

                 from Z:\Z-Magnétomètre-NV\Boitier Multi\Magnetometre_v2.1\Magnetometre_v2.1.ino:1:

C:\Users\NVaudaux\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.1.0/CMSIS/Device/ATMEL/samd21/include/samd21g18a.h:487:38: error: expected ')' before '*' token

 #define RTC               ((Rtc      *)0x40001400UL) /**< \brief (RTC) APB Base Address */

                                      ^

C:\Program Files (x86)\Arduino\libraries\simpleRTC/simpleRTC.h:61:18: note: in expansion of macro 'RTC'

 extern simpleRTC RTC;

                  ^

C:\Users\NVaudaux\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.1.0/CMSIS/Device/ATMEL/samd21/include/samd21g18a.h:487:38: error: expected ')' before '*' token

 #define RTC               ((Rtc      *)0x40001400UL) /**< \brief (RTC) APB Base Address */

                                      ^

C:\Program Files (x86)\Arduino\libraries\simpleRTC/simpleRTC.h:61:18: note: in expansion of macro 'RTC'

 extern simpleRTC RTC;

De ce que j'ai pu comprendre c'est parce que le microcontrôleur du UNO et du M0 ne sont pas les mêmes, mais je ne sais pas comment les adapter. Ou peut être faut-il changer completement les bibliothèques... Je n'en ai aucune idée, donc si quelqu'un a des idées ou s'est déjà retrouver confronter à ce problème, je suis preneur.

En vous remerciant,
Nathan

De nombreuses bibliothèques ont câblé en dur des spécificités matérielles des ATmega328P ou ATmega2560

la carte M0 est conçue autour de l'Atmel’s SAMD21 MCU (un coeur 32-bit ARM Cortex M0+) qui est vraiment différent d'une architecture 8 bit (plusieurs SERCOM configurables entre autre)

Donc c'est du cas par cas, faut aller voir si la librairie que vous utilisez est compatible

D'accord, merci pour la réponse. Mais du coup je peux savoir si la librairie est compatible ? et si elle ne l'est pas comment faire ?

Si ça peut servir, voici la liste des librairies que j'utilise :

#include <Arduino.h>              // Intégration des librairies contenant les fonctions utiles à l'application.
#include <Wire.h>                 //
#include <simpleRTC.h>            //
#include <math.h>                 //
#include <SdFat.h>                //
#include <SparkFun_MAG3110.h>     //
#include <lcd_I2C.h>              //
#include <Streaming.h>            //
#include <Printable.h>            //

il faut aller voir la page de l'auteur de la librairie pour voir s'il/elle mentionne avoir testé sur M0, tester par vous même en utilisant les codes d'exemple sinon.

Si ça ne fonctionne pas, il faut modifier la librairie, comprendre où sont les dépendances à une autre architecture et faire les modifications pour les adapter à la nouvelle. il n'y a pas d'outil magique pour cela

OK super, je sens que je vais m'amuser...

Merci pour les infos

creusez un peu le sujet de l'I2C sur le M0, c'est sans doute là qu'il va falloir bosser un peu

d'accord, je vais regarder ça.

Et est-ce que vous auriez un lien où je pourrais apprendre à reconnaître et modifié les dépendance à une architecture ? parce que je ne m'y connais absolument pas la dedans...

J-M-L:
c'est sans doute là qu'il va falloir bosser un peu

Doux euphémisme quand on voit les 1111 pages de la datasheet des SAM D21 :slight_smile:

JML a tout dit.

Je l'ai souvent répété ici, l'abus d'utilisation des bibliothèques n'est pas une bonne chose.

Mieux vaut passer des soirées a lire des datasheet et se constitué un programme "squelette" puis l'adapter à la plateforme voulue que d'utiliser du tout prêt.

Cela offre plus de flexibilité quand on souhaite la changer.