Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
fr:examples:can:wiper:tp1 [2010/03/11 06:37] sdeniaudfr:examples:can:wiper:tp1 [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 30: Line 30:
 ==== Analyse ==== ==== Analyse ====
  
-Avant de pouvoir lire l'état des entrées du module 8 entrées (dont on donne le schéma structurel en [[annex4|annexe 4]]) sur lequel est relié le commodo essuie-glace, il faut préalablement configurer  le "CAN expender MCP25050" +Avant de pouvoir lire l'état des entrées du module 8 entrées (dont on donne le schéma structurel en [[annex4|annexe 4]]) sur lequel est relié le commodo essuie-glace, il faut préalablement configurer  le CAN expender MCP25050 
-Cette configuration a pour but de définir en entrée les 8 bits du port (GP0 à GP7). Pour configurer un bit du port en entrée, il faut écrire un "1" sur le bit correspondant du registre GPDDR (Data Direction Register) (voir tableau "Register 5-1à la page 27  de la {{:fr:hardware:didalab:mcp2502x_5x.pdf|doc. technique}} du 25050) +Cette configuration a pour but de définir en entrée les 8 bits du port (GP0 à GP7). Pour configurer un bit du port en entrée, il faut écrire un "1" sur le bit correspondant du registre GPDDR (Data Direction Register) (voir tableau Register 5-1 à la page 27  de la {{:fr:hardware:didalab:mcp2502x_5x.pdf|doc. technique}} du 25050) 
-Dans ce cas, la trame envoyée par le contrôleur CAN (Circuit SJA1000 sur carte CAN_PC104) sera vue par le récepteur (circuit MCP25050 sur module) comme une ''IM'' "Input message", avec la fonction ''Write register'' (voir {{:fr:hardware:didalab:mcp2502x_5x.pdf|doc. technique}} du MPC25025 page 22). On pourra ainsi modifier les différents registres du module "Asservissement".+Dans ce cas, la trame envoyée par le contrôleur CAN (Circuit SJA1000 sur carte CAN_PC104) sera vue par le récepteur (circuit MCP25050 sur module) comme une ''IM'' (Input message), avec la fonction ''Write register'' (voir {{:fr:hardware:didalab:mcp2502x_5x.pdf|doc. technique}} du MPC25025 page 22). On pourra ainsi modifier les différents registres du module Asservissement.
  
-  * **Configuration des liaisons en entrées** +=== Configuration des liaisons en entrées === 
-Définition de la trame de commande (''IM'') qui sera envoyée pour configurer le module "Commodo-EG"+ 
 +**Définition de la trame de commande (''IM'') qui sera envoyée pour configurer le module Commodo-EG**
     * Définition de variables structurées sous le modèle ''Trame'' :     * Définition de variables structurées sous le modèle ''Trame'' :
 ''Trame T_IM_Commodo_EG;''  ''Trame T_IM_Commodo_EG;''
Line 50: Line 51:
 Rem : ''Ident_T_IM_Commodo_EG '' est défini dans le fichier ''[[annex2|CAN_VMD.h]]'' Rem : ''Ident_T_IM_Commodo_EG '' est défini dans le fichier ''[[annex2|CAN_VMD.h]]''
      * Définition des paramètres associés à la trame de commande      * Définition des paramètres associés à la trame de commande
-Il faut initialiser le registre GPDDR ("Data Direction Register") en écrivant un 1 si bit d'entrée et un 0 si bit de sortie ({{:fr:hardware:didalab:mcp2502x_5x.pdf|doc. technique}} MCP25050 p. 27). +Il faut initialiser le registre GPDDR (Data Direction Register) en écrivant un 1 si bit d'entrée et un 0 si bit de sortie ({{:fr:hardware:didalab:mcp2502x_5x.pdf|doc. technique}} MCP25050 p. 27). 
  
 <code c> <code c>
Line 61: Line 62:
      * envoyer la trame par la fonction ''Ecrire_Trame(T_IM_Commodo_EG)''         * envoyer la trame par la fonction ''Ecrire_Trame(T_IM_Commodo_EG)''   
      * puis attendre la réponse de type ''Ack''  en utilisant la fonction ''Lire_Trame(&T_Recue)''         * puis attendre la réponse de type ''Ack''  en utilisant la fonction ''Lire_Trame(&T_Recue)''   
-L'entrée "GP0étant une entrée analogique (AN0), il faudra mettre en œuvre la fonction de conversion analogique -> numérique.+L'entrée GP0 étant une entrée analogique (AN0), il faudra mettre en œuvre la fonction de conversion analogique -> numérique. 
 + 
 +=== Activation de la conversion Analogique -> Numérique === 
  
-  * **Activation de la conversion Analogique -> Numérique** 
 Définition des trois octets de données associées pour : Définition des trois octets de données associées pour :
   * activer et  configurer la conversion Analogique vers Numérique    * activer et  configurer la conversion Analogique vers Numérique 
-D'après la {{:fr:hardware:didalab:mcp2502x_5x.pdf|doc. technique}} du circuit MCP25050 (pages 34 à37) :+D'après la {{:fr:hardware:didalab:mcp2502x_5x.pdf|doc. technique}} du circuit MCP25050 (pages 34 à 37) :
 Il faut initialiser le registre ADCON0, Il faut initialiser le registre ADCON0,
 <code c> <code c>
-T_IM_ Commodo_EG.data[0]=0x2A; // Adresse du registre ADCON0 en écriture (doc MCP25050 p15) 0EH + décalage = 0EH + 1CH = 2AH+T_IM_ Commodo_EG.data[0]=0x2A; // Adresse du registre ADCON0 en écriture ({{:fr:hardware:didalab:mcp2502x_5x.pdf|doc.}} MCP25050 p15) 0EH + décalage = 0EH + 1CH = 2AH
 T_IM_ Commodo_EG.data[1]=0xF0; // Masque: Seul le bit 7 est concerné T_IM_ Commodo_EG.data[1]=0xF0; // Masque: Seul le bit 7 est concerné
 T_IM_ Commodo_EG nt.data[2]=0x80; // Valeur: ADON=1 -> Activation convertisseur et prescaler rate = 1:32 T_IM_ Commodo_EG nt.data[2]=0x80; // Valeur: ADON=1 -> Activation convertisseur et prescaler rate = 1:32
Line 80: Line 83:
 Il faut aussi initialiser le registre ADCON1 :   Il faut aussi initialiser le registre ADCON1 :  
 <code c> <code c>
-T_IM_ Commodo_EG.data[0]=0x2B; // Adresse du registre ADCON1 en écriture (doc MCP25050 p15) 0FH + décalage = 0EH + 1CH = 2BH+T_IM_ Commodo_EG.data[0]=0x2B; // Adresse du registre ADCON1 en écriture ({{:fr:hardware:didalab:mcp2502x_5x.pdf|doc.}} MCP25050 p. 15) 0FH + décalage = 0EH + 1CH = 2BH
 T_IM_ Commodo_EG.data[1]=0xFF; // Masque:  les 8 bits sont concernés T_IM_ Commodo_EG.data[1]=0xFF; // Masque:  les 8 bits sont concernés
 T_IM_ Commodo_EG.data[2]=0xO3; // Valeur: (doc MCP25050 p36) T_IM_ Commodo_EG.data[2]=0xO3; // Valeur: (doc MCP25050 p36)
Line 93: Line 96:
  
  
-  * **Acquisition de l'état des entrées sur le module //Commodo-EG//**+=== Acquisition de l'état des entrées sur le module Commodo-EG === 
  
 A intervalles de temps réguliers, on interroge le module 8 entrées sur lequel est connecté le commodo Essuie-Glace. Dans la réponse on attend également le résultat de conversion de l'entrée analogique. A intervalles de temps réguliers, on interroge le module 8 entrées sur lequel est connecté le commodo Essuie-Glace. Dans la réponse on attend également le résultat de conversion de l'entrée analogique.
  
-**Définition de la trame interrogative qui sera envoyée** +** Définition de la trame interrogative qui sera envoyée  ** 
-Dans ce cas, la trame envoyée par le contrôleur CAN (Circuit SJA1000 sur carte CAN_PC104) sera vue par le récepteur (circuit MCP25050 sur module) comme un "Information Request message", avec la fonction "Read A/D Regs" (voir documentation technique du "CAN ExpanderMPC25025 pages 22). + 
 + 
 +Dans ce cas, la trame envoyée par le contrôleur CAN (Circuit SJA1000 sur carte CAN_PC104) sera vue par le récepteur (circuit MCP25050 sur module) comme un ''IRM'' (Information Request Message), avec la fonction "Read A/D Regs" (voir {{:fr:hardware:didalab:mcp2502x_5x.pdf|doc. technique}} du CAN Expander MPC25025 pages 22). 
  
   * Définition de variables structurées sous le modèle ''Trame'':   * Définition de variables structurées sous le modèle ''Trame'':
Line 120: Line 126:
  
 **Trame reçue en réponse à l'interrogation** **Trame reçue en réponse à l'interrogation**
 +
 +
 D'après la définition des identificateurs donnée en [[annex1|Annexe 1]], une trame de réponse à une ''IRM'' a le même identificateur que la trame interrogative qui en a été à l'origine.  D'après la définition des identificateurs donnée en [[annex1|Annexe 1]], une trame de réponse à une ''IRM'' a le même identificateur que la trame interrogative qui en a été à l'origine. 
-Vu du module (du MCP25050), la réponse à un ''IRM'' ("Information Request Message") est un ''OM'' ("Output Message"). +Vu du module (du MCP25050), la réponse à un ''IRM'' (Information Request Message) est un ''OM'' (Output Message). 
 La trame réponse, suite à l'IRM, comportera en données associées 8 octets ({{:fr:hardware:didalab:mcp2502x_5x.pdf|doc.}} MCP25050 p. 22): La trame réponse, suite à l'IRM, comportera en données associées 8 octets ({{:fr:hardware:didalab:mcp2502x_5x.pdf|doc.}} MCP25050 p. 22):
      * octet de rang 0  (data[0])→ valeur IOINTFL  non utilisée dans notre cas      * octet de rang 0  (data[0])→ valeur IOINTFL  non utilisée dans notre cas
Line 137: Line 145:
 {{  :fr:examples:can:wiper:orga.png?600  |Organigramme}} {{  :fr:examples:can:wiper:orga.png?600  |Organigramme}}
  
-==== Programme en "C====+==== Programme en C ====
  
 <code c> <code c>
Line 156: Line 164:
 *   -> Les trames reçues et envoyées sur le bus CAN sont affichées  *   -> Les trames reçues et envoyées sur le bus CAN sont affichées
 *   -> Les états des entrées binaires et de l'entrée analogique sont affichés  *   -> Les états des entrées binaires et de l'entrée analogique sont affichés
-*   -> La temporisation est de type "logiciel +*   -> La temporisation est de type logiciel
 * (comptage du nombre de passages dans la boucle principale)  * (comptage du nombre de passages dans la boucle principale)
 *----------------------------------------------------------------------------------------------  *----------------------------------------------------------------------------------------------
fr/examples/can/wiper/tp1.1268289444.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0