Protocole du multidspiy pour système tiers

Discutions générales sur le DSPiy et tout ce qui s'y rattache
Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Protocole du multidspiy pour système tiers

Messagepar thierryvalk » lun. 14 nov. 2016 17:32

Il est basé sur le protocole IR Sony 12bits
A titre d'exemple, le code source utilisé dans le DSPiy pour le générer et les explications :

Code : Tout sélectionner

//fonction appellée lorsque l'on veut envoyer un mot 
// les 7 bits de poids faible sont le data, les autres le device 
void multidspyout(unsigned short d)
{
        if(D01_ISO_OUT!=5)return;//on vérifie que l'on est bien en mode multidspiy
        while(nbitmultidspiy!=0);//attend fin transmission si encours.
        while(LPC_TMR32B0->TCR != 0x0);//pour être vraiment certain que le dernier bit soit sorti.

        datamultidspiy=d;    //datamultidspiy est une variable globale, c'est pas beau mais efficace.
        nbitmultidspiy=25;    //compteur pour savoir où l'on en est dans le transfert : nombre de bit*2 +1
        GPIOSetValue(Port_ISO_OUT,Pin_ISO_OUT,1);    //on place la sortie à 1 (dépend de son électronique)
        LPC_TMR32B0 ->MR0 = 2400;     //délai du start IR sony, 
        LPC_TMR32B0->TCR = 0x02;    //reset timer
        LPC_TMR32B0->TCR = 0x01;     //start timer
        //on a donc lancé le timer qui nous fera une interrupt dans 2400µS
}

//Timer en interruption 
void TIMER32_0_IRQHandler(void) 
{
    if ( LPC_TMR32B0->IR & 0x1 )//on vérifie si c'est le flag du bon timer qui a déclenché l'interrupt
    {
        LPC_TMR32B0->IR = 1;            // clear interrupt flag
        LPC_TMR32B0->TCR = 0x02;        // reset timer 
        if(nbitmultidspiy==0){LPC_TMR32B0->TCR = 0x0;return;}        //on est arrivé à la fin, stop timer
        if(nbitmultidspiy==1){nbitmultidspiy=0;GPIOSetValue(Port_ISO_OUT,Pin_ISO_OUT,0);LPC_TMR32B0 ->MR0 = 40000; LPC_TMR32B0->TCR = 0x01;return;}//fin de l'envoi des datas mais l'on génère un espace minimumentre 2 frames
        if((nbitmultidspiy&1)){nbitmultidspiy--;GPIOSetValue(Port_ISO_OUT,Pin_ISO_OUT,0);LPC_TMR32B0 ->MR0 = 600; LPC_TMR32B0->TCR = 0x01;return;} //on force la sortie à zéro pendant 600µS si nbitmultidspiy est impaire
        GPIOSetValue(Port_ISO_OUT,Pin_ISO_OUT,1);// forcément on est sur du paire donc sortie à 1.
        if(datamultidspiy&(1)){LPC_TMR32B0 ->MR0 = 1200;}//Pour un data bit à 1 : 1200µS On
         else {LPC_TMR32B0 ->MR0 = 600;}//Pour un data bit à 0: 600µS On
        nbitmultidspiy--;//on décrémente 
        datamultidspiy=datamultidspiy>>1;//et rotation à droite pour positionner le bit suivant à transmettre
         LPC_TMR32B0->TCR = 0x01; //start timer
    }
}
 

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: Protocole du multidpiy pour système tiers

Messagepar thierryvalk » lun. 14 nov. 2016 17:44

Coté réception, on décode du Sony 12bits en ayant simplement détourné l’entrée IR vers celle du triggerIn.
On n'a donc plus de réception IR de disponnible, ce qui est logique vu que ce DSPiy est censé être l'esclave d'un autre.
Les codes utilisés :

Sous un Device de 29 :
De 0 à 110 : Volume en 0.5dB (Volume= IRcode/2)
De 111 à 119 : Numéro du Preset (preset=IRcode-110)
121 : mise en standby
122 : sortie de standby
123 : mute
124 : Unmute
Reste la balance, mais plus de codes de dispos en Device 29.

Sous un Device de 30 :
De 0 à 50 : balance

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: Protocole du multidpiy pour système tiers

Messagepar alka » lun. 14 nov. 2016 20:44

cool. c'est facile :)
le device c'est le numéro d'adresse je suppose.

pas de code pour le contraste écran (mode nuit) ?
Source+ et Source - ?
et P+/P- ?
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: Protocole du multidpiy pour système tiers

Messagepar alka » ven. 2 déc. 2016 19:35

thierryvalk a écrit :Les codes utilisés :
Sous un Device de 29 :
De 0 à 110 : Volume en 0.5dB (Volume= IRcode/2)


Précision pour le volume :
les codes de 0 à 110 font varier le volume de 0dB à -75dB
de 0 à 100 le volume en dB est -(IRCode/2) donc de 0dB à -50dB par pas de 0.5dB
de 101 à 110 la progression n'est plus linéaire et suit ces valeurs :
code volume
101 -51dB
102 -52
103 -54
104 -56
105 -58
106 -60
107 -63
108 -66
109 -70
110 -75
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: Protocole du multidpiy pour système tiers

Messagepar alka » sam. 3 déc. 2016 12:58

thierryvalk a écrit :Sous un Device de 30 :
De 0 à 50 : balance

précisions pour la balance :
Les commandes pour la Balance vont de 1 à 50
IRcode==25 correspond à la balance équilibrée L/R (l'affichage disparait sur l'oled)
Plus on s'écarte de 25, plus le décalage de balance est prononcé.
valeurs < 25 : Canal L
valeurs > 25 : Canal R

Cela fait 24 valeurs coté L et 25 coté R.
La valeur 0 revient a faire 25.
acheter un DSPiy ? c'est ici


Retourner vers « DSPiy général »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 8 invités