[Programmation] C'est quoi un "channel" (dans le contexte de la programmation de timers sur STM32)
Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

C'est quoi un "channel" (dans le contexte de la programmation de timers sur STM32)



  1. #1
    002

    C'est quoi un "channel" (dans le contexte de la programmation de timers sur STM32)


    ------

    Bonjour,

    En plein apprentissage sur STM32 (et arduino), j'essaye de comprendre un peu comment sont fichus les timers.
    La, je bute sur le concepts de "channels", visiblement trop simple pour être expliqué au pros, et trop compliqués pour être expliqué au débutants. Ca revient des centaines de fois, mais c'est jamais expliqué aux débutants. En l'occurrence, j'essaye de les utiliser dans la librairies HardwareTimer. Je comprends que c'est plus ou moins associé à un pin, une valeur de comparateur pour le timer... Mais pas plus... C'est quoi ? C'est une structure ? C'est standard ? 4 channels, ça veut dire 4 pin pilotable en PWM ?
    Bref, je suis preneur de toute explication.
    En vous remerciant.

    -----

  2. #2
    umfred

    Re : C'est quoi un "channel" (dans le contexte de la programmation de timers sur STM32)

    channel c'est un voie, un canal, donc oui chaque channel est associé à une pin; derrière, tu peux avoir un multiplexeur ou démultiplexeur qui va à une seule chaine de traitement (par exemple un convertisseur analogique numérique, tu peux avoir 4 voies en entrée, mais un seul convertisseur dans le circuit, il faut passer d'une voie à l'autre pour convertir chacune des voies )

  3. #3
    002

    Re : C'est quoi un "channel" (dans le contexte de la programmation de timers sur STM32)

    Merci pour cette réponse toutefois un peu succincte. Je suis sur le datasheet du STM32F030. Je vais avoir besoin de 5 ou 6 sorties PWM. Les informations que je trouve dedans sont très contradictoires, ce qui signifie que je n'ai probablement pas vraiment compris. Ex :

    One 16-bit 7-channel advanced-control timer for 6 channels PWM output
    Or, sur la même datasheet, le tableau page 18 indique que les timers qui ont le plus de capture/compare channels sont TIM1 et TIM3 qui en ont respectivement 4 chacun... On peut bien faire du PWM avec chaque pin associé à un timer qui a un capture/compare, c'est bien ça ? De même, avec 12 channels répartis sur 5 timers, on peut piloter en tout et pour tout 12 sorties PWM si on choisi bien ses pins ? Et il n'y a aucun timer capable de gérer 6 sorties PWM ?

    STM32F030x devices feature a synchronizable 4-channel general-purpose timer based on
    a 16-bit auto-reload up/downcounter and a 16-bit prescaler. TIM3 features 4 independent
    channels
    for input capture/output compare, PWM or one-pulse mode output. This gives up
    to 12 input captures/output compares/PWMs on the largest packages.
    C'est pas 1 pin = 1 channel ?

    Question subsidiaire, contrairement à la datasheet des Atmega32U4 qui contiennent tous les registres du microcontrôleur, les datasheet des STM32 n'en contiennent quasiment aucun... Il y a un document à part pour ça ?

    En vous remerciant

  4. #4
    002

    Re : C'est quoi un "channel" (dans le contexte de la programmation de timers sur STM32)

    Ah, et accessoirement aussi, je cherche la signification dans la définition des pin et de leur timers du "N" qui apparait parfois :
    ex : Le PB15, page 28 :
    TIM1_CH3N,
    TIM15_CH1N,
    TIM15_CH2
    C'est vraiment pas fait pour les débutant ces machins :'(

  5. A voir en vidéo sur Futura
  6. #5
    jiherve

    Re : C'est quoi un "channel" (dans le contexte de la programmation de timers sur STM32)

    bonjour
    le N veut dire inverse !
    ex quand TIM15_CH1 est à '1' alors TIM15_CH1N est à '0' (si utilisé) on trouve aussi la notation '#'
    JR
    l'électronique c'est pas du vaudou!

  7. #6
    umfred

    Re : C'est quoi un "channel" (dans le contexte de la programmation de timers sur STM32)

    chez ST, il faut naviguer entre plusieurs docs, le programming manual, la datasheet et la reference manuel (c'est dans cette dernière que tu trouvera les registres et la plupart je pense des infos utiles) https://www.st.com/en/microcontrolle...#documentation
    Dernière modification par umfred ; 21/06/2022 à 15h29.

  8. #7
    bobflux

    Re : C'est quoi un "channel" (dans le contexte de la programmation de timers sur STM32)

    Un timer contient un compteur.

    Un canal c'est par exemple une unité "compare" qui va faire une sortie PWM avec, il peut y en avoir plusieurs par timer.

    Citation Envoyé par 002 Voir le message
    Or, sur la même datasheet, le tableau page 18 indique que les timers qui ont le plus de capture/compare channels sont TIM1 et TIM3 qui en ont respectivement 4 chacun... On peut bien faire du PWM avec chaque pin associé à un timer qui a un capture/compare, c'est bien ça ? De même, avec 12 channels répartis sur 5 timers, on peut piloter en tout et pour tout 12 sorties PWM si on choisi bien ses pins ? Et il n'y a aucun timer capable de gérer 6 sorties PWM ?
    Vers la fin de la page 18 je vois :

    The advanced-control timer (TIM1) can be seen as a three-phase PWM multiplexed on 6channels. It has complementary PWM outputs with programmable inserted dead times. Itcan also be seen as a complete general-purpose timer.

    Donc tu peux mettre 3 canaux pour faire du PWM tripahsé, pour ça il faut contrôler 6 MOSFET, et ils voient ça comme 6 sorties parce que le truc sort les signaux positifs et inversés avec dead time.

    Citation Envoyé par 002 Voir le message
    C'est pas 1 pin = 1 channel ?
    Chaque canal peut avoir une ou plusieurs pins (entrée pour la capture, sortie, sortie inversé, etc, ou aucune).
    Citation Envoyé par 002 Voir le message
    Question subsidiaire, contrairement à la datasheet des Atmega32U4 qui contiennent tous les registres du microcontrôleur, les datasheet des STM32 n'en contiennent quasiment aucun... Il y a un document à part pour ça ?
    Manuel de référence, tu peux le trouver sur la page produit du site ST.

  9. #8
    002

    Re : C'est quoi un "channel" (dans le contexte de la programmation de timers sur STM32)

    Merci pour ces réponses !
    Donc pour bien faire, je dois commencer par faire un design avec des sorties PWM (pour contrôler des servos) uniquement sur des pins pour lesquels il y a dans la datasheet TIM#_CH# (en evitant d'utiliser 2 fois le meme timer/channel lorsqu'il est affectable à plusieurs pins. C'est bien ça ?
    Après quoi, il ne me restera plus qu'a trouver les bons registres pour mettre les compare ?

    D'ailleurs, je me permet d'abuser de votre bonté, mais comment ca se passera ensuite dans le principe pour déterminer le duty cycle ? Il changera automatiquement le niveau logique sur le pin associé quand il atteindra la valeur de comparaison puis reviendra a son état basal au moment de l'overflow ? Ou c'est plus subtil que ça ?

  10. #9
    bobflux

    Re : C'est quoi un "channel" (dans le contexte de la programmation de timers sur STM32)

    Oui, si tu utilises les pins de sortie inversées, tu n'auras pas les canaux indépendants que tu souhaites.

    Pour le duty cycle (rapport cyclique) tu le mets dans le registre "compare", le compteur fait une rampe de 0 à compteur_max, et la sortie est "compteur>compare" donc le rapport cyclique est compare/compteur_max.

  11. #10
    Unwanted Ads

    Re : C'est quoi un "channel" (dans le contexte de la programmation de timers sur STM32)

    Tu peut utiliser le stm32 cube mx pour mapper tes pins
    Nom : Screenshot 2022-06-22 092004.jpg
Affichages : 197
Taille : 121,9 Ko

  12. #11
    002

    Re : C'est quoi un "channel" (dans le contexte de la programmation de timers sur STM32)

    Encore merci pour ces réponses utiles.
    J'ai essayé cubeMX, mais je me suis tellement cassé les dents dessus que j'ai lâché l'affaire. J'ai bien vu qu'il y avait l'air d'y avoir des trucs ultra puissants dedans, mais au final, meme faire clignoter une LED a été un échec.
    Je pense que ce genre d'outil n'est pas adapté aux débutant car il implique de tout apprendre en même temps quand on a pas déjà de solides bases. Tout est tenu pour acquis la dedans, les abréviations, les concepts... C'est juste affreux. Sur Arduino, j'apprends une ligne après l'autre, avec mes datasheets sur l'autre écran.

  13. #12
    bobflux

    Re : C'est quoi un "channel" (dans le contexte de la programmation de timers sur STM32)

    CubeMX c'est basé sur Eclipse donc ouais, si t'as pas l'habitude, ça peut désorienter...

    Ceci dit j'aime bien cet outil, il marche bien. Et puis le debugger en live, c'est la classe. Le temps passé à apprendre à s'en servir n'est pas du temps perdu.

  14. #13
    Unwanted Ads

    Re : C'est quoi un "channel" (dans le contexte de la programmation de timers sur STM32)

    ST est l'une des marques avec les meilleurs driver et le meilleur support mais il reste que de programmer un microcontrôleur directement n'est pas des plus simple a appréhender (surtout si tu démarre avec un processeur ARM).

    Le début est le plus dur:
    -Gerer une nouvelle bibliotheque de drivers
    -Lire la datasheet et comprendre comment fonctionne certains registers
    -acheter les debug tools, programmeurs

    C'est même pour ca que certains professionnels reste sur des plateformes inferieures comme Microchip ou AVR...

  15. #14
    002

    Re : C'est quoi un "channel" (dans le contexte de la programmation de timers sur STM32)

    J'ai debuté avec des atmega328 aussi. Mais ca manquait vraiment de RAM et d'interruptions externe. Donc j'ai voulu poursuivre mon apprentissage sur STM32 avant d'avoir trop appris sur les AVR pour avoir le courage de passer à mieux �� Sur Arduino, ca reste simple !

  16. #15
    jiherve

    Re : C'est quoi un "channel" (dans le contexte de la programmation de timers sur STM32)

    bonsoir
    il fallait passer en assembleur là çà pousse!
    JR
    l'électronique c'est pas du vaudou!

  17. #16
    bobflux

    Re : C'est quoi un "channel" (dans le contexte de la programmation de timers sur STM32)

    L'avantage de l'arduino, c'est les libraries. Il y a toujours quelqu'un qui a codé le truc dont t'as besoin.

    L'inconvénient c'est que l'IDE est pourri et en général les libs en question sont bourrées de bugs. Dans mon dernier projet ESP32, j'ai fini par réimplémenter le serveur web, le 1wire, le client NTP... lol.

    Un avantage énorme du STM32 c'est que la carte de dév Nucleo fait aussi programmeur ET DEBUGGER, pour 12€ franchement que demande le peuple, tu bouges les jumpers, et tu branches sur ta carte, et hop v'la les breakpoints!

Discussions similaires

  1. "NextDNS" : site "RTL" dans l'allowlist, pourtant le "play" est bloqué ici (voir lien)
    Par sypqys dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 18/09/2020, 17h23
  2. [Immunologie] Pourquoi dit-on immunité "active" et "passive" c'es en fonction de quoi ?
    Par Azaaar dans le forum Biologie
    Réponses: 3
    Dernier message: 11/02/2018, 12h14
  3. fonction "AO Update channel.vi" dans LAbview
    Par jn2 dans le forum Électronique
    Réponses: 0
    Dernier message: 17/05/2014, 22h01
  4. Principe du "dual channel"
    Par invited170028e dans le forum Électronique
    Réponses: 12
    Dernier message: 15/09/2009, 20h10
  5. A quoi sert "activer le suivi" dans Gmail ? merci
    Par Cornemuse dans le forum Internet - Réseau - Sécurité générale
    Réponses: 4
    Dernier message: 01/04/2007, 18h54
Découvrez nos comparatifs produits sur l'informatique et les technologies.