Modification code Arduino AVR vers ARM

Bonjour,
j'utilise (enfin j'essaie) pour mes projets d'utiliser la platine Arduino DUE du fait de sa performance, connexions ,etc. Mais je bloque souvent car les codes trouvés fonctionnent correctement sur plateforme AVR mais bloquent sur plateforme Arduino DUE ARM.
Comment adapter ses codes car je suis débutant en informatique et cela me bloque véritablement mes projets très souvent?
Le dernier en date la lecture d'un BMP388 avec un code simple car celui d'ADAFRUIT bloque ma lecture d'autres capteurs sur le bus I2C.
Voici le lien de la bibliothèque :

Merci de votre aide
Jean-Claude

Un code qui fonctionne bien sur un AVR n'a, à priori, pas de raison de bien fonctionner aussi sur la carte DUE (uc Sam3x8e, Cortex M3), à moins que ce code n'utilise des fonctions de type arduino qui masquent les différences (ex pinmode(), digitalread(), etc...). De plus, la bibliothèque I2C pour arduino n'est pas bien adaptée à la carte DUE.

Conclusion: ce sera du cas par cas, en recherchant soit une bibliothèque publique équivalente développée spécifiquement pour le Sam3x (par exemple Tc_lib, Pwm_lib, etc... voir la liste des bibliothèques sur le sous-forum arduino DUE ou d'autres ailleurs), soit tu prends du temps pour lire et comprendre le datasheet du Sam3x ou/et tu cherches dans le sous-forum DUE des exemples de codes écrits directement avec les registres. Dans tous les cas un investissement en temps sera nécessaire.

Bonjour

Au delà du code, pour ce qui est des modules il faut s'assurer qu'ils peuvent échanger avec la carte DUE des signaux dont le niveau haut est 3,3V, pas 5V

Bonjour,
Oui pour les niveaux de tension j'y fais très attention par contre pour le code dur dur, je m'étais mis sur Arduino car cela me permettais d'envisager des projets intéressants, mais dès lors qu'ils sont un peu lourd ça coince toujours quelque part et cela joue en facteur limitant car pour un maillon cela bloque tout, à moins de posséder une solide formation en informatique qui permette de faire des raccords ça et là.
J'avais essayé tennsy là aussi j'ai renoncé car ça bloque très très vite.
N'ayant pas les compétences en informatique je me demande comment passer les obstacles? Et/ou quelles cartes sont tolérantes et aussi puissante que la DUE avec tous les ports quelle présente.
Faut-il banir l'I2C avec DUE quand c'est instable ou que cela bloque quand il y a plusieurs capteurs ou mémoire et ne faire que de l'SPI?
Le SPI sera-t-il plus stable et tolérant?
Je suis preneur de tous conseils car après des mois de travail je suis bloqué par ce fichu capteur qui bloque tout.
Merci de votre aide

Le protocole SPI est l'un des protocoles les plus simples, ça devrait donc être plus facile. Encore plus simple, s'il n'est pas nécessaire d'avoir une vitesse de transfert importante, c'est l'utilisation des fonctions arduino Shiftout/Shiftin.

Bonjour,
Non je n'ai pas besoin de vitesse importante (relevé de pression atmosphérique toute les seconde) mais comment intégrer ces fonctions Shiftout/Shiftin dans une bibliothèque existante de SPI, car après lecture de ces fonctions il faut rentrer dans de l'informatique de bas niveau pour attaquer surement des adresses précises sur le capteur et là ma méconnaissance de l'informatique pour une lecture de la fiche technique et l'interprétation pour écrire les lignes de code correspondantes me stoppe.
J'ai essayé un tas de bibliothèques mais avec des résultats tout aussi négatifs ;
Exemple : GitHub - MartinL1/BMP388_DEV: An Arduino compatible, non-blocking, I2C/SPI library for the Bosch BMP388 barometer. Includes both interrupt and FIFO operation.
Qui devrait fonctionner sans bloquer (librairie stable); j'ai là aussi ce message à la compilation que je ne comprends pas pour effectuer une éventuelle correction de la librairie .
Message:

C:\Users\jcc\Documents\Arduino\libraries\BMP388_DEV\Device.cpp: In member function 'void Device::notUsingInterrupt(uint8_t)': C:\Users\jcc\Documents\Arduino\libraries\BMP388_DEV\Device.cpp:72:7: error: 'class SPIClass' has no member named 'notUsingInterrupt'   spi->notUsingInterrupt(pinNumber); Utilisé : C:\Users\jcc\Documents\Arduino\libraries\BMP388_DEV exit status 1 Erreur de compilation pour la carte Arduino Due (Programming Port) 

Si cela peut donner des pistes
Merci

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.