Bonjour, je vais tenter de lire et réécrire le programme d'un microcontrôleur 8-bit MPC82E54AS2. Ce microcontrôleur est le cœur de PAR64LEDPLUS (AmericanDJ) qui est un Par assez vieux mais qui fonctionne toujours très bien. Je me lance là dedans car j'en ai 32 et que j'ai donc jugé intéressant de passer quelques heures à les améliorer. Le programme de ces PAR ont un seul problème : Il n'y a pas de dimmer.
En fait, on peut uniquement contrôler les valeurs RVB (Rouge, vert, bleu) indépendamment à des niveau entre 0 et 255 (standard DMX) mais impossible de contrôler les trois en même temps proportionnellement.
Vous allez me dire, bah pas problème il suffis de faire des calculs et hop on a COULEUR = COMMANDE * (PUISSANCE / 255) sauf que malheureusement j'utilise un logiciel qui ne permet pas de faire des calculs comme celui ci.
L'idée est donc de rajouter un canal DMX qui servira de dimmer et de modifier / réécrire afin d'appliquer la fonction mathématique directement dans le PAR.
C'est là que commence les problèmes, je n'ai jamais programmer de microcontrôleurs compatible 80C51 et encore moins de MPC82E54AS2.
J'aurais donc besoin de quelques conseils (quel logiciel utiliser, que programmeur, peut-ont utiliser un arduino en temps que programmeur, etc) je maitrise beaucoup de langage de programmation et j'ai aussi un peu plus que les bases en assembleur donc ça devrait être jouable.
Hâte de vous lire, Nico.
- Edité par nicolasdemailly7 7 juin 2022 à 4:14:24
> sauf que malheureusement j'utilise un logiciel qui ne permet pas de faire des calculs comme celui ci. Est-ce le logiciel ou le hardware du processeur qui ne supporte pas la multiplication ou la division? À la rigueur diviser par 255 est proche de diviser par 256 qui se ferait par un décalage de 8 positions sur un registre de 16 bits. Je ne me rappelle pas l'algo, mais on peut simuler la multiplication par des additions successives.
L'algo naïf est de choisir le plus petit comme compteur et d'accumuler le plus grand et de décrémenter le petit jusqu'à ce qu'il soit nul.
Un algo plus intelligent est de décaler le grand de 1 vers la gauche et le petit vers la droite.
Si le bit 0 du petit est 1, tu ajoutes le grand à l'accumulateur, sinon tu décales les deux (à vérifier ...)
- Edité par PierrotLeFou 7 juin 2022 à 6:55:31
Le Tout est souvent plus grand que la somme de ses parties.
> sauf que malheureusement j'utilise un logiciel qui ne permet pas de faire des calculs comme celui ci. Est-ce le logiciel ou le hardware du processeur qui ne supporte pas la multiplication ou la division? À la rigueur diviser par 255 est proche de diviser par 256 qui se ferait par un décalage de 8 positions sur un registre de 16 bits. Je ne me rappelle pas l'algo, mais on peut simuler la multiplication par des additions successives.
L'algo naïf est de choisir le plus petit comme compteur et d'accumuler le plus grand et de décrémenter le petit jusqu'à ce qu'il soit nul.
Un algo plus intelligent est de décaler le grand de 1 vers la gauche et le petit vers la droite.
Si le bit 0 du petit est 1, tu ajoutes le grand à l'accumulateur, sinon tu décales les deux (à vérifier ...)
La doc n'est pas très claire concernant la façon de reprogrammer la puce, d'après le site de Megawin, il y a 2 types de programmateurs : ISP et parallèle (dont U1, U1 plus et U2), sachant que le fabricant de ton appareil peut désactiver le mode ISP et rendre la relecture du code impossible (que ce soit en mode ISP ou parallèle). Il n'y a aucune description du protocole de mise à jour, donc l'utilisation d'un arduino pour ça risque d'être compliquée.
Par contre, si c'est bien une puce DIP sur socket, tu peux peut-être la remplacer par un atmega328p (ou un autre microcontrôleur en 5V) en créant un adaptateur avec:
Une autre solution relativement simple à mettre en place niveau logiciel serait de faire une passerelle à base d'arduino.
Celui-ci-ci aurait 2 deux port DMX :
- un port d'entrée, à brancher sur le réseau DMX principal
- un port de sortie, à brancher sur le PAR
Et niveau code, il suffira d'écouter toutes les trames RGB+DIM sur le port d'entrée et les renvoyer au format RGB sur le port de sortie en ayant fait le calcul du dimmage.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.