Auteur Sujet: Problème pour utiliser l'horloge externe du PCA9685  (Lu 54102 fois)

simontpellier

  • Full Member
  • ***
  • Messages: 115
    • Voir le profil
Re : Problème pour utiliser l'horloge externe du PCA9685
« Réponse #45 le: janvier 19, 2021, 06:53:43 pm »
les "while" en effet mais le code ne tourne pas sans. On peut les enlever mais il faut alors ajouter un petit delay avant le latch, 10us au moins. En principe c'est pas très bon mais dans ce cas il y a un petit gain et le résultat égale quasiment des "SPI.transfer". Ce qui offre un choix

Là bien sûr c'est une performance brute avec une loop qui ne fait que ça (même pas vrai car j'ai testé l'ajout d'un second esclave, en prévision d'un "general purpose", rafraîchi toutes les 10ms, et c'est quasiment sans incidence).
Au final, le réglage de la fréquence PMW effective se fera par le timer2 et interruptions, ce qui a marché va resservir !

(Et comment on fait pour vérifier que les transferts sont effectués ?)

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : Problème pour utiliser l'horloge externe du PCA9685
« Réponse #46 le: janvier 19, 2021, 08:57:53 pm »
c'est ce qu'il y a derrière le while : tu mets if( à la place de while (!

simontpellier

  • Full Member
  • ***
  • Messages: 115
    • Voir le profil
Re : Problème pour utiliser l'horloge externe du PCA9685
« Réponse #47 le: janvier 20, 2021, 09:25:07 pm »
...while/if... le problème ne s'est finalement pas posé. Je pense que ça s'explique par la gamme de (basse) fréquence qui m'intéresse.

Je reviens donc pour déposer le code final : ça va décidément très très vite : avec une fréquence bridée par interruptions à 60Hz vérifiés/oscillo et pour 40PWM, la loop tourne elle à ...160 kHz! (perso, avec un petit réseau école c'est vrai mais toutes les fonctions d'un grand, ma loop prend 6ms... 6 comparé à 160, y'a de la marge ! et je suis d'ailleurs de plus en plus étonné par ce qu'un Arduino Mega a dans le ventre).
D'autres paramètres (prescaler etc) permettraient une plage de fréquence bien plus haute sans étouffer le CPU ; je fais confiance à l'estimation l'analyseur logique à 10balles de Trimarco.
 
Le SPI étant largement susceptible d'avoir d'autres usages que de la PWM logicielle, pour l'exemple le code pilote en parallèle des registres indépendants de ceux de la PWM, par exemple pour les pins de polarisation des boosters, pour des signaux etc.

Juste dommage que tout ça ne puisse marcher qu'à condition de ne pas avoir besoin du (seul) SPI harware pour un bus CAN (et très dommage qu'il manque juste une broche au Mega pour pouvoir en créer un second). Mais un SPI logiciel, même moins véloce, pourra quand même abattre du boulot.

Le code en pièce jointe (encore merci à Trimarco)

Bien cordialement

« Modifié: janvier 21, 2021, 08:15:55 pm par simontpellier »

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : Re : Problème pour utiliser l'horloge externe du PCA9685
« Réponse #48 le: janvier 20, 2021, 10:46:32 pm »
...while/if... le problème ne s'est finalement pas posé. Je pense que ça s'explique par la gamme de (basse) fréquence qui m'intéresse.

Je reviens donc pour déposer le code final : ça va décidément très très vite : avec une fréquence bridée par interruptions à 60Hz vérifiés/oscillo
merci
et pour 40PWM, la loop tourne elle à ...160 kHz! (perso, avec un petit réseau école c'est vrai mais toutes les fonctions d'un grand, ma loop prend 6ms... 6 comparé à 160, y'a de la marge ! et je suis d'ailleurs de plus en plus étonné par ce qu'un Arduino Mega a dans le ventre).
D'autres paramètres (prescaler etc) permettraient une plage de fréquence bien plus haute sans étouffer le CPU ; je fais confiance à l'estimation de Trimarco.moi, je fais plutôt confiance à mon analyseur logique à 10 balles
 
Le SPI étant largement susceptible d'avoir d'autres usages que de la PWM logicielle, pour l'exemple le code pilote en parallèle des registres indépendants de ceux de la PWM, par exemple pour les pins de polarisation des boosters, pour des signaux etc.
oui, mais ça ralentirait tout inutilement ; il vaut mieux traiter les io lents avec un spi soft dédié
(pour les signaux tu peux utiliser un tlc5947)


Juste dommage que tout ça ne puisse marcher qu'à condition de ne pas avoir besoin du (seul) SPI harware pour un bus CAN (et très dommage qu'il manque juste une broche au Mega pour pouvoir en créer un second). Mais un SPI logiciel, même moins véloce, pourra quand même abattre du boulot.les méga comportent 3 usart prévus pour fonctionner en variante comme spi maitres (même mieux que le spi) mais les pinioufs de chez arduino n'ont pas jugé utile de sortir les broches clk sur la carte ; je pourrais le faire avec mon pro micro
mais de toutes manières, il est temps de "s'attaquer" à l'arm, non ?


Le code en pièce jointe (encore merci à Trimarco) service

Bien cordialement

simontpellier

  • Full Member
  • ***
  • Messages: 115
    • Voir le profil
Re : Problème pour utiliser l'horloge externe du PCA9685
« Réponse #49 le: janvier 21, 2021, 08:12:39 pm »

quoique...
un certain "milwind" fait remarquer que la pin XCK qui est en 48  est tout près de la pin de la pin 50 qui, elle, sort sur une broche et qu'il suffit juste d'un petit pont de soudure. Faut oser ! Il a osé.
https://forum.arduino.cc/index.php?topic=257506.0

(Mais pourquoi une PWM de pourrait-elle pas plutôt être utilisée comme signal d'horloge ?)

(et OK j'ai corrigé : je fais confiance à l'analyseur logique à 10 balles de Trimarco)
« Modifié: janvier 21, 2021, 08:15:05 pm par simontpellier »

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : Problème pour utiliser l'horloge externe du PCA9685
« Réponse #50 le: janvier 22, 2021, 12:50:44 pm »
bricolage infâme sur du pas de 0.4mm ... voir plutôt Mega2560 CORE chez aliex. par ex.
pwm : ça marche pas

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : Problème pour utiliser l'horloge externe du PCA9685
« Réponse #51 le: mars 19, 2021, 02:20:37 pm »
@simontpellier :
on avait parlé parlé de la charge cpu que représente la préparation des trames 74hc595, avant de les envoyer via le spi (ou en manuel) : il ne restait pas beaucoup de ressources au mcu pour faire autre chose
il y a une possibilité de bien améliorer les choses, qui consiste à utiliser un nano ou un mini à base de LGT8F328P : il travaille à 32MHz à la place de 16MHz, il va donc (au moins) 2 fois + vite
j'ai parlé de ce module ici : https://forum.arduino.cc/index.php?topic=729831.0

simontpellier

  • Full Member
  • ***
  • Messages: 115
    • Voir le profil
Re : Problème pour utiliser l'horloge externe du PCA9685
« Réponse #52 le: mars 19, 2021, 09:46:43 pm »
@trimarco232 :
Bon plan merci ! (Pour pas trop cher!)
(le mega CORE était également une bonne suggestion, je ne connaissais pas non plus)

L'objectif en cours est néanmoins basé sur le Teensy 3.5 qui repousse très loin toutes les limites. Les librairies Arduino passent comme qui rigole, le code "shift-register-PWM" transféré sur Teensy tourne à une vitesse faramineuse... mais reste le problème du bus CAN. La librairie n'a rien en commun avec ACAN, les exemples sont peu nombreux, et abcons, et il y a 4 "variants" (tous anglais) de ladite librairie... j'ai eu beau labourer le web, pas moyen de se faire parler la teensy (via son CAN intégré) avec un Arduino, je suis au bord de l'appel au secours.

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : Problème pour utiliser l'horloge externe du PCA9685
« Réponse #53 le: mars 19, 2021, 11:56:54 pm »
prends un esp32, il a 2 spi, et il me semble que le can a été testé ici

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : Problème pour utiliser l'horloge externe du PCA9685
« Réponse #54 le: mars 20, 2021, 08:42:01 am »
ACAN existe pour Teensy. C'est même sur cette cible qu'elle a été développée en premier. Elle est disponible dans le gestionnaire de bibliothèques.

En résumé les différentes incarnations :
ACAN, CAN Library for Teensy 3.1 / 3.2, 3.5, 3.6 : https://github.com/pierremolinaro/acan
ACAN2515, MCP2515 CAN Controller Library for Arduino : https://github.com/pierremolinaro/acan2515
ACAN2515Tiny, adaptation of ACAN2515 library in order to reduce the memory footprint : https://github.com/pierremolinaro/acan2515Tiny
ACAN2517, MCP2517FD CAN Controller Library for Arduino (in CAN 2.0B mode) : https://github.com/pierremolinaro/acan2517
ACAN2517FD, MCP2517FD and MCP2518FD CAN Controller Library for Arduino (in CAN FD mode) : https://github.com/pierremolinaro/acan2517FD
ACAN-T4, CAN Library for Teensy 4.0 : https://github.com/pierremolinaro/acan-t4

Une version pour le SJA1000 like intégré à l'ESP32 est en préparation.
Cordialement

simontpellier

  • Full Member
  • ***
  • Messages: 115
    • Voir le profil
Re : Problème pour utiliser l'horloge externe du PCA9685
« Réponse #55 le: mars 21, 2021, 06:18:18 pm »
Merci M Jean-Luc pour l'info ACAN pour Teensy. Je regrette d'avoir raté votre post mais pas grave puisque j'ai découvert cette librairie par ailleurs il y a ... deux heures !
Et je me suis permis de faire dans la foulée un mail à Pierre Molinaro (pour autant que l'adresse soit active) car je rencontre avec sa librairie exactement le même souci qu'avec "flexCAN", à savoir un Teensy qui lit sur le bus sans problème, et acquitte, mais ne sait pas écrite... j'ai mis tous mes moyens intellectuels sur le coup, ils n'y ont pas suffi et je n'ai plus de cartouche à tirer sauf d'acheter une autre carte "pour voir" !

Une petite question si je peux à propos de ACAN (celle des Arduino) ? J'y vais régulièrement voir sur site s'il y a des nouvelles de la note de renvoi 4: [4] Nous verrons les messages remote dans un prochain article aussi comme j'imagine que vous en serez l'auteur, eh bien je languis de cette publication à venir !



Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : Re : Problème pour utiliser l'horloge externe du PCA9685
« Réponse #56 le: mars 22, 2021, 08:31:54 am »
à savoir un Teensy qui lit sur le bus sans problème, et acquitte, mais ne sait pas écrite... j'ai mis tous mes moyens intellectuels sur le coup, ils n'y ont pas suffi et je n'ai plus de cartouche à tirer sauf d'acheter une autre carte "pour voir" !

Et par ailleurs la sortie TXCAN est-elle correcte pour le GPIO ? Serait-il possible qu'elle soit grillée ?
Le CAN est également disponible sur pins 32 et 25, voir page 8 et 9 de la doc de ACAN. Il s'agit des broches situées dessous.

Citer
Une petite question si je peux à propos de ACAN (celle des Arduino) ? J'y vais régulièrement voir sur site s'il y a des nouvelles de la note de renvoi 4: [4] Nous verrons les messages remote dans un prochain article aussi comme j'imagine que vous en serez l'auteur, eh bien je languis de cette publication à venir !

C'est dans les tuyaux mais il faut que je finisse d'abord les programmes :)
Cordialement

simontpellier

  • Full Member
  • ***
  • Messages: 115
    • Voir le profil
Re : Problème pour utiliser l'horloge externe du PCA9685
« Réponse #57 le: mars 22, 2021, 07:00:33 pm »
... ouf pas de sortie grillée ! (sur ma Teensy3.5 dont les pins RX/TX alternatifs sont brochés au recto, ce qui est heureux !)
j'avais ce matin déjà une réponse de Pierre Molinaro, dont cette version courte : Réponse courte : il faut que la patte STBY du MCP2562 soit à 0, sinon, par défaut, une résistance de tirage interne au MCP2562 la met au niveau haut, qui est le mode standby.

(La solution était toute bête, comme toujours ou presque, et ce qui est surtout bête de ma part c'est qu'elle était contenue dans un schéma récent de Dominique : https://forum.locoduino.org/index.php?topic=922.msg12443#msg12443 ) (réponse #418)

En cherchant les occurrences "teensy" sur le forum, je m'aperçois qu'elles sont très peu nombreuses et presque chaque fois très furtives, sans fil réellement dédié.
Je vais réfléchir s'il y a matière à en créer un, par exemple une fois que j'aurai bien en main la librairie CAN Teensy citée ici par Jean-Luc mais comme on est très loin du sujet originel c'est une info qui ne profitera pas comme elle pourrait. Façon de compléter par des aspects pratiques l'article du site sur ces cartes Teensy.

(et vivement l'opus 3 des articles ACAN !)
Merci pour ces interventions
cordialement







Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3041
  • 100% Arduino et N
    • Voir le profil
Re : Re : Problème pour utiliser l'horloge externe du PCA9685
« Réponse #58 le: mars 24, 2021, 10:41:39 am »
(La solution était toute bête, comme toujours ou presque, et ce qui est surtout bête de ma part c'est qu'elle était contenue dans un schéma récent de Dominique : https://forum.locoduino.org/index.php?topic=922.msg12443#msg12443 ) (réponse #418)

En cherchant les occurrences "teensy" sur le forum, je m'aperçois qu'elles sont très peu nombreuses et presque chaque fois très furtives, sans fil réellement dédié.
Je vais réfléchir s'il y a matière à en créer un, par exemple une fois que j'aurai bien en main la librairie CAN Teensy citée ici par Jean-Luc mais comme on est très loin du sujet originel c'est une info qui ne profitera pas comme elle pourrait. Façon de compléter par des aspects pratiques l'article du site sur ces cartes Teensy.

(et vivement l'opus 3 des articles ACAN !)
Merci pour ces interventions
cordialement

C'est vrai qu'on pourrait déplacer les parties de ce sujet consacrées au CAN et au Teensy dans la rubrique "Bus Can"
Si vous êtes d'accord, je le fais demain ou bientôt.

C'est d'autant plus interessant que j'ai prévu de passer du Due au Teensy pour le gestionnaire graphique de mon réseau car je dispose d'un bel écran 7 pouces et d'une carte splendide faite par Jean-Luc : Dès que j'aurai résolu mes derniers bugs dans la gestion des trains (suivi des trains, espacement, etc.. ) avec toute la rétrosignalisation en place via le bus Can, il sera temps alors de réécrire tout proprement ou autrement et le Teensy le mérite bien  ;D

Car le gestionnaire reçoit tous les messages des capteurs de présence, les détections ponctuelles optiques et RFID et les changements de vitesse/direction de la traction DCC. Avec tous ces messages il faut garder en permanence la correspondance entre les zones et les trains qui sont dessus (pour les commander en DCC, il faut bien connaitre leur adresse) et agir sur les commandes DCC en conséquence. Il y a de la redondance et pas mal de vérifications et heureusement un recalage grâce aux capteurs RFID. Je me sers beaucoup du moniteur pour suivre les événements et les traitements.

Cordialement,
Dominique

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : Problème pour utiliser l'horloge externe du PCA9685
« Réponse #59 le: mars 24, 2021, 11:35:10 am »
Bonjour Dominique,
également, je pense qu'il serait bien de déplacer tous les posts concernant la synchro pwm par 74hc595 dans une rubrique ad hoc ; si tu veux bien, je te fais la liste des # des posts concernés