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 21:18] – sdeniaud | fr:examples:can:wiper:tp1 [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 9: | Line 9: | ||
| * 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> | <code c> | ||
| T_IM_Commodo_EG.trame_info.registre=0x00; | T_IM_Commodo_EG.trame_info.registre=0x00; | ||
| Line 41: | Line 48: | ||
| T_IM_Commodo_EG.ident.extend.identificateur.ident=Ident_T_IM_Commodo_EG; | T_IM_Commodo_EG.ident.extend.identificateur.ident=Ident_T_IM_Commodo_EG; | ||
| </ | </ | ||
| - | Rem: '' | + | |
| - | * Définition des paramètres associés à la '' | + | Rem : '' |
| - | Il faut initialiser le registre GPDDR ('' | + | * 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> | <code c> | ||
| T_IM_Commodo_EG.data[0]=0x1F; | T_IM_Commodo_EG.data[0]=0x1F; | ||
| Line 50: | Line 59: | ||
| </ | </ | ||
| - | 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> | <code c> | ||
| - | T_IM_ Commodo_EG.data[0]=0x2A; | + | T_IM_ Commodo_EG.data[0]=0x2A; |
| T_IM_ Commodo_EG.data[1]=0xF0; | T_IM_ Commodo_EG.data[1]=0xF0; | ||
| T_IM_ Commodo_EG nt.data[2]=0x80; | T_IM_ Commodo_EG nt.data[2]=0x80; | ||
| </ | </ | ||
| - | 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> | <code c> | ||
| - | T_IM_ Commodo_EG.data[0]=0x2B; | + | T_IM_ Commodo_EG.data[0]=0x2B; |
| T_IM_ Commodo_EG.data[1]=0xFF; | T_IM_ Commodo_EG.data[1]=0xFF; | ||
| T_IM_ Commodo_EG.data[2]=0xO3; | T_IM_ Commodo_EG.data[2]=0xO3; | ||
| Line 80: | Line 91: | ||
| </ | </ | ||
| - | 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 '' | ||
| Line 105: | Line 119: | ||
| </ | </ | ||
| - | Des labels définissant les différents | + | 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 121: | 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 129: | Line 145: | ||
| {{ : | {{ : | ||
| - | ==== Programme en "C" | + | ==== Programme en C ==== |
| <code c> | <code c> | ||
| Line 148: | 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' | * -> 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) | ||
| *---------------------------------------------------------------------------------------------- | *---------------------------------------------------------------------------------------------- | ||