Problème avec bibliothèque Servo sur carte Generic SPT32F407V Serie

Bonsoir,

je tourne en rond depuis quelques jours déjà sur un truc qui doit être simple, mais je ne m'en sort pas :smiling_face_with_tear:

Mon soucis vient de la bibliothèque Servo.
Si je charge l'exemple Sweep et que je compile pour une carte UNO, ça fonctionne.
Si je sélectionne la carte Generic SPT32F407V Serie, j'ai un message d'erreur concernant le fichier types.h qui est absent.

In file included from /home/bernique/Arduino/libraries/Servo/src/Servo.h:69:0,
                 from /tmp/.arduinoIDE-unsaved202495-934119-1ig31hx.o13/Sweep/Sweep.ino:10:
/home/bernique/Arduino/libraries/Servo/src/stm32f4/ServoTimers.h:35:19: fatal error: timer.h: No such file or directory
 #include "timer.h"
                   ^
compilation terminated.
exit status 1

Compilation error: exit status 1

/
En y regardant de plus près, le fichier ServoTimers.h dans mon /home/Arduino/libraries/Servo/src/stm32f4 appelle bien #include "types.h"

J'ai essayé de placer un fichier types.h trouvé sur le web dans le répertoire ci-dessus et/ou dans le répertoire du programme, mais ça ne résoud rien.

Si l'un de vous à une idée, je suis preneur :smiley:

Enfin là, le message d'erreur te dit qu'il ne connait pas timer.h

ben zut alors, je me suis mélangé les pinceaux :rofl:
Bon faut que je trouve le fichier et je le mets à quel endroit: bibliothèque ou dossier du programme?

EDIT: circonstance atténuante, il manquait au début le types.h puis ensuite le timer.h... bon maintenant encore plein d'autres :joy:

Je suis surpris ce sont normalement des fichiers du package de base on a pas besoin de les ajouter.
D'ailleurs, le nom du fichier dans le #include devrait devrait être entre <>

j'y suis depuis 20 minutes à créer une arborescence avec les fichiers manquants dans mon home/Arduino/libraries/Servo/src/stm32f4, et c'est sans fin!

Je me demande si je n'ai pas une installation merdeuse de l'IDE2.0 Arduino.

Pour la petite histoire, j'ai refait une installation clean de Ubuntu Mate 24.01.1 suite à plantage de la migration automatique depuis 22.01, mais j'ai comme mon /home est sur une partition séparée, il est de ce fait resté intact depuis la 22.01.
Du coup, pas sûr que le AppImage tout frais apprécie l'historique des bibliothèques antérieures.

Maintenant, avec ces AppImages, je ne vois pas comment refaire une installation propre comme on le pouvait avec apt remove

Un appImage sous Linux quelle horreur !
Tu te donnes des bâtons pour te faire battre.

C'est pourtant simple :

  1. Tu télécharges le zip de l'IDE.
  2. Tu crées un répertoire neuf pour l'y dézipper
  3. Si tu veux tu crées un lanceur sur le bureau pour le fichier /répertoire/arduino-ide

Et pis c'est tout.
Tu peux aussi au préalable détruire le fichier ~/.arduino15
C'est souvent lui qui a des soucis.

Et quand tu veux faire du ménage :

  1. tu détruis ~/.arduino15
  2. tu détruis le répertoire où tu avais dezippé l'IDE.

Cerise sur le gâteau : tu peux avoir autant de version que tu veux du moment qu'elles ont toutes leur répertoire personnel.

je partage, j'ai voulu essayer vue la mode actuelle mais promis je ne recommencerai pas et j'irai compiler du C en ligne de commande sous gcc pour me ressourcer :yum:

Téléchargement en cours (c'est très long, la fibre n'existe pas sur mon volcan)...

Merci

bon ben ça n'a rien changé après avoir téléchagé le zip et viré le ~/.arduino15, j'ai toujours la même erreur reportée au début du post!

Je partage la remarque de @fdudnews au sujet des chevrons et des guillemets.
As tu confiance dans ta bibliothèque ?

pas plus que d'habitude, je l'ai chargée depuis le gestionnaire avec le mot clé servo

je pense que mon soucis vient de la bibliothèque de la carte car ça compile avec une UNO sans soucis

Disons que la bibliothèque n’est probablement pas adaptée au microcontroleur de la carte.

Sur l’ide arduino je ne sais pas, avec platformIO, c’est un autre de ses avantages, le gestionnaire de bibliothèques indique les micro possibles pour chaque bibliothèque. Aucune prise de tête c’est clairement indiqué.

il me semble bien pourtant avoir lu des exemples de STM32 pilotant un servo avec cette bibliothèque, mais j'ai peut-êre mal interprété ou extrapolé à tord à mon processeur.
J'avais aussi essayé la biblio PRDC_ServoHT clairement orientée STM32 (avec pwm hardware), et c'était encore pire côté messages d'erreurs.

Je vais continuer à investiguer pour trouver une solution, merci pour l'aide (et regarder platformio aussi, je ne connais pas)

Bonsoir,

j'ai passé une bonne partie de l'après-midi à chercher une biblothèque compatible qui fonctionne sur mon installation, mais je collectionne les messages d'erreur de plus en plus hésotériques.

Du coup, j'ai essayé platformio pour découvrir l'interface et voir si je peux en apprendre plus.

A priori, ça compile sans erreur en utilisant la bibliothèque Servo.h classique Arduino.
Cela militerait pour un problème d'IDE Arduino chez moi, ce que tendrait à soutenir les erreurs avec d'autres bibliothèque essayées.

Il reste un gros hic: impossible d' uploader sur le µC, avec ce message d'erreur à la clef que je ne parviens pas à interpréter:

Processing genericSTM32F407VET6 (platform: ststm32; board: genericSTM32F407VET6; framework: arduino)
------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/ststm32/genericSTM32F407VET6.html
PLATFORM: ST STM32 (17.6.0) > STM32F407VE (192k RAM. 512k Flash)
HARDWARE: STM32F407VET6 168MHz, 128KB RAM, 502.23KB Flash
DEBUG: Current (stlink) External (jlink, stlink)
PACKAGES: 
 - framework-arduinoststm32 @ 4.20801.240815 (2.8.1) 
 - framework-cmsis @ 2.50900.0 (5.9.0) 
 - tool-dfuutil @ 1.11.0 
 - tool-dfuutil-arduino @ 1.11.0 
 - tool-openocd @ 3.1200.0 (12.0) 
 - tool-stm32duino @ 1.0.1 
 - toolchain-gccarmnoneeabi @ 1.120301.0 (12.3.1)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 14 compatible libraries
Scanning dependencies...
Dependency Graph
|-- Servo @ 1.1.2
Building in release mode
Checking size .pio/build/genericSTM32F407VET6/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [          ]   1.2% (used 1524 bytes from 131072 bytes)
Flash: [          ]   3.3% (used 16796 bytes from 514288 bytes)
Configuring upload protocol...
AVAILABLE: dfu, jlink, stlink
CURRENT: upload_protocol = stlink
Uploading .pio/build/genericSTM32F407VET6/firmware.elf
xPack Open On-Chip Debugger 0.12.0-01004-g9ea7f3d64-dirty (2023-01-30-15:03)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
debug_level: 1

hla_swd
none separate

[stm32f4x.cpu] halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x08000fa8 msp: 0x10010000
Error: jtag status contains invalid mode value - communication failure
Polling target stm32f4x.cpu failed, trying to reexamine
Examination failed, GDB will be halted. Polling again in 100ms
** Programming Started **
Error: jtag status contains invalid mode value - communication failure
Polling target stm32f4x.cpu failed, trying to reexamine
Examination failed, GDB will be halted. Polling again in 300ms
Error: auto_probe failed
embedded:startup.tcl:1516: Error: ** Programming Failed **
in procedure 'program' 
in procedure 'program_error' called at file "embedded:startup.tcl", line 1581
at file "embedded:startup.tcl", line 1516
*** [upload] Error 1
========================= [FAILED] Took 2.08 seconds

J'ai peut-être mal configuré platformio?
Merci d'avance pour les retours

Je n'ai jamais essayé un STM32F407VET6 avec platformIO.
As tu regardé dans la doc de PIO ?

Mots de recherche (duckduckgo) : "platformio stm32f407"
Réponse :
https://docs.platformio.org/en/latest/boards/ststm32/genericSTM32F407VET6.html

oui j'ai déjà parcouru cette page, mais sans y trouver mon bonheur :yum:

Il existe un forum pour les STM32 + arduino
Il est géré par STMicroélectronic.

https://www.stm32duino.com/

Tu peux y poser une question.

merci pour le lien, je vais aller voir de plus près même si mes recherches précédentes m'ont déjà souvent amené à lire des posts sur ce forum.

En relisant au dessus, je me suis arrêté sur cette remarque:

Du coup, j'ai regardé de plus près et les STM32 ne sont pas clairement indiqués pour la bibliothèque Servo. Pas sûr que ça explique mes soucis d'upload, mais en tout cas ce n'est pas bon signe!
En revanche, j'en vois d'autres qui semblent plus compatibles comme * ServoEasing* et que je n'ai pas encore essayées.
J'y retrouve aussi STM32_ISR_Servo qui m'a renvoyé plein de messages d'erreur sous IDE Arduino mais qui mériterait d'être essayée sous platformio...

Bref, il y a encore à creuser par moi-même et pourquoi pas aller causer l'english sur stm32duino :yum:

Bonsoir Bernique

J'ai posé ta question à l'IA, je ne suis pas capable d'estimer sa réponse, mais si ça peut te donner une piste :wink:

Cordialement
jpbbricole

merci... c'est rigoureusement le code que j'ai et qui me plante à la compilation (voir premier post) :rofl:

Pas de chance :face_with_diagonal_mouth:

Et ça

PS: Le Solex, une merveille :wink: