salut, je suis une bille en c (comme en assembleur d’ailleurs
), donc mon aide va être toute relative.
déjà , on lit dans le fichier main.asm,ligne 248, :
;; set the pin value depending on velocity:
;; - 0x00: set pin to 0V
;; - other values: set pin to 5V
movf MIOS_PARAMETER3, W
…
donc à priori les infos de vélocité sont stockées dans “MIOS_PARAMETER3”…
ensuite tes changements devront être fait dans le fichier "J5_dout.inc, Ã la fonction “J5_DOUT_PinSet”
là , il te faut faire un truc à base de “if”, par exemple, tout d’abord créer une variable “valeur de vélocité”, avec des bit que tu actives en fonction de la vélocité reçue , ex: tu actives le bit (x) si velocité supérieure à 80..(créer une variable te permettra d’éviter de faire des manips involontaires sur MIOS_parameter3, c’est ma méthode parce que souvent je comprends pas trop ce que je fait!
ensuite dans J5_DOUT_PinSet, juste aprés :
J5_DOUT_PinSet
;; make it superfast: branch depending on WREG
IFSET WREG, 2, rgoto J5_DOUT_PinSet_4567
J5_DOUT_PinSet_0123
IFSET WREG, 1, rgoto J5_DOUT_PinSet_23
J5_DOUT_PinSet_01
IFSET WREG, 0, rgoto J5_DOUT_PinSet_1
J5_DOUT_PinSet_0
btfsc MIOS_PARAMETER1, 0 ; set A.0
bsf LATA, 0
btfss MIOS_PARAMETER1, 0
bcf LATA, 0
return
et avant
J5_DOUT_PinSet_1
…
tu mets un code qui teste d’abord le bit de ta variable et qui saute d’abord (il faut activer l’accent avant de déclencher la note) jusqu’à l’activation du pin accent si ce bit est à 1:
>>btfsc ta_variable, (x)<<
>>–> saut jusqu’à la fonction pour activer en plus le pin Dout pour l’accent (sorry, là le code devient du chinois pour moi, à priori t’as juste à faire sauter le programme jusqu’au pin correspondant, par exemple “J5_DOUT_PinSet_7”)<<
>>sinon ça continue ici avec le code normal<<
oublie pas de remettre à zéro ta variable aprés avoir activé ton pin accent, sinon la boucle programme va tourner en rond (elle va continuer à sauter jusqu’à ton pin accent et ne plus passer par l’activation des autres pins:
(si tu as choisi le pin 7 pour l’accent):
J5_DOUT_PinSet_7
btfsc MIOS_PARAMETER1, 0 ; set E.2
bsf LATE, 2
btfss MIOS_PARAMETER1, 0
bcf LATE, 2
clrf ta_variable ou bcf ta_variable ,(x)
return
faut pas me demander plus
!