module inscription newsletter haut de page forum mobile

Rejeter la notice

Nouvelle Formation Prise de son : les inscriptions sont ouvertes !
Maîtrisez la qualité de vos prises de son avec notre formation théorique et pratique de 3 jours ! Du 14 au 16 mai 2024 à Paris.

Pilotage LANC et SONY HDR-XR500

Discussion dans 'Archives moteurs' créé par HOUSSARD, 13 Mai 2009.

Tags:
  1. HOUSSARD

    HOUSSARD Modérateur Authoring DVD
    Modérateur So

    Points Repaire:
    6 850
    Recos reçues:
    0
    Messages:
    292
    Appréciations:
    +0 / 1 / -0
    bonjour

    je rencontre des problèmes de contrôle LANC sur ma nouvelle Sony XR500.
    La mise sous tension est ok mais aucun affichage video moniteur et aucune commande ne fonctionne. Je précise que j'utilise un adaptateur LANCSA et qu'il fonctionne bien avec un SR11 (connectique identique au XR500). Pouvez vous m'indiquer si vous avez déjà télécommandé un XR500 en LANC ?
    Mon objectif est d'utiliser cette caméra dans un caisson beebox HC en Inox de chez extrem vision.
     
  2. HOUSSARD

    HOUSSARD Modérateur Authoring DVD
    Modérateur So

    Points Repaire:
    6 850
    Recos reçues:
    0
    Messages:
    292
    Appréciations:
    +0 / 1 / -0
    quelques nouvelles infos "assez technique" :

    Je possède 2 caméras : une XR500 et une SR11

    J’ai réalisé avec flowcode 3 un programme sous formes d’algorigrammes qui permet de piloter le SR11 ; J’ai également un caisson de plongée extrem vision.

    Le caisson de plongée pilote bien en Lanc le SR11 ainsi que la carte que j’ai réalisé avec un 16F628A.

    Par contre impossible de piloter le XR500. Je connais bien le protocole Lanc. J’ai regardé avec un analyseur logique les signaux d’une télécommande LANC Sony (la RM-AV2) qui fonctionne bien avec le XR500. C’est très étonnant car la trame est inversée c'est-à-dire que le niveau logique en inter trame est à 0 et que le niveau logique par défaut (par exemple entre les octets 3 et 7 sans TX) est aussi à 0.

    Je pense que Sony à modifié le protocole et que la caméra reconnait la télécommande pour utiliser ce protocole modifié.

    Avez-vous des infos sur ce point ?

    Cordialement,

    François HOUSSARD
     
  3. chestercat

    Points Repaire:
    100
    Recos reçues:
    0
    Messages:
    6
    Appréciations:
    +0 / 0 / -0
    Bonjour,

    J'ai également essayé ma Xr500 avec un ancien circuit lanc ca fonctionne avec une alimentation séparée mais je n'arrive pas à avoir le focus + et - fonctionne-t-il chez vous?

    Cordialement

    CC
     
  4. HOUSSARD

    HOUSSARD Modérateur Authoring DVD
    Modérateur So

    Points Repaire:
    6 850
    Recos reçues:
    0
    Messages:
    292
    Appréciations:
    +0 / 1 / -0
    après plus de deux mois de travail j'ai enfin un caisson qui fonctionne avec la caméra XR500 ou XR520. J'ai contacté le bureau d'étude de Sony qui m'a confirmé que les nouvelles caméras n'auront plus l'alimentation 7.2v sur la prise DC, utiliseront un protocole Lanc modifié. Pour cela j'ai :

    - Etudié complètement le protocole de communication LANC
    - Utilisé un analyseur logique pour relever les trames du protocole Lanc utilisé
    - Réalisé un nouveau circuit imprimé pour mon caisson avec l'installation d'une batterie séparée (identique à celle du XR500) débrochable.
    - Utilisé un microcontroleur récent le PIC 16F628
    - Développé un nouveau programme complet utilisant le protocole Lanc modifié sous forme d'algorigrammes avec le logiciel Flowcode. Il est très simple ainsi d'ajouter des nouvelles fonctionnalités à n'importe quel caisson.

    Si besoin, je peux vous aider à installer les nouvelles caméras Sony dans votre ancien caisson en adaptant une nouvelle commande.
     
  5. HOUSSARD

    HOUSSARD Modérateur Authoring DVD
    Modérateur So

    Points Repaire:
    6 850
    Recos reçues:
    0
    Messages:
    292
    Appréciations:
    +0 / 1 / -0
    Pour répondre a chestercat :

    Oui ça marche mais il faut utiliser les codes 45 et 47 dans l'octet 2 du protocole LANC après avoir envoyé l'adresse 18 dans l'octet 1 (mode caméra).

    Il faut donc reprogrammer le microcontroleur.
     
  6. chestercat

    Points Repaire:
    100
    Recos reçues:
    0
    Messages:
    6
    Appréciations:
    +0 / 0 / -0
    Bonjour,

    J'utilise effectivement les codes 45 et 47 comme précédemment dans le programme de mon Pic mais rien ne se passe tout comme les commandes d'autofocus je n'arrive pas à les faire fonctionner.

    par contre pour moi le code de l'octet 1 pour la caméra est 28 et pour magnéto 18.

    Que vous a dit Sony pour les changement dans le protocole Lanc?

    Merci de votre aide

    CC
     
  7. HOUSSARD

    HOUSSARD Modérateur Authoring DVD
    Modérateur So

    Points Repaire:
    6 850
    Recos reçues:
    0
    Messages:
    292
    Appréciations:
    +0 / 1 / -0
    Bonjour

    Voila quelques détails techniques supplémentaires :

    Je viens d'avoir le service client Sony qui m'a appelé de nouveau.

    Les bureaux d'étude étaient étonnés que la prise DC des précédentes caméras donnait le 7.2v ! Une demande remonte auprès de Sony Japon pour que les prochains modèles de caméscope propose de nouveau le 7.2 v pour alimenter l'électronique des caissons. Il faudrait que d'autres utilisateurs demandent également le retour de cette alimentation.

    Pour le LANC, le technicien de Sony ne connaissait pas les détails des changements. De mon coté je devais trouver des codes qui fonctionnent pour mes SR11 et XR500 afin de pouvoir interchanger les caméras dans le caisson sans changer le PIC.
    Je possède le programme flowcode pour programmer le PIC. Il est très simple de changer un code de commande dans mon programme et ainsi de tester ce qui marche. De mon coté j'ai constaté que sur les nouvelles caméras, il était nécessaire que chaque octets est une durée très exacte de 1ms, que chaque bit est une durée de 100us ainsi que les bits de start et de stop. Enfin la durée intertrame doit être précise avec 1ms. Le PIC d'origine de mon caisson extrem vision ne respectait pas exactement ces durées. Cela n'avait jamais posé de problème sur le HC1 ou le HC7. Si vous le souhaitez je peux vous donner les codes commandes qui fonctionnent bien avec le XR500.
    Au niveau hardware j'ai remplacé le PIC 16F84 d'origine par un 16F628 qui a le même brochage mais qui a l'avantage d'avoir des temps de pose très précis (j'utilise des routine en code C du genre delays10us), il a 2 fois plus de mémoire programme, il coute 2 fois moins chers et il consomme moins. J'ai aussi ajouté une batterie FH50 pour remplacer le 7.2v de la caméra fixée sur un support batterie débrochable (un chargeur à 2€ commandé à Hong kong). Un relais 6v DC commandé par un transistor permet de couper l'alimentation batterie lors d'une commande stop. Un port inutilisé du PIC mis en permanence au niveau 1 logique permet de commander la base du transistor.

    Maintenant tout marche parfaitement et avec la grosse batterie FH100 j'ai 6H d'autonomie sans avoir à ouvrir le caisson.
     
  8. HOUSSARD

    HOUSSARD Modérateur Authoring DVD
    Modérateur So

    Points Repaire:
    6 850
    Recos reçues:
    0
    Messages:
    292
    Appréciations:
    +0 / 1 / -0
    Pour Chestercat : Quel est ton caisson ?
     
  9. chestercat

    Points Repaire:
    100
    Recos reçues:
    0
    Messages:
    6
    Appréciations:
    +0 / 0 / -0
    Un beebox extrem vision
     
  10. HOUSSARD

    HOUSSARD Modérateur Authoring DVD
    Modérateur So

    Points Repaire:
    6 850
    Recos reçues:
    0
    Messages:
    292
    Appréciations:
    +0 / 1 / -0
    Nous avons donc le même caisson
     
  11. chestercat

    Points Repaire:
    100
    Recos reçues:
    0
    Messages:
    6
    Appréciations:
    +0 / 0 / -0
    Bonjour,

    Je comprends pas j'ai modifié mes tempos mais rien de mieux j'ai toujours toutes les commandes de Rec de zoom mais pas d'autofocus n i de net near et far.

    J'ai egalement un prog en C pour modifier rapidement mon programme.

    As-tu changé le taux de transfert de la communication serie ( 9600 bauds), quels sont tes changements dans le protocole et sur la prise Lan-c?

    Moi j'ai dû souder une résistance de 100K entre les pattes 7 et 3 de la broches A/V R demi lune.

    Peux-tu me mettre juste le bout de code sur la communication et j'essaierai de l'adapter au mien?

    Merci beaucoup pour ton aide

    Cordialement

    CC
     
  12. HOUSSARD

    HOUSSARD Modérateur Authoring DVD
    Modérateur So

    Points Repaire:
    6 850
    Recos reçues:
    0
    Messages:
    292
    Appréciations:
    +0 / 1 / -0
    Bonjour

    Personnellement j'ai juste testé le bon fonctionnement pour les mises au point mais je n'ai pas souhaité les conserver. Je n'ai donc plus le programme de test, par contre tu trouveras ci dessous mon programme en language C qui fonctionne parfaitement. J'ai aussi basculé dans le menu du XR500 l'affichage du moniteur extérieur avec toutes les infos. Tu as ainsi à l'écran les info sur l'autonomie, si tu es en pause ou non. Je n'ai pas développé la partie de programme pour connaitre le statut de la caméra et ainsi gérer la DEL de Pause/REC. C'est inutile avec l'affichage détaillé. De mon coté le caisson sera immergée dans quelques jours dans les eaux Indonésiennes.
    Bonnes bulles
    François


    ;/////////////////////////////////////////////////////////////////////////////////
    ;// Code Generator: BoostC Compiler - SourceBoost Technologies - Home of BoostC Free PIC C Compiler and BoostBasic Free Pic Basic Compiler
    ;// Version : 6.70
    ;// License Type : Full License
    ;// Limitations : PIC12,PIC16 max code size:Unlimited, max RAM banks:Unlimited, Non commercial use only
    ;/////////////////////////////////////////////////////////////////////////////////

    //************************************************************************************
    //**
    //** File name: M:\CAISSON PLONGEE LANC\caisson ok 2 definitif XR500-SR11 avec mise en veille auto 5min.c
    //** Date: Wednesday, July 22, 2009 12:02:07
    #define MX_PIC

    //Définir pour microcontrôleur
    #define P16F628A
    #define MX_EE
    #define MX_EE_TYPE1
    #define MX_EE_SIZE 128
    #define MX_UART
    #define MX_UART_B
    #define MX_UART_TX 2
    #define MX_UART_RX 1
    #define MX_PWM
    #define MX_PWM_CNT 1
    #define MX_PWM_TRIS1 trisb
    #define MX_PWM_1 3

    //Fonctions
    #include <system.h>
    #pragma CLOCK_FREQ 10000000

    //Configuration de données
    #pragma DATA 0x2007, 0x3f2a

    //Fonctions internes
    #include "C:\Program Files\Matrix Multimedia\Flowcode V3\FCD\internals.h"

    //Déclarations de fonction Macro
    void FCM_detectionstartoctet0();
    void FCM_attentestartbit();
    void FCM_transfertseriecommande();
    void FCM_transfertserieadresse();
    void FCM_traitement();


    //Déclarations de Variable
    char FCV_COMMANDE;
    short FCV_LANCR;
    char FCV_NBMEV;
    char FCV_ADRESSE;
    short FCV_CONTEUR;
    short FCV_MAGNETO;
    short FCV_FONCTIONS;
    char FCV_ZOOMW;

    char FCLV_LOOP1;
    char FCLV_LOOP2;


    //Définitions supplémentaires


    //Implémentations Macro

    void FCM_detectionstartoctet0()

    {
    //détection du start de l'octet 0 d'adressage

    //Point de jonction
    //Point de jonction: A
    FCC_detectionstartoctet0_A:
    008E label268439630



    //Calcul
    //Calcul:
    // conteur = 0
    FCV_CONTEUR = 0;
    008E 1283 BCF STATUS, RP0
    008F 1303 BCF STATUS, RP1
    0090 01A5 CLRF gbl_FCV_CONTEUR
    0091 01A6 CLRF gbl_FCV_CONTEUR+D'1'



    //Point de jonction
    //Point de jonction: B
    FCC_detectionstartoctet0_B:
    0092 label268439632



    //Entrée
    //Entrée: A1 -> LANCR
    trisa = trisa | 0x02;
    0092 3002 MOVLW 0x02
    0093 1683 BSF STATUS, RP0
    0094 0405 IORWF gbl_trisa, W
    0095 0085 MOVWF gbl_trisa

    FCV_LANCR = ((porta & 0x02) == 0x02);
    0096 3002 MOVLW 0x02
    0097 1283 BCF STATUS, RP0
    0098 0505 ANDWF gbl_porta, W
    0099 00AE MOVWF CompTempVar623
    009A 01A3 CLRF gbl_FCV_LANCR
    009B 01A4 CLRF gbl_FCV_LANCR+D'1'
    009C 3002 MOVLW 0x02
    009D 022E SUBWF CompTempVar623, W
    009E 1903 BTFSC STATUS,Z
    009F 0AA3 INCF gbl_FCV_LANCR, F



    //Condition
    //Condition: LANCR = 1?
    if (FCV_LANCR == 1)
    00A0 3001 MOVLW 0x01
    00A1 0623 XORWF gbl_FCV_LANCR, W
    00A2 1903 BTFSC STATUS,Z
    00A3 0824 MOVF gbl_FCV_LANCR+D'1', W
    00A4 1D03 BTFSS STATUS,Z
    00A5 288E GOTO label268439630

    {
    //Calcul
    //Calcul:
    // conteur = conteur + 1
    FCV_CONTEUR = FCV_CONTEUR + 1;
    00A6 0AA5 INCF gbl_FCV_CONTEUR, F
    00A7 1D03 BTFSS STATUS,Z
    00A8 28AA GOTO label268439646
    00A9 0AA6 INCF gbl_FCV_CONTEUR+D'1', F
    00AA label268439646



    //Pause
    //Pause: 1 ms
    delay_ms(1);
    00AA 3001 MOVLW 0x01
    00AB 00B6 MOVWF delay_ms_00000_arg_del
    00AC 2010 CALL delay_ms_00000



    //Condition
    //Condition: conteur = 5?
    if (FCV_CONTEUR == 5)
    00AD 3005 MOVLW 0x05
    00AE 0625 XORWF gbl_FCV_CONTEUR, W
    00AF 1903 BTFSC STATUS,Z
    00B0 0826 MOVF gbl_FCV_CONTEUR+D'1', W
    00B1 1D03 BTFSS STATUS,Z

    {
    } else {
    //Aller au point de jonction
    //Aller au point de jonction: B
    goto FCC_detectionstartoctet0_B;
    00B2 2892 GOTO label268439632



    }


    } else {
    //Aller au point de jonction
    //Aller au point de jonction: A
    goto FCC_detectionstartoctet0_A;



    }


    }
    00B3 0008 RETURN


    void FCM_attentestartbit()

    {
    //attente d'un start bit

    //Point de jonction
    //Point de jonction: A
    FCC_attentestartbit_A:
    00B4 label268439660



    //Entrée
    //Entrée: A1 -> LANCR
    trisa = trisa | 0x02;
    00B4 3002 MOVLW 0x02
    00B5 1683 BSF STATUS, RP0
    00B6 1303 BCF STATUS, RP1
    00B7 0405 IORWF gbl_trisa, W
    00B8 0085 MOVWF gbl_trisa

    FCV_LANCR = ((porta & 0x02) == 0x02);
    00B9 3002 MOVLW 0x02
    00BA 1283 BCF STATUS, RP0
    00BB 0505 ANDWF gbl_porta, W
    00BC 00AE MOVWF CompTempVar628
    00BD 01A3 CLRF gbl_FCV_LANCR
    00BE 01A4 CLRF gbl_FCV_LANCR+D'1'
    00BF 3002 MOVLW 0x02
    00C0 022E SUBWF CompTempVar628, W
    00C1 1903 BTFSC STATUS,Z
    00C2 0AA3 INCF gbl_FCV_LANCR, F



    //Condition
    //Condition: LANCR = 0?
    if (FCV_LANCR == 0)
    00C3 08A3 MOVF gbl_FCV_LANCR, F
    00C4 1D03 BTFSS STATUS,Z
    00C5 28B4 GOTO label268439660
    00C6 08A4 MOVF gbl_FCV_LANCR+D'1', F
    00C7 1D03 BTFSS STATUS,Z
    00C8 28B4 GOTO label268439660

    {
    } else {
    //Aller au point de jonction
    //Aller au point de jonction: A
    goto FCC_attentestartbit_A;



    }


    }
    00C9 0008 RETURN


    void FCM_transfertseriecommande()

    {

    //Attente fin bit de Start
    //Code C:
    delay_10us(9);
    0062 3009 MOVLW 0x09
    0063 1283 BCF STATUS, RP0
    0064 1303 BCF STATUS, RP1
    0065 00AE MOVWF delay_10us_00000_arg_del
    0066 2028 CALL delay_10us_00000



    //Boucle
    //Boucle: Boucle 8 fois
    for (FCLV_LOOP1=0; FCLV_LOOP1<8; FCLV_LOOP1++)
    0067 01AC CLRF gbl_FCLV_LOOP1
    0068 label268439677
    0068 3008 MOVLW 0x08
    0069 022C SUBWF gbl_FCLV_LOOP1, W
    006A 1803 BTFSC STATUS,C
    006B 2882 GOTO label268439678
    0080 0AAC INCF gbl_FCLV_LOOP1, F
    0081 2868 GOTO label268439677
    0082 label268439678

    {
    //Sortie bit en commençant par bit 0
    //Sortie: commande -> PORT A
    trisa = trisa & 0xfe;
    006C 30FE MOVLW 0xFE
    006D 1683 BSF STATUS, RP0
    006E 0505 ANDWF gbl_trisa, W
    006F 0085 MOVWF gbl_trisa

    porta = (porta & 0xfe) | (FCV_COMMANDE & 0x01);
    0070 30FE MOVLW 0xFE
    0071 1283 BCF STATUS, RP0
    0072 0505 ANDWF gbl_porta, W
    0073 00AE MOVWF CompTempVar631
    0074 3001 MOVLW 0x01
    0075 0529 ANDWF gbl_FCV_COMMANDE, W
    0076 042E IORWF CompTempVar631, W
    0077 0085 MOVWF gbl_porta



    //durée d'un bit 100us
    //Code C:
    delay_10us(9);
    0078 3009 MOVLW 0x09
    0079 00AE MOVWF delay_10us_00000_arg_del
    007A 2028 CALL delay_10us_00000



    //decalage à droite 1 bit
    //Calcul:
    // commande = commande >> 1
    FCV_COMMANDE = FCV_COMMANDE >> 1;
    007B 0829 MOVF gbl_FCV_COMMANDE, W
    007C 00AE MOVWF CompTempVar632
    007D 1003 BCF STATUS,C
    007E 0C2E RRF CompTempVar632, W
    007F 00A9 MOVWF gbl_FCV_COMMANDE



    }


    //Bit de Stop
    //Sortie: 0 -> A0
    trisa = trisa & 0xfe;
    0082 30FE MOVLW 0xFE
    0083 1683 BSF STATUS, RP0
    0084 0505 ANDWF gbl_trisa, W
    0085 0085 MOVWF gbl_trisa

    if (0)
    porta = (porta & 0xfe) | 0x01;
    else
    porta = porta & 0xfe;
    0086 30FE MOVLW 0xFE
    0087 1283 BCF STATUS, RP0
    0088 0505 ANDWF gbl_porta, W
    0089 0085 MOVWF gbl_porta



    //Code C
    //Code C:
    delay_10us(9);
    008A 3009 MOVLW 0x09
    008B 00AE MOVWF delay_10us_00000_arg_del
    008C 2028 CALL delay_10us_00000



    }
    008D 0008 RETURN


    void FCM_transfertserieadresse()

    {

    //Attente fin bit de Start
    //Code C:
    delay_10us(9);
    0036 3009 MOVLW 0x09
    0037 1283 BCF STATUS, RP0
    0038 1303 BCF STATUS, RP1
    0039 00AE MOVWF delay_10us_00000_arg_del
    003A 2028 CALL delay_10us_00000



    //Boucle
    //Boucle: Boucle 8 fois
    for (FCLV_LOOP2=0; FCLV_LOOP2<8; FCLV_LOOP2++)
    003B 01AD CLRF gbl_FCLV_LOOP2
    003C label268439706
    003C 3008 MOVLW 0x08
    003D 022D SUBWF gbl_FCLV_LOOP2, W
    003E 1803 BTFSC STATUS,C
    003F 2856 GOTO label268439707
    0054 0AAD INCF gbl_FCLV_LOOP2, F
    0055 283C GOTO label268439706
    0056 label268439707

    {
    //Sortie bit en commençant par bit 0
    //Sortie: adresse -> PORT A
    trisa = trisa & 0xfe;
    0040 30FE MOVLW 0xFE
    0041 1683 BSF STATUS, RP0
    0042 0505 ANDWF gbl_trisa, W
    0043 0085 MOVWF gbl_trisa

    porta = (porta & 0xfe) | (FCV_ADRESSE & 0x01);
    0044 30FE MOVLW 0xFE
    0045 1283 BCF STATUS, RP0
    0046 0505 ANDWF gbl_porta, W
    0047 00AE MOVWF CompTempVar633
    0048 3001 MOVLW 0x01
    0049 052B ANDWF gbl_FCV_ADRESSE, W
    004A 042E IORWF CompTempVar633, W
    004B 0085 MOVWF gbl_porta



    //durée d'un bit 100us
    //Code C:
    delay_10us(9);
    004C 3009 MOVLW 0x09
    004D 00AE MOVWF delay_10us_00000_arg_del
    004E 2028 CALL delay_10us_00000



    //decalage à droite 1 bit
    //Calcul:
    // adresse = adresse >> 1
    FCV_ADRESSE = FCV_ADRESSE >> 1;
    004F 082B MOVF gbl_FCV_ADRESSE, W
    0050 00AE MOVWF CompTempVar634
    0051 1003 BCF STATUS,C
    0052 0C2E RRF CompTempVar634, W
    0053 00AB MOVWF gbl_FCV_ADRESSE



    }


    //Bit de Stop
    //Sortie: 0 -> A0
    trisa = trisa & 0xfe;
    0056 30FE MOVLW 0xFE
    0057 1683 BSF STATUS, RP0
    0058 0505 ANDWF gbl_trisa, W
    0059 0085 MOVWF gbl_trisa

    if (0)
    porta = (porta & 0xfe) | 0x01;
    else
    porta = porta & 0xfe;
    005A 30FE MOVLW 0xFE
    005B 1283 BCF STATUS, RP0
    005C 0505 ANDWF gbl_porta, W
    005D 0085 MOVWF gbl_porta



    //Code C
    //Code C:
    delay_10us(9);
    005E 3009 MOVLW 0x09
    005F 00AE MOVWF delay_10us_00000_arg_del
    0060 2028 CALL delay_10us_00000



    }
    0061 0008 RETURN


    void FCM_traitement()

    {

    //detection start octet 0
    //Appel d'une Macro: detectionstartoctet0
    FCM_detectionstartoctet0();
    00CA 208E CALL FCM_detect_0001D



    //détection start bit
    //Appel d'une Macro: attentestartbit
    FCM_attentestartbit();
    00CB 20B4 CALL FCM_attent_0001E



    //transfert série de l'adresse
    //Appel d'une Macro: transfertserieadresse
    FCM_transfertserieadresse();
    00CC 2036 CALL FCM_transf_00020



    //détection start bit octet 1
    //Appel d'une Macro: attentestartbit
    FCM_attentestartbit();
    00CD 20B4 CALL FCM_attent_0001E



    //transfert série de la commande
    //Appel d'une Macro: transfertseriecommande
    FCM_transfertseriecommande();
    00CE 2062 CALL FCM_transf_0001F



    //attente octets 2 à 7
    //Pause: 8 ms
    delay_ms(8);
    00CF 3008 MOVLW 0x08
    00D0 00B6 MOVWF delay_ms_00000_arg_del
    00D1 2010 CALL delay_ms_00000



    }
    00D2 0008 RETURN


    //Installation supplémentaire


    void main()

    {

    //Initialisation
    cmcon = 0x07;
    00D3 3007 MOVLW 0x07
    00D4 1283 BCF STATUS, RP0
    00D5 1303 BCF STATUS, RP1
    00D6 009F MOVWF gbl_cmcon



    //Code d'initialisation d'Interruption
    option_reg = 0xC0;
    00D7 30C0 MOVLW 0xC0
    00D8 1683 BSF STATUS, RP0
    00D9 0081 MOVWF gbl_option_reg



    //Calcul
    //Calcul:
    // nbmev = 0
    FCV_NBMEV = 0;
    00DA 1283 BCF STATUS, RP0
    00DB 01AA CLRF gbl_FCV_NBMEV



    //marche batterie annexe
    //Sortie: 1 -> A3
    trisa = trisa & 0xf7;
    00DC 30F7 MOVLW 0xF7
    00DD 1683 BSF STATUS, RP0
    00DE 0505 ANDWF gbl_trisa, W
    00DF 0085 MOVWF gbl_trisa

    if (1)
    porta = (porta & 0xf7) | 0x08;
    00E0 30F7 MOVLW 0xF7
    00E1 1283 BCF STATUS, RP0
    00E2 0505 ANDWF gbl_porta, W
    00E3 00AE MOVWF CompTempVar635
    00E4 3008 MOVLW 0x08
    00E5 042E IORWF CompTempVar635, W
    00E6 0085 MOVWF gbl_porta

    else
    00E7 label268439755
     
  13. HOUSSARD

    HOUSSARD Modérateur Authoring DVD
    Modérateur So

    Points Repaire:
    6 850
    Recos reçues:
    0
    Messages:
    292
    Appréciations:
    +0 / 1 / -0
    La suite (en raison de la limitation) :

    porta = porta & 0xf7;


    //Boucle
    //Boucle: Tant que1
    while (1)
    0178 28E7 GOTO label268439755

    {
    //Calcul
    //Calcul:
    // fonctions = 0
    FCV_FONCTIONS = 0;
    00E7 01A7 CLRF gbl_FCV_FONCTIONS
    00E8 01A8 CLRF gbl_FCV_FONCTIONS+D'1'



    //Entrée
    //Entrée: PORT B -> fonctions
    trisb = trisb | 0xff;
    00E9 30FF MOVLW 0xFF
    00EA 1683 BSF STATUS, RP0
    00EB 0406 IORWF gbl_trisb, W
    00EC 0086 MOVWF gbl_trisb

    FCV_FONCTIONS = portb;
    00ED 1283 BCF STATUS, RP0
    00EE 0806 MOVF gbl_portb, W
    00EF 00A7 MOVWF gbl_FCV_FONCTIONS
    00F0 01A8 CLRF gbl_FCV_FONCTIONS+D'1'



    //Marche/Arret
    //Condition: fonctions = 125?
    if (FCV_FONCTIONS == 125)
    00F1 307D MOVLW 0x7D
    00F2 0627 XORWF gbl_FCV_FONCTIONS, W
    00F3 1903 BTFSC STATUS,Z
    00F4 0828 MOVF gbl_FCV_FONCTIONS+D'1', W
    00F5 1D03 BTFSS STATUS,Z
    00F6 28FC GOTO label268439763
    00FC label268439763

    {
    //valeur dec de l'adresse (28)h
    //Calcul:
    // adresse = 40
    FCV_ADRESSE = 40;
    00F7 3028 MOVLW 0x28
    00F8 00AB MOVWF gbl_FCV_ADRESSE



    //valeur dec de la commande (5E)h
    //Calcul:
    // commande = 94
    FCV_COMMANDE = 94;
    00F9 305E MOVLW 0x5E
    00FA 00A9 MOVWF gbl_FCV_COMMANDE



    } else {
    00FB 2977 GOTO label268439841

    //PHOTO
    //Condition: fonctions = 187?
    if (FCV_FONCTIONS == 187)
    00FC 30BB MOVLW 0xBB
    00FD 0627 XORWF gbl_FCV_FONCTIONS, W
    00FE 1903 BTFSC STATUS,Z
    00FF 0828 MOVF gbl_FCV_FONCTIONS+D'1', W
    0100 1D03 BTFSS STATUS,Z
    0101 2907 GOTO label268439771
    0107 label268439771

    {
    //valeur dec de l'adresse (18)h
    //Calcul:
    // adresse = 24
    FCV_ADRESSE = 24;
    0102 3018 MOVLW 0x18
    0103 00AB MOVWF gbl_FCV_ADRESSE



    //valeur dec de la commande (2B)h
    //Calcul:
    // commande = 43
    FCV_COMMANDE = 43;
    0104 302B MOVLW 0x2B
    0105 00A9 MOVWF gbl_FCV_COMMANDE



    } else {
    0106 2977 GOTO label268439841

    //ZOOM T en F2 ou F3
    //Condition: fonctions = 231 OR fonctions = 235?
    if (FCV_FONCTIONS == 231 | FCV_FONCTIONS == 235)
    0107 01AF CLRF CompTempVar637
    0108 30E7 MOVLW 0xE7
    0109 0227 SUBWF gbl_FCV_FONCTIONS, W
    010A 1903 BTFSC STATUS,Z
    010B 0828 MOVF gbl_FCV_FONCTIONS+D'1', W
    010C 1903 BTFSC STATUS,Z
    010D 0AAF INCF CompTempVar637, F
    010E 01AE CLRF CompTempVar636
    010F 30EB MOVLW 0xEB
    0110 0227 SUBWF gbl_FCV_FONCTIONS, W
    0111 1903 BTFSC STATUS,Z
    0112 0828 MOVF gbl_FCV_FONCTIONS+D'1', W
    0113 1903 BTFSC STATUS,Z
    0114 0AAE INCF CompTempVar636, F
    0115 082E MOVF CompTempVar636, W
    0116 042F IORWF CompTempVar637, W
    0117 1903 BTFSC STATUS,Z
    0118 291E GOTO label268439784
    011E label268439784

    {
    //valeur dec de l'adresse (28)h
    //Calcul:
    // adresse = 40
    FCV_ADRESSE = 40;
    0119 3028 MOVLW 0x28
    011A 00AB MOVWF gbl_FCV_ADRESSE



    //valeur dec de la commande (6)h
    //Calcul:
    // commande = 6
    FCV_COMMANDE = 6;
    011B 3006 MOVLW 0x06
    011C 00A9 MOVWF gbl_FCV_COMMANDE



    } else {
    011D 2977 GOTO label268439841

    //ZOOM W en F2 ou F3
    //Condition: fonctions = 215 OR fonctions = 219?
    if (FCV_FONCTIONS == 215 | FCV_FONCTIONS == 219)
    011E 01B1 CLRF CompTempVar639
    011F 30D7 MOVLW 0xD7
    0120 0227 SUBWF gbl_FCV_FONCTIONS, W
    0121 1903 BTFSC STATUS,Z
    0122 0828 MOVF gbl_FCV_FONCTIONS+D'1', W
    0123 1903 BTFSC STATUS,Z
    0124 0AB1 INCF CompTempVar639, F
    0125 01B0 CLRF CompTempVar638
    0126 30DB MOVLW 0xDB
    0127 0227 SUBWF gbl_FCV_FONCTIONS, W
    0128 1903 BTFSC STATUS,Z
    0129 0828 MOVF gbl_FCV_FONCTIONS+D'1', W
    012A 1903 BTFSC STATUS,Z
    012B 0AB0 INCF CompTempVar638, F
    012C 0830 MOVF CompTempVar638, W
    012D 0431 IORWF CompTempVar639, W
    012E 1903 BTFSC STATUS,Z
    012F 2935 GOTO label268439797
    0135 label268439797

    {
    //valeur dec de l'adresse (28)h
    //Calcul:
    // adresse = 40
    FCV_ADRESSE = 40;
    0130 3028 MOVLW 0x28
    0131 00AB MOVWF gbl_FCV_ADRESSE



    //valeur dec de la commande (16)h
    //Calcul:
    // commande = 22
    FCV_COMMANDE = 22;
    0132 3016 MOVLW 0x16
    0133 00A9 MOVWF gbl_FCV_COMMANDE



    } else {
    0134 2977 GOTO label268439841

    //Enregistrement/Stop
    //Condition: fonctions = 183?
    if (FCV_FONCTIONS == 183)
    0135 30B7 MOVLW 0xB7
    0136 0627 XORWF gbl_FCV_FONCTIONS, W
    0137 1903 BTFSC STATUS,Z
    0138 0828 MOVF gbl_FCV_FONCTIONS+D'1', W
    0139 1D03 BTFSS STATUS,Z
    013A 2940 GOTO label268439805
    0140 label268439805

    {
    //valeur dec de l'adresse (18)h
    //Calcul:
    // adresse = 24
    FCV_ADRESSE = 24;
    013B 3018 MOVLW 0x18
    013C 00AB MOVWF gbl_FCV_ADRESSE



    //valeur dec de la commande (33)h
    //Calcul:
    // commande = 51
    FCV_COMMANDE = 51;
    013D 3033 MOVLW 0x33
    013E 00A9 MOVWF gbl_FCV_COMMANDE



    } else {
    013F 2977 GOTO label268439841

    //Mise au point
    //Condition: fonctions = 119?
    if (FCV_FONCTIONS == 119)
    0140 3077 MOVLW 0x77
    0141 0627 XORWF gbl_FCV_FONCTIONS, W
    0142 1903 BTFSC STATUS,Z
    0143 0828 MOVF gbl_FCV_FONCTIONS+D'1', W
    0144 1D03 BTFSS STATUS,Z
    0145 294B GOTO label268439813
    014B label268439813

    {
    //Valeur de l'adresse cam 28 inv
    //Calcul:
    // adresse = 40
    FCV_ADRESSE = 40;
    0146 3028 MOVLW 0x28
    0147 00AB MOVWF gbl_FCV_ADRESSE



    //valeur dec de la commande (41)h
    //Calcul:
    // commande = 65
    FCV_COMMANDE = 65;
    0148 3041 MOVLW 0x41
    0149 00A9 MOVWF gbl_FCV_COMMANDE



    } else {
    014A 2977 GOTO label268439841

    //empèche la mise en veille
    //Condition: fonctions = 7 OR fonctions = 11 OR fonctions = 13?
    if (FCV_FONCTIONS == 7 | FCV_FONCTIONS == 11 | FCV_FONCTIONS == 13)
    014B 01B3 CLRF CompTempVar641
    014C 3007 MOVLW 0x07
    014D 0227 SUBWF gbl_FCV_FONCTIONS, W
    014E 1903 BTFSC STATUS,Z
    014F 0828 MOVF gbl_FCV_FONCTIONS+D'1', W
    0150 1903 BTFSC STATUS,Z
    0151 0AB3 INCF CompTempVar641, F
    0152 01B2 CLRF CompTempVar640
    0153 300B MOVLW 0x0B
    0154 0227 SUBWF gbl_FCV_FONCTIONS, W
    0155 1903 BTFSC STATUS,Z
    0156 0828 MOVF gbl_FCV_FONCTIONS+D'1', W
    0157 1903 BTFSC STATUS,Z
    0158 0AB2 INCF CompTempVar640, F
    0159 0832 MOVF CompTempVar640, W
    015A 0433 IORWF CompTempVar641, W
    015B 00B5 MOVWF CompTempVar643
    015C 01B4 CLRF CompTempVar642
    015D 300D MOVLW 0x0D
    015E 0227 SUBWF gbl_FCV_FONCTIONS, W
    015F 1903 BTFSC STATUS,Z
    0160 0828 MOVF gbl_FCV_FONCTIONS+D'1', W
    0161 1903 BTFSC STATUS,Z
    0162 0AB4 INCF CompTempVar642, F
    0163 0834 MOVF CompTempVar642, W
    0164 0435 IORWF CompTempVar643, W
    0165 1903 BTFSC STATUS,Z
    0166 2977 GOTO label268439841

    {
    //Calcul
    //Calcul:
    // nbmev = nbmev + 1
    FCV_NBMEV = FCV_NBMEV + 1;
    0167 0A2A INCF gbl_FCV_NBMEV, W
    0168 00AA MOVWF gbl_FCV_NBMEV



    //Condition
    //Condition: nbmev = 1000?
    if (FCV_NBMEV == 1000)
    0169 3AE8 XORLW 0xE8
    016A 1903 BTFSC STATUS,Z
    016B 3A03 XORLW 0x03
    016C 1D03 BTFSS STATUS,Z
    016D 2974 GOTO label268439835
    0174 label268439835

    {
    //valeur dec de l'adresse (18)h
    //Calcul:
    // adresse = 24
    FCV_ADRESSE = 24;
    016E 3018 MOVLW 0x18
    016F 00AB MOVWF gbl_FCV_ADRESSE



    //valeur dec de la commande (6C)h
    //Calcul:
    // commande = 108
    FCV_COMMANDE = 108;
    0170 306C MOVLW 0x6C
    0171 00A9 MOVWF gbl_FCV_COMMANDE



    //Calcul
    //Calcul:
    // nbmev = 0
    FCV_NBMEV = 0;
    0172 01AA CLRF gbl_FCV_NBMEV



    } else {
    0173 2977 GOTO label268439841
    0177 label268439841

    //Pause
    //Pause: 4 ms
    delay_ms(4);
    0174 3004 MOVLW 0x04
    0175 00B6 MOVWF delay_ms_00000_arg_del
    0176 2010 CALL delay_ms_00000



    }


    }


    }


    }


    }


    }


    }


    }


    //Appel d'une Macro
    //Appel d'une Macro: traitement
    FCM_traitement();
    0177 20CA CALL FCM_traite_00021



    }


    mainendloop: goto mainendloop;
    }


    void interrupt(void)

    {
    }
    017C 1283 BCF STATUS, RP0
    017D 1303 BCF STATUS, RP1
    017E 0E22 SWAPF Int1BContext+D'2', W
    017F 0084 MOVWF FSR
    0180 0E21 SWAPF Int1BContext+D'1', W
    0181 008A MOVWF PCLATH
    0182 0E20 SWAPF Int1BContext, W
    0183 0083 MOVWF STATUS
    0184 0EFF SWAPF Int1Context, F
    0185 0E7F SWAPF Int1Context, W
    0186 0009 RETFIE





    ////////////////////////////////////////
    // Code with no source :-)
    ////////////////////////////////////////
    0000 2979 GOTO _startup

    0004 00FF MOVWF Int1Context
    0005 0E03 SWAPF STATUS, W
    0006 1283 BCF STATUS, RP0
    0007 1303 BCF STATUS, RP1
    0008 00A0 MOVWF Int1BContext
    0009 0E0A SWAPF PCLATH, W
    000A 00A1 MOVWF Int1BContext+D'1'
    000B 0E04 SWAPF FSR, W
    000C 00A2 MOVWF Int1BContext+D'2'
    000D 118A BCF PCLATH,3
    000E 120A BCF PCLATH,4
    000F 297C GOTO interrupt
    0010 delay_ms_00000
    0010 ; { delay_ms ; function begin
    0010 08B6 MOVF delay_ms_00000_arg_del, F
    0011 1D03 BTFSS STATUS,Z
    0012 2814 GOTO label4026531858
    0013 0008 RETURN
    0014 label4026531858
    0014 30F9 MOVLW 0xF9
    0015 label4026531859
    0015 0000 NOP
    0016 0000 NOP
    0017 0000 NOP
    0018 0000 NOP
    0019 0000 NOP
    001A 0000 NOP
    001B 3EFF ADDLW 0xFF
    001C 1D03 BTFSS STATUS,Z
    001D 2815 GOTO label4026531859
    001E 0000 NOP
    001F 0000 NOP
    0020 0000 NOP
    0021 0000 NOP
    0022 0000 NOP
    0023 0000 NOP
    0024 0000 NOP
    0025 0BB6 DECFSZ delay_ms_00000_arg_del, F
    0026 2814 GOTO label4026531858
    0027 0008 RETURN
    0028 ; } delay_ms function end

    0028 delay_10us_00000
    0028 ; { delay_10us ; function begin
    0028 08AE MOVF delay_10us_00000_arg_del, F
    0029 1D03 BTFSS STATUS,Z
    002A 282C GOTO label4026531848
    002B 0008 RETURN
    002C label4026531848
    002C 3004 MOVLW 0x04
    002D label4026531849
    002D 0000 NOP
    002E 3EFF ADDLW 0xFF
    002F 1D03 BTFSS STATUS,Z
    0030 282D GOTO label4026531849
    0031 0000 NOP
    0032 0000 NOP
    0033 0BAE DECFSZ delay_10us_00000_arg_del, F
    0034 282C GOTO label4026531848
    0035 0008 RETURN
    0036 ; } delay_10us function end


    0179 _startup
    0179 118A BCF PCLATH,3
    017A 120A BCF PCLATH,4
    017B 28D3 GOTO main

    2007 3F2A DW 0x3F2A
     
  14. HOUSSARD

    HOUSSARD Modérateur Authoring DVD
    Modérateur So

    Points Repaire:
    6 850
    Recos reçues:
    0
    Messages:
    292
    Appréciations:
    +0 / 1 / -0
    Tu es de quelle région ? Je suis de Toulouse.
     
  15. chestercat

    Points Repaire:
    100
    Recos reçues:
    0
    Messages:
    6
    Appréciations:
    +0 / 0 / -0
    Merci beaucoup,

    Malheureusement je ne vois pas de grande différence entre mon prog et le tien. Et ca ne fonctionne toujours pas.

    Je suis de la région Lyonnaise.

    Bon film en indonésie alors....

    A +

    CC
     
Chargement...

Dernières occasions

 

Partager cette page