This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| fr:examples:can:wiper:tp1 [2010/03/10 17:05] – sdeniaud | fr:examples:can:wiper:tp1 [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== TP1 - Exemple | + | ====== TP1 - Exemple |
| ===== Sujet ===== | ===== Sujet ===== | ||
| + | **Acquérir l' | ||
| + | ** | ||
| ==== Objectifs ==== | ==== Objectifs ==== | ||
| * Définir les trames de commande qui permettent d' | * Définir les trames de commande qui permettent d' | ||
| * Définir, puis envoyer une trame interrogative à un module d' | * Définir, puis envoyer une trame interrogative à un module d' | ||
| - | * Tester si une trame a été reçue. | + | * Tester si une trame a été reçue |
| - | * Extraire d'une trame réponse les informations attendues. | + | * Extraire d'une trame réponse les informations attendues |
| - | * Visualiser sur l' | + | * Visualiser sur l' |
| - | * Visualiser sur l' | + | * Visualiser sur l' |
| ==== Cahier des charges ==== | ==== Cahier des charges ==== | ||
| - | A intervalles de temps réguliers, on interroge le module sur lequel est connecté le commodo | + | A intervalles de temps réguliers, on interroge le module sur lequel est connecté le commodo Essuie-Glace afin de connaître son état. |
| * L' | * L' | ||
| - | * Les trames reçues ou envoyées sur le bus CAN sont affichées. | + | * Les trames reçues ou envoyées sur le bus CAN sont affichées |
| * La temporisation est de type // | * La temporisation est de type // | ||
| - | * Les différentes commandes imposées par la position de la manette commodo seront affichées individuellement. | + | * Les différentes commandes imposées par la position de la manette commodo seront affichées individuellement |
| + | |||
| + | |||
| + | ---- | ||
| ===== Eléments de solution ===== | ===== Eléments de solution ===== | ||
| + | |||
| ==== Analyse ==== | ==== Analyse ==== | ||
| - | Avant de pouvoir lire l' | + | Avant de pouvoir lire l' |
| - | Cette configuration a pour but de définir en entrée les 8 bits du port (GP0 à GP7). Pour confirer | + | Cette configuration a pour but de définir en entrée les 8 bits du port (GP0 à GP7). Pour configurer |
| - | 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 '' | + | 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 '' |
| - | * **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 | + | |
| - | * Définition de variables structurées sous le modèle '' | + | **Définition de la trame de commande ('' |
| - | '' | + | * Définition de variables structurées sous le modèle '' |
| - | * Définition des éléments d' | + | '' |
| - | '' | + | * Définition des éléments d' |
| - | '' | + | |
| - | '' | + | <code c> |
| - | '' | + | T_IM_Commodo_EG.trame_info.registre=0x00; |
| - | Rem: '' | + | T_IM_Commodo_EG.trame_info.champ.extend=1; |
| - | * Définition des paramètres associés à la '' | + | T_IM_Commodo_EG.trame_info.champ.extend=1; |
| - | Il faut initialiser le registre GPDDR ('' | + | T_IM_Commodo_EG.trame_info.champ.dlc=0x03; |
| - | '' | + | T_IM_Commodo_EG.ident.extend.identificateur.ident=Ident_T_IM_Commodo_EG; |
| - | '' | + | </ |
| - | '' | + | |
| + | Rem : '' | ||
| + | * 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' | ||
| + | |||
| + | <code c> | ||
| + | T_IM_Commodo_EG.data[0]=0x1F; | ||
| + | T_IM_Commodo_EG.data[1]=0x7F; | ||
| + | T_IM_Commodo_EG.data[2]=0x7F; | ||
| + | </code> | ||
| - | Suite à ces définitions, | + | Suite à ces définitions, |
| * envoyer la trame par la fonction '' | * envoyer la trame par la fonction '' | ||
| * puis attendre la réponse de type '' | * puis attendre la réponse de type '' | ||
| - | L' | + | L' |
| - | * **Activation de la conversion Analogique-> | + | === 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' | + | D' |
| - | Il faut initialiser le registre | + | Il faut initialiser le registre ADCON0, |
| - | '' | + | <code c> |
| - | '' | + | T_IM_ Commodo_EG.data[0]=0x2A; |
| - | '' | + | T_IM_ Commodo_EG.data[1]=0xF0; |
| + | T_IM_ Commodo_EG nt.data[2]=0x80; | ||
| + | </code> | ||
| - | Suite à ces définitions, | + | Suite à ces définitions, |
| * envoyer la trame par la fonction '' | * envoyer la trame par la fonction '' | ||
| * puis attendre la réponse de type '' | * puis attendre la réponse de type '' | ||
| - | Il faut aussi initialiser le registre | + | Il faut aussi initialiser le registre ADCON1 : |
| - | '' | + | <code c> |
| - | '' | + | T_IM_ Commodo_EG.data[0]=0x2B; |
| - | '' | + | T_IM_ Commodo_EG.data[1]=0xFF; |
| - | '' | + | T_IM_ Commodo_EG.data[2]=0xO3; |
| - | '' | + | b7=ADCS1=0; |
| - | '' | + | b5=VCFG1=0; |
| + | PCFG3: | ||
| + | </ | ||
| - | Suite à ces définitions, | + | Suite à ces définitions, |
| * envoyer la trame par la fonction '' | * envoyer la trame par la fonction '' | ||
| * puis attendre la réponse de type '' | * puis attendre la réponse de type '' | ||
| - | * **Acquisition de l' | + | === Acquisition de l' |
| 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' | 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' | ||
| - | **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 '' | + | |
| + | |||
| + | 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 '' | ||
| * Définition de variables structurées sous le modèle '' | * Définition de variables structurées sous le modèle '' | ||
| - | '' | + | '' |
| - | Rem: La variable structurée | + | Rem : La variable structurée |
| * Accès et définition des différents éléments de la variable structurée '' | * Accès et définition des différents éléments de la variable structurée '' | ||
| - | '' | + | <code c> |
| - | '' | + | T_IRM_Commodo_EG.trame_info.registre=0x00; |
| - | '' | + | T_IRM_Commodo_EG.trame_info.champ.extend=1; |
| - | '' | + | T_IRM_Commodo_EG.trame_info.champ.rtr=0x01; |
| - | '' | + | T_IRM_Commodo_EG.trame_info.champ.dlc=0x08; |
| - | Des labels définissant les différents | + | T_IRM_Commodo_EG.ident.extend.identificateur.ident= Ident_T_IRM8_Commodo_EG; |
| + | </code> | ||
| + | |||
| + | Des labels définissant les différents | ||
| - | Suite à ces définitions, | + | Suite à ces définitions, |
| * envoyer la trame par la fonction '' | * envoyer la trame par la fonction '' | ||
| * puis attendre la réponse de type '' | * puis attendre la réponse de type '' | ||
| **Trame reçue en réponse à l' | **Trame reçue en réponse à l' | ||
| - | D' | + | |
| - | 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 (doc MCP25050 | + | D' |
| + | Vu du module (du MCP25050), la réponse à un '' | ||
| + | La trame réponse, suite à l'IRM, comportera en données associées 8 octets ({{: | ||
| * octet de rang 0 (data[0])→ valeur IOINTFL | * octet de rang 0 (data[0])→ valeur IOINTFL | ||
| * octet de rang 1 (data[1])→ valeur GPIO → Valeur des entrées logiques | * octet de rang 1 (data[1])→ valeur GPIO → Valeur des entrées logiques | ||
| Line 106: | Line 137: | ||
| * octet de rang 4 (data[4])→ valeur AN10H → 2 fois 2 bits LSB conversion entrées ana. 1 et 0 | * octet de rang 4 (data[4])→ valeur AN10H → 2 fois 2 bits LSB conversion entrées ana. 1 et 0 | ||
| Les 3 autres octets ne sont pas utiles dans notre application. | Les 3 autres octets ne sont pas utiles dans notre application. | ||
| - | Le résultat de conversion est sur 10bits: | + | Le résultat de conversion est sur 10bits : |
| * pour résultat AN0 | * pour résultat AN0 | ||
| {{ : | {{ : | ||
| Line 112: | Line 143: | ||
| ==== Organigramme ==== | ==== Organigramme ==== | ||
| - | ==== Programme en "C" | + | {{ : |
| + | |||
| + | ==== Programme en C ==== | ||
| <code c> | <code c> | ||
| - | / | + | / |
| - | * TPs sur EID210 / Réseau CAN - VMD (Véhicule Multiplexé Didactique) | + | * TPs sur EID210 / Réseau CAN - VMD (Véhicule Multiplexé Didactique) |
| - | ************************************************************************************************* | + | ************************************************************************************************* |
| - | * | + | * |
| - | ************************************************************************************************* | + | ************************************************************************************************* |
| - | * TP Exemple n°1: Acquérir l' | + | * TP Exemple n°1: Acquérir l' |
| - | * du commodo Essuie-Glace | + | * du commodo Essuie-Glace |
| - | * Afficher séparément les états de ces entrées binaires | + | * Afficher séparément les états de ces entrées binaires |
| - | * | + | * |
| - | *------------------------------------------------------------------------------------------------ | + | *------------------------------------------------------------------------------------------------ |
| - | * | + | * |
| - | * ********************* | + | * ********************* |
| - | * On souhaite qu'à intervalles de temps réguliers on interroge le module 8 entrées sur lequel | + | * On souhaite qu'à intervalles de temps réguliers on interroge le module 8 entrées sur lequel |
| - | * est relié le commodo de commande Essuie-Glace | + | * est relié le commodo de commande Essuie-Glace |
| - | * -> 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' | + | * -> Les états des entrées binaires et de l' |
| - | * -> 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) |
| - | *---------------------------------------------------------------------------------------------- | + | *---------------------------------------------------------------------------------------------- |
| - | * NOM du FICHIER : TP_Exemple 2.C | + | * NOM du FICHIER : TP_Exemple 2.C |
| - | * ***************** | + | * ***************** |
| - | *************************************************************************************************/ | + | *************************************************************************************************/ |
| // Fichiers à inclure | // Fichiers à inclure | ||
| // | // | ||