version qui corrige tous les beugs
Dependents: Projet_client_serveur EX5 ex10 ex11 ... more
IHM.cpp@1:663cbe5baac4, 2016-11-05 (annotated)
- Committer:
- gr66
- Date:
- Sat Nov 05 17:19:59 2016 +0000
- Revision:
- 1:663cbe5baac4
- Parent:
- 0:cd0f9e8c609b
- Child:
- 2:ba3449b7e070
V00
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gr66 | 0:cd0f9e8c609b | 1 | #include "IHM.h" |
gr66 | 0:cd0f9e8c609b | 2 | #include "all_includes.h" |
gr66 | 0:cd0f9e8c609b | 3 | #include <stdarg.h> // Pour va_list ... dans IHM_printf |
gr66 | 0:cd0f9e8c609b | 4 | #include <stdio.h> // Pour vprintf et setprintf |
gr66 | 0:cd0f9e8c609b | 5 | #define CAN_REMOTE CANType(2) |
gr66 | 0:cd0f9e8c609b | 6 | // |
gr66 | 0:cd0f9e8c609b | 7 | |
gr66 | 0:cd0f9e8c609b | 8 | |
gr66 | 0:cd0f9e8c609b | 9 | IHM::IHM(PinName CANRx, PinName CANTx): can(CANRx,CANTx) |
gr66 | 0:cd0f9e8c609b | 10 | { |
gr66 | 0:cd0f9e8c609b | 11 | can.frequency(1000000); /*Baud rate : kbits/s */ |
gr66 | 0:cd0f9e8c609b | 12 | can.attach(this,&IHM::can_ISR_Reader); /* Fonction d'interruption CAN*/ |
gr66 | 0:cd0f9e8c609b | 13 | } |
gr66 | 0:cd0f9e8c609b | 14 | void IHM::LCD_printf(const char* format, ...) |
gr66 | 0:cd0f9e8c609b | 15 | { |
gr66 | 0:cd0f9e8c609b | 16 | va_list arg; |
gr66 | 0:cd0f9e8c609b | 17 | va_start(arg,format); |
gr66 | 0:cd0f9e8c609b | 18 | IHM_vprintf(format,arg); |
gr66 | 0:cd0f9e8c609b | 19 | va_end(arg); |
gr66 | 0:cd0f9e8c609b | 20 | } |
gr66 | 0:cd0f9e8c609b | 21 | unsigned char JOG_valeur,mise_a_jour_JOG=0,mise_a_jour_COD=0; |
gr66 | 0:cd0f9e8c609b | 22 | void IHM::can_ISR_Reader(void) |
gr66 | 0:cd0f9e8c609b | 23 | { |
gr66 | 0:cd0f9e8c609b | 24 | if (can.read(can_MsgRx[FIFO_ecriture])) { |
gr66 | 0:cd0f9e8c609b | 25 | // FIFO gestion |
gr66 | 0:cd0f9e8c609b | 26 | FIFO_ecriture=(FIFO_ecriture+1)%SIZE_FIFO; |
gr66 | 0:cd0f9e8c609b | 27 | // myled[0] = !myled[0]; |
gr66 | 0:cd0f9e8c609b | 28 | // ledC= !ledC; |
gr66 | 0:cd0f9e8c609b | 29 | } |
gr66 | 0:cd0f9e8c609b | 30 | } |
gr66 | 0:cd0f9e8c609b | 31 | void IHM::CAN_automate_reception(void) |
gr66 | 0:cd0f9e8c609b | 32 | { |
gr66 | 0:cd0f9e8c609b | 33 | static signed char FIFO_lecture=0,FIFO_occupation=0,FIFO_max_occupation=0; |
gr66 | 0:cd0f9e8c609b | 34 | FIFO_occupation=FIFO_ecriture-FIFO_lecture; |
gr66 | 0:cd0f9e8c609b | 35 | if(FIFO_occupation<0) |
gr66 | 0:cd0f9e8c609b | 36 | FIFO_occupation=FIFO_occupation+SIZE_FIFO; |
gr66 | 0:cd0f9e8c609b | 37 | if(FIFO_max_occupation<FIFO_occupation) |
gr66 | 0:cd0f9e8c609b | 38 | FIFO_max_occupation=FIFO_occupation; |
gr66 | 0:cd0f9e8c609b | 39 | if(FIFO_occupation>SIZE_FIFO) |
gr66 | 0:cd0f9e8c609b | 40 | while(!can.write(CANMessage(LCD_OVERFLOW,CANStandard))); |
gr66 | 0:cd0f9e8c609b | 41 | if(FIFO_occupation!=0) { |
gr66 | 0:cd0f9e8c609b | 42 | switch(can_MsgRx[FIFO_lecture].id) { |
gr66 | 0:cd0f9e8c609b | 43 | case JOG_DATA: |
gr66 | 0:cd0f9e8c609b | 44 | JOG_valeur=can_MsgRx[FIFO_lecture].data[0]; |
gr66 | 0:cd0f9e8c609b | 45 | mise_a_jour_JOG=1; |
gr66 | 0:cd0f9e8c609b | 46 | break; |
gr66 | 0:cd0f9e8c609b | 47 | case COD_DATA: |
gr66 | 0:cd0f9e8c609b | 48 | COD_valeur=can_MsgRx[FIFO_lecture].data[0]; |
gr66 | 0:cd0f9e8c609b | 49 | mise_a_jour_COD=1; |
gr66 | 0:cd0f9e8c609b | 50 | break; |
gr66 | 0:cd0f9e8c609b | 51 | default: |
gr66 | 0:cd0f9e8c609b | 52 | break; |
gr66 | 0:cd0f9e8c609b | 53 | } |
gr66 | 0:cd0f9e8c609b | 54 | FIFO_lecture=(FIFO_lecture+1)%SIZE_FIFO; |
gr66 | 0:cd0f9e8c609b | 55 | } |
gr66 | 0:cd0f9e8c609b | 56 | } |
gr66 | 0:cd0f9e8c609b | 57 | /* FILE: IHM.c */ |
gr66 | 0:cd0f9e8c609b | 58 | /****************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 59 | /* MODULE NAME: IHM 16x2 */ |
gr66 | 0:cd0f9e8c609b | 60 | /* */ |
gr66 | 0:cd0f9e8c609b | 61 | /* AUTHOR : Jacques-Olivier KLEIN */ |
gr66 | 0:cd0f9e8c609b | 62 | /* Bruno LARNAUDIE */ |
gr66 | 0:cd0f9e8c609b | 63 | /* */ |
gr66 | 0:cd0f9e8c609b | 64 | /* EMAIL : jacques-olivier.klein@u-psud.fr */ |
gr66 | 0:cd0f9e8c609b | 65 | /* bruno.larnaudie@u-psud.fr */ |
gr66 | 0:cd0f9e8c609b | 66 | /* */ |
gr66 | 0:cd0f9e8c609b | 67 | /* INSTITUTION: IUT de CACHAN - 9 av. de la div. Leclerc - 94230 CACHAN */ |
gr66 | 0:cd0f9e8c609b | 68 | /* */ |
gr66 | 0:cd0f9e8c609b | 69 | /* DATE : 12/07/2012 */ |
gr66 | 0:cd0f9e8c609b | 70 | /* CPU : FREESCALE MC9S12XS128MAA */ |
gr66 | 0:cd0f9e8c609b | 71 | /* BOARD : CACHAN Xboard + IHM16x2 */ |
gr66 | 0:cd0f9e8c609b | 72 | /* OS : None */ |
gr66 | 0:cd0f9e8c609b | 73 | /* */ |
gr66 | 0:cd0f9e8c609b | 74 | /* DESCRIPTION: Fonctions d'accès au Lcd émulé passant par le bus CAN */ |
gr66 | 0:cd0f9e8c609b | 75 | /****************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 76 | |
gr66 | 0:cd0f9e8c609b | 77 | |
gr66 | 0:cd0f9e8c609b | 78 | /****************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 79 | /* FUNCTION NAME: IHM_init */ |
gr66 | 0:cd0f9e8c609b | 80 | /* DESCRIPTION : Initialise l'afficheur IHM */ |
gr66 | 0:cd0f9e8c609b | 81 | /* RETURN : VOID */ |
gr66 | 0:cd0f9e8c609b | 82 | /****************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 83 | |
gr66 | 0:cd0f9e8c609b | 84 | |
gr66 | 0:cd0f9e8c609b | 85 | |
gr66 | 0:cd0f9e8c609b | 86 | /****************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 87 | /* FUNCTION NAME: IHM_gotoxy */ |
gr66 | 0:cd0f9e8c609b | 88 | /* DESCRIPTION : Modifie la position du curseur sur l'afficheur LCD de la carte IHM */ |
gr66 | 0:cd0f9e8c609b | 89 | /* RETURN : VOID */ |
gr66 | 0:cd0f9e8c609b | 90 | /* PARAMETER 1 : UINT8 x : indice de la ligne (0 à 1) */ |
gr66 | 0:cd0f9e8c609b | 91 | /* PARAMETER 2 : UINT8 y : indice de la colonne (0 à 15) */ |
gr66 | 0:cd0f9e8c609b | 92 | /****************************************************************************************/ |
gr66 | 1:663cbe5baac4 | 93 | void IHM::LCD_gotoxy (UINT8 y, UINT8 x) |
gr66 | 0:cd0f9e8c609b | 94 | { |
gr66 | 1:663cbe5baac4 | 95 | curseur=(y*16+x)%32; |
gr66 | 0:cd0f9e8c609b | 96 | } |
gr66 | 0:cd0f9e8c609b | 97 | |
gr66 | 0:cd0f9e8c609b | 98 | |
gr66 | 0:cd0f9e8c609b | 99 | /****************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 100 | /* FUNCTION NAME: IHM_sendchar */ |
gr66 | 0:cd0f9e8c609b | 101 | /* DESCRIPTION : Envoie un caractere à afficher au controleur de l'afficheur LCD */ |
gr66 | 0:cd0f9e8c609b | 102 | /* RETURN : VOID */ |
gr66 | 0:cd0f9e8c609b | 103 | /* PARAMETER 1 : char data : caractère à afficher */ |
gr66 | 0:cd0f9e8c609b | 104 | /****************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 105 | void IHM::IHM_sendchar (char data) |
gr66 | 0:cd0f9e8c609b | 106 | { |
gr66 | 0:cd0f9e8c609b | 107 | tableau_ecran[curseur]=data; |
gr66 | 0:cd0f9e8c609b | 108 | curseur=(curseur+1)%32; |
gr66 | 0:cd0f9e8c609b | 109 | } |
gr66 | 0:cd0f9e8c609b | 110 | |
gr66 | 0:cd0f9e8c609b | 111 | |
gr66 | 0:cd0f9e8c609b | 112 | /****************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 113 | /* FUNCTION NAME: IHM_printf */ |
gr66 | 0:cd0f9e8c609b | 114 | /* DESCRIPTION : Affichage formaté de type "printf" sur un afficheur LCD */ |
gr66 | 0:cd0f9e8c609b | 115 | /* RETURN : VOID */ |
gr66 | 0:cd0f9e8c609b | 116 | /* PARAMETER 1 : char* format : format d'affichage de printf */ |
gr66 | 0:cd0f9e8c609b | 117 | /* PARAMETER 2 : ... : parametres à afficher */ |
gr66 | 0:cd0f9e8c609b | 118 | /* Attention : le nouvel affichage doit recouvrir le précédent. */ |
gr66 | 0:cd0f9e8c609b | 119 | /*********************** NOTE concernant la commande IHM_printf *************************/ |
gr66 | 0:cd0f9e8c609b | 120 | /* Les appels melangés à printf, LCD_printf et IHM_printf peuvent donner des resutlats */ |
gr66 | 0:cd0f9e8c609b | 121 | /* imprevisibles */ |
gr66 | 0:cd0f9e8c609b | 122 | /* */ |
gr66 | 0:cd0f9e8c609b | 123 | /* L'IHM doit etre initialise par la fonction IHM_init */ |
gr66 | 0:cd0f9e8c609b | 124 | /****************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 125 | void IHM::IHM_printf(const char* format, ...) |
gr66 | 0:cd0f9e8c609b | 126 | { |
gr66 | 0:cd0f9e8c609b | 127 | //oldcurseur=curseur; |
gr66 | 0:cd0f9e8c609b | 128 | unsigned char i,j; |
gr66 | 0:cd0f9e8c609b | 129 | va_list args; |
gr66 | 0:cd0f9e8c609b | 130 | //sprintf( |
gr66 | 0:cd0f9e8c609b | 131 | //set_printf(IHM_sendchar); /* Placement des datas dans le tableau */ |
gr66 | 0:cd0f9e8c609b | 132 | //vputc(IHM_sendchar); |
gr66 | 0:cd0f9e8c609b | 133 | va_start(args, format); |
gr66 | 0:cd0f9e8c609b | 134 | vsprintf(tableau_ecran+curseur,format, args); |
gr66 | 0:cd0f9e8c609b | 135 | va_end(args); |
gr66 | 0:cd0f9e8c609b | 136 | // envoi sur le bus can du tableau complet de l'ecran |
gr66 | 0:cd0f9e8c609b | 137 | for(j=0; j<4; j++) { |
gr66 | 0:cd0f9e8c609b | 138 | trame_Tx.id=LCD_CHAR0+j; |
gr66 | 0:cd0f9e8c609b | 139 | trame_Tx.type=CANData; |
gr66 | 0:cd0f9e8c609b | 140 | trame_Tx.len=8; |
gr66 | 0:cd0f9e8c609b | 141 | for(i=0; i<8; i++) |
gr66 | 0:cd0f9e8c609b | 142 | trame_Tx.data[i]=tableau_ecran[i+j*8]; |
gr66 | 0:cd0f9e8c609b | 143 | while(!can.write(trame_Tx)); |
gr66 | 0:cd0f9e8c609b | 144 | wait_us(150); |
gr66 | 0:cd0f9e8c609b | 145 | } |
gr66 | 0:cd0f9e8c609b | 146 | } |
gr66 | 0:cd0f9e8c609b | 147 | |
gr66 | 0:cd0f9e8c609b | 148 | //******** |
gr66 | 0:cd0f9e8c609b | 149 | void IHM::IHM_vprintf(const char* format, va_list args) |
gr66 | 0:cd0f9e8c609b | 150 | { |
gr66 | 0:cd0f9e8c609b | 151 | //oldcurseur=curseur; |
gr66 | 0:cd0f9e8c609b | 152 | unsigned char i,j; |
gr66 | 0:cd0f9e8c609b | 153 | ////va_list args; |
gr66 | 0:cd0f9e8c609b | 154 | //sprintf( |
gr66 | 0:cd0f9e8c609b | 155 | //set_printf(IHM_sendchar); /* Placement des datas dans le tableau */ |
gr66 | 0:cd0f9e8c609b | 156 | //vputc(IHM_sendchar); |
gr66 | 0:cd0f9e8c609b | 157 | ////va_start(args, format); |
gr66 | 0:cd0f9e8c609b | 158 | vsprintf(tableau_ecran+curseur,format, args); |
gr66 | 0:cd0f9e8c609b | 159 | ////va_end(args); |
gr66 | 0:cd0f9e8c609b | 160 | // envoi sur le bus can du tableau complet de l'ecran |
gr66 | 0:cd0f9e8c609b | 161 | for(j=0; j<4; j++) { |
gr66 | 0:cd0f9e8c609b | 162 | trame_Tx.id=LCD_CHAR0+j; |
gr66 | 0:cd0f9e8c609b | 163 | trame_Tx.type=CANData; |
gr66 | 0:cd0f9e8c609b | 164 | trame_Tx.len=8; |
gr66 | 0:cd0f9e8c609b | 165 | for(i=0; i<8; i++) |
gr66 | 0:cd0f9e8c609b | 166 | trame_Tx.data[i]=tableau_ecran[i+j*8]; |
gr66 | 0:cd0f9e8c609b | 167 | while(!can.write(trame_Tx)); |
gr66 | 0:cd0f9e8c609b | 168 | wait_us(150); |
gr66 | 0:cd0f9e8c609b | 169 | } |
gr66 | 0:cd0f9e8c609b | 170 | } |
gr66 | 0:cd0f9e8c609b | 171 | /****************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 172 | /* FUNCTION NAME: IHM_sendstring */ |
gr66 | 0:cd0f9e8c609b | 173 | /* DESCRIPTION : Affiche une chaine sur l'IHM */ |
gr66 | 0:cd0f9e8c609b | 174 | /* RETURN : VOID */ |
gr66 | 0:cd0f9e8c609b | 175 | /* PARAMETER 1 : char* message : chaine de caractere a afficher */ |
gr66 | 0:cd0f9e8c609b | 176 | /****************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 177 | void IHM::IHM_sendstring (char* message) |
gr66 | 0:cd0f9e8c609b | 178 | { |
gr66 | 0:cd0f9e8c609b | 179 | unsigned char i,j; |
gr66 | 0:cd0f9e8c609b | 180 | sprintf(tableau_ecran+curseur,message); |
gr66 | 0:cd0f9e8c609b | 181 | |
gr66 | 0:cd0f9e8c609b | 182 | for(j=0; j<4; j++) { |
gr66 | 0:cd0f9e8c609b | 183 | trame_Tx.id=LCD_CHAR0+j; |
gr66 | 0:cd0f9e8c609b | 184 | trame_Tx.type=CANData; |
gr66 | 0:cd0f9e8c609b | 185 | trame_Tx.len=8; |
gr66 | 0:cd0f9e8c609b | 186 | for(i=0; i<8; i++) |
gr66 | 0:cd0f9e8c609b | 187 | trame_Tx.data[i]=tableau_ecran[i+j*8]; |
gr66 | 0:cd0f9e8c609b | 188 | while(!can.write(trame_Tx)); |
gr66 | 0:cd0f9e8c609b | 189 | wait_us(150); |
gr66 | 0:cd0f9e8c609b | 190 | } |
gr66 | 0:cd0f9e8c609b | 191 | } |
gr66 | 0:cd0f9e8c609b | 192 | /****************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 193 | /* FUNCTION NAME: IHM_clear */ |
gr66 | 0:cd0f9e8c609b | 194 | /* DESCRIPTION : Efface le LCD */ |
gr66 | 0:cd0f9e8c609b | 195 | /* RETURN : VOID */ |
gr66 | 0:cd0f9e8c609b | 196 | /****************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 197 | void IHM::LCD_clear(void) |
gr66 | 0:cd0f9e8c609b | 198 | { |
gr66 | 0:cd0f9e8c609b | 199 | UINT8 i; |
gr66 | 0:cd0f9e8c609b | 200 | curseur=0; |
gr66 | 0:cd0f9e8c609b | 201 | for(i=0; i<32; i++) |
gr66 | 0:cd0f9e8c609b | 202 | tableau_ecran[i]=32; |
gr66 | 0:cd0f9e8c609b | 203 | while(!can.write(CANMessage(LCD_CLEAR,CANStandard))); |
gr66 | 0:cd0f9e8c609b | 204 | wait_us(150); |
gr66 | 0:cd0f9e8c609b | 205 | } |
gr66 | 0:cd0f9e8c609b | 206 | /****************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 207 | /* FUNCTION NAME: BAR_set */ |
gr66 | 0:cd0f9e8c609b | 208 | /* DESCRIPTION : commande les 10 LED du bargraph */ |
gr66 | 0:cd0f9e8c609b | 209 | /* PARAMETER 1 : UINT16 valeur : ordre d'allumage, exprimé sur les 10 bits de droite. |
gr66 | 0:cd0f9e8c609b | 210 | Le bit k doit valoir 0 pour allumer la LED k, 1 pour l'éteindre. |
gr66 | 0:cd0f9e8c609b | 211 | Exemple : ~(1<<9) allume la LED 9, ~0x00F allume les 4 LED 0 à 3 */ |
gr66 | 0:cd0f9e8c609b | 212 | /****************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 213 | void IHM::BAR_set(UINT16 valeur) |
gr66 | 0:cd0f9e8c609b | 214 | { |
gr66 | 0:cd0f9e8c609b | 215 | trame_Tx.id=BAR_SET; |
gr66 | 0:cd0f9e8c609b | 216 | trame_Tx.type=CANData; |
gr66 | 0:cd0f9e8c609b | 217 | trame_Tx.len=2; |
gr66 | 0:cd0f9e8c609b | 218 | trame_Tx.data[0]=valeur>>8; |
gr66 | 0:cd0f9e8c609b | 219 | trame_Tx.data[1]=(UINT8)valeur; |
gr66 | 0:cd0f9e8c609b | 220 | while(!can.write(trame_Tx)); |
gr66 | 0:cd0f9e8c609b | 221 | } |
gr66 | 0:cd0f9e8c609b | 222 | |
gr66 | 0:cd0f9e8c609b | 223 | |
gr66 | 0:cd0f9e8c609b | 224 | /****************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 225 | /* FUNCTION NAME: JOG_read */ |
gr66 | 0:cd0f9e8c609b | 226 | /* DESCRIPTION : indique la position (parmi les 8 possibles) et l'enfoncement du Jog. */ |
gr66 | 0:cd0f9e8c609b | 227 | /* RETURN : un octet UINT8 qui indique la position (RIGHT, LEFT, UP, DOWN + 4 combinaisons) |
gr66 | 0:cd0f9e8c609b | 228 | et l'enfoncement (PUSH) du Jog, exprimés sur 5 bits utiles.*/ |
gr66 | 0:cd0f9e8c609b | 229 | |
gr66 | 0:cd0f9e8c609b | 230 | /* - Si le Jog est au repos : la fonction renvoie 0 (0x00). |
gr66 | 0:cd0f9e8c609b | 231 | - si le Jog n'est pas au repos : 1 à 3 bits peuvent être mis à 1 dans l'octet renvoyé. |
gr66 | 0:cd0f9e8c609b | 232 | Il est intéressant d'utiliser les masques définis en constantes. |
gr66 | 0:cd0f9e8c609b | 233 | La signification des 8 bits de la valeur renvoyée est: |
gr66 | 0:cd0f9e8c609b | 234 | 0 0 0 RIGHT UP PUSH LEFT DOWN |
gr66 | 0:cd0f9e8c609b | 235 | Plusieurs bits peuvent être à 1 en même temps. Par exemple : RIGHT + UP + PUSH |
gr66 | 0:cd0f9e8c609b | 236 | à 1 indiquent que le Jog est en position "Nord Est " (UP+RIGHT) et qu'il est enfoncé. |
gr66 | 0:cd0f9e8c609b | 237 | Si le Jog est simultanément enfoncé et positionné à droite, la fonction renvoie |
gr66 | 0:cd0f9e8c609b | 238 | (0001 0100) en binaire, soit 0x14. Exprimée avec les masques, la valeur renvoyée vaut |
gr66 | 0:cd0f9e8c609b | 239 | JOG_MSK_RIGHT | JOG_MSK_PUSH (0x14). */ |
gr66 | 0:cd0f9e8c609b | 240 | /**************************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 241 | /**************************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 242 | /* utiliser les Constantes symboliques de IHM.h pour interpréter la valeur renvoyée par le jog... */ |
gr66 | 0:cd0f9e8c609b | 243 | /**************************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 244 | |
gr66 | 0:cd0f9e8c609b | 245 | UINT8 IHM::JOG_read(void) |
gr66 | 0:cd0f9e8c609b | 246 | { |
gr66 | 0:cd0f9e8c609b | 247 | trame_Tx.id=JOG_REQ; |
gr66 | 0:cd0f9e8c609b | 248 | trame_Tx.type=CAN_REMOTE; |
gr66 | 0:cd0f9e8c609b | 249 | while(!can.write(trame_Tx)); |
gr66 | 0:cd0f9e8c609b | 250 | |
gr66 | 0:cd0f9e8c609b | 251 | while(mise_a_jour_JOG==0) |
gr66 | 0:cd0f9e8c609b | 252 | CAN_automate_reception(); |
gr66 | 0:cd0f9e8c609b | 253 | mise_a_jour_JOG=0; |
gr66 | 0:cd0f9e8c609b | 254 | return JOG_valeur; |
gr66 | 0:cd0f9e8c609b | 255 | |
gr66 | 0:cd0f9e8c609b | 256 | } |
gr66 | 0:cd0f9e8c609b | 257 | |
gr66 | 0:cd0f9e8c609b | 258 | |
gr66 | 0:cd0f9e8c609b | 259 | /***************************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 260 | /* FUNCTION NAME: COD_read */ |
gr66 | 0:cd0f9e8c609b | 261 | /* DESCRIPTION : indique la rotation effectuée par le codeur incrémental. */ |
gr66 | 0:cd0f9e8c609b | 262 | /* RETURN : un octet UINT8 dont la valeur entre 0 et 255 indique la rotation du |
gr66 | 0:cd0f9e8c609b | 263 | codeur incrémental depuis l'initialisation du codeur (cad de la carte IHM), |
gr66 | 0:cd0f9e8c609b | 264 | exprimée en douzièmes de tours. Le codeur dispose en effet de 12 positions |
gr66 | 0:cd0f9e8c609b | 265 | et la valeur retournée s'incrémente/se décrémente à chaque 12e de tour. |
gr66 | 0:cd0f9e8c609b | 266 | Par exemple, si le codeur a été tourné de 2 tours et demi, la valeur |
gr66 | 0:cd0f9e8c609b | 267 | retournée vaut 12+12+6 = 30 = 0x1E (le codeur a effectué 30 douzièmes de tour) */ |
gr66 | 0:cd0f9e8c609b | 268 | /***************************************************************************************************/ |
gr66 | 0:cd0f9e8c609b | 269 | |
gr66 | 0:cd0f9e8c609b | 270 | UINT8 IHM::COD_read(void) |
gr66 | 0:cd0f9e8c609b | 271 | { |
gr66 | 0:cd0f9e8c609b | 272 | trame_Tx.id=COD_REQ; |
gr66 | 0:cd0f9e8c609b | 273 | trame_Tx.type=CAN_REMOTE; |
gr66 | 0:cd0f9e8c609b | 274 | while(!can.write(trame_Tx)); |
gr66 | 0:cd0f9e8c609b | 275 | |
gr66 | 0:cd0f9e8c609b | 276 | // while(!can.write(CANMessage(COD_REQ,CANStandard))); |
gr66 | 0:cd0f9e8c609b | 277 | while(mise_a_jour_COD==0) |
gr66 | 0:cd0f9e8c609b | 278 | CAN_automate_reception(); |
gr66 | 0:cd0f9e8c609b | 279 | mise_a_jour_COD=0; |
gr66 | 0:cd0f9e8c609b | 280 | return COD_valeur; |
gr66 | 0:cd0f9e8c609b | 281 | |
gr66 | 0:cd0f9e8c609b | 282 | } |
gr66 | 0:cd0f9e8c609b | 283 |