Essai ds3132

Dependencies:   ds3231 mbed

Committer:
RCMISbed
Date:
Wed Oct 17 12:01:00 2018 +0000
Revision:
0:13c98588f2fc
essai ds3132

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RCMISbed 0:13c98588f2fc 1
RCMISbed 0:13c98588f2fc 2
RCMISbed 0:13c98588f2fc 3 #include "mbed.h"
RCMISbed 0:13c98588f2fc 4 #include <stdio.h>
RCMISbed 0:13c98588f2fc 5 #include <stdlib.h>
RCMISbed 0:13c98588f2fc 6 #include <string>
RCMISbed 0:13c98588f2fc 7 #include "objet.h"
RCMISbed 0:13c98588f2fc 8 #include "ds3231.h"
RCMISbed 0:13c98588f2fc 9
RCMISbed 0:13c98588f2fc 10 using namespace std;
RCMISbed 0:13c98588f2fc 11
RCMISbed 0:13c98588f2fc 12 //0- Definition/ Parametres/ Configuration/ Materiel
RCMISbed 0:13c98588f2fc 13 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
RCMISbed 0:13c98588f2fc 14 string target = "STM32F303";
RCMISbed 0:13c98588f2fc 15 DigitalIn SW0(PB_5); // Digitale/ In/ SWITCH
RCMISbed 0:13c98588f2fc 16 DigitalIn SW1(PA_7) ; // Digitale/ In/ SWITCH
RCMISbed 0:13c98588f2fc 17 DigitalIn SW2(PB_0); // Digitale/ In/ SWITCH
RCMISbed 0:13c98588f2fc 18 DigitalIn SW3(PA_8); // Digitale/ In/ SWITCH
RCMISbed 0:13c98588f2fc 19 DigitalOut RXLED(PB_3); // Digitale/ Out/ lumineux/ Led Verte Intégrée
RCMISbed 0:13c98588f2fc 20 DigitalOut BLED(PA_4); // Digitale/ Out/ lumineux/ Led Bleu
RCMISbed 0:13c98588f2fc 21 DigitalOut GLED(PA_3); // Digitale/ Out/ lumineux/ Led Verte
RCMISbed 0:13c98588f2fc 22 DigitalOut RLED(PF_1); // Digitale/ Out/ lumineux/ Led Rouge
RCMISbed 0:13c98588f2fc 23 DigitalOut SOUND(PB_4); // Digitale/ Out/ Son
RCMISbed 0:13c98588f2fc 24 AnalogIn padX(PA_0); //Analogique/ pad/ voie X
RCMISbed 0:13c98588f2fc 25 AnalogIn padY(PA_1); //Analogique/ pad/ voie Y
RCMISbed 0:13c98588f2fc 26
RCMISbed 0:13c98588f2fc 27 Serial usb(USBTX, USBRX); // Liaison UART/ Dispositif USB
RCMISbed 0:13c98588f2fc 28 Serial uart(PA_9, PA_10); // Liaison UART/ Dispositif UART
RCMISbed 0:13c98588f2fc 29
RCMISbed 0:13c98588f2fc 30 I2C i2c (PB_7, PB_6); // Liaison I2C/ Dispositif Afficheur
RCMISbed 0:13c98588f2fc 31
RCMISbed 0:13c98588f2fc 32 //CAN bCAN(p30, p29); // Liaison CAN/ Dispositif Communication Inter Systeme
RCMISbed 0:13c98588f2fc 33
RCMISbed 0:13c98588f2fc 34
RCMISbed 0:13c98588f2fc 35 //1- Definition/ Constantes Programme
RCMISbed 0:13c98588f2fc 36 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
RCMISbed 0:13c98588f2fc 37 #define vDEBUG true // Validation Mode DEBUG
RCMISbed 0:13c98588f2fc 38 #define vACC false // Validation Accelero
RCMISbed 0:13c98588f2fc 39 #define vSON true // Validation SON
RCMISbed 0:13c98588f2fc 40
RCMISbed 0:13c98588f2fc 41 // Definition/ Constantes/ Generale
RCMISbed 0:13c98588f2fc 42 #define ON false
RCMISbed 0:13c98588f2fc 43 #define OFF true
RCMISbed 0:13c98588f2fc 44
RCMISbed 0:13c98588f2fc 45 // Definition/ Constantes/ Caracteres Alphanumeriques ASCII
RCMISbed 0:13c98588f2fc 46 #define LF 10 // Line Feed \n
RCMISbed 0:13c98588f2fc 47 #define CR 13 // Carriage Return \r
RCMISbed 0:13c98588f2fc 48 #define BS 127 // Back Space
RCMISbed 0:13c98588f2fc 49
RCMISbed 0:13c98588f2fc 50 //Definition/ Constantes Orientation
RCMISbed 0:13c98588f2fc 51 #define bARRET 0
RCMISbed 0:13c98588f2fc 52 #define bGAUCHE 1
RCMISbed 0:13c98588f2fc 53 #define bDROITE 2
RCMISbed 0:13c98588f2fc 54 #define bAVANT 3
RCMISbed 0:13c98588f2fc 55
RCMISbed 0:13c98588f2fc 56 // Definition/ Constantes KEYBOARD
RCMISbed 0:13c98588f2fc 57 #define noKEY 0 // Clavier/ no KEY
RCMISbed 0:13c98588f2fc 58 #define lKEY 1 // Clavier/ left KEY
RCMISbed 0:13c98588f2fc 59 #define mKEY 2 // Clavier/ middle KEY
RCMISbed 0:13c98588f2fc 60 #define rKEY 4 // Clavier/ right KEY
RCMISbed 0:13c98588f2fc 61 #define razKEY 64 // Clavier/ az KEY
RCMISbed 0:13c98588f2fc 62
RCMISbed 0:13c98588f2fc 63 // Definition/ Affichage/ OLED
RCMISbed 0:13c98588f2fc 64 #define oled_addr 0x78
RCMISbed 0:13c98588f2fc 65
RCMISbed 0:13c98588f2fc 66
RCMISbed 0:13c98588f2fc 67 // Definition/ Identification/ produit
RCMISbed 0:13c98588f2fc 68 #define productName "Controleur Distant/ bluetooth"
RCMISbed 0:13c98588f2fc 69 #define versionName "v1.3"
RCMISbed 0:13c98588f2fc 70
RCMISbed 0:13c98588f2fc 71 // Definition/ Identification/ PAD
RCMISbed 0:13c98588f2fc 72 #define padName "Joystick Analogique"
RCMISbed 0:13c98588f2fc 73 #define padNbAxe 2 // PAD/ Nb Axe MAX
RCMISbed 0:13c98588f2fc 74 #define padNbSW 3 // PAD/ Nb SW
RCMISbed 0:13c98588f2fc 75 #define XAxeName "Roulis"
RCMISbed 0:13c98588f2fc 76 #define YAxeName "Tangage"
RCMISbed 0:13c98588f2fc 77
RCMISbed 0:13c98588f2fc 78 // Definition/ Identification/ TRAME
RCMISbed 0:13c98588f2fc 79 #define wdtTXMAX 100 // Watchdog Emission Trame MAX (periode)
RCMISbed 0:13c98588f2fc 80 #define wdtRXMAX 1000 // Watchdog Reception Trame MAX
RCMISbed 0:13c98588f2fc 81
RCMISbed 0:13c98588f2fc 82 // Definition/ ADC/ Dynamique Signal
RCMISbed 0:13c98588f2fc 83 #define Adcm 0 // Convertisseur ADC/ Valeur Min
RCMISbed 0:13c98588f2fc 84 #define AdcM 1023 // Convertisseur ADC/ Valeur Max
RCMISbed 0:13c98588f2fc 85 #define Adc0 512 // Convertisseur ADC/ Valeur Mediane
RCMISbed 0:13c98588f2fc 86
RCMISbed 0:13c98588f2fc 87 // Definition/ PAD/ Dynamique variable
RCMISbed 0:13c98588f2fc 88 #define Dynm -1000 // Dynamique signal/ Valeur Min
RCMISbed 0:13c98588f2fc 89 #define DynM 1000 // Dynamique signal/ Valeur Max
RCMISbed 0:13c98588f2fc 90 #define Dyn0 0 // Dynamique signal/ Valeur Moyenne
RCMISbed 0:13c98588f2fc 91
RCMISbed 0:13c98588f2fc 92 // Definition/ PAD/ nombre max géré
RCMISbed 0:13c98588f2fc 93 #define nbAxesMAX 2
RCMISbed 0:13c98588f2fc 94
RCMISbed 0:13c98588f2fc 95 // Definition/ PAD/ parametres loi de pilotage
RCMISbed 0:13c98588f2fc 96 #define dzmin 0 // Dead Zone/ valeur minimale
RCMISbed 0:13c98588f2fc 97 #define dzMAX 100 // Dead Zone/ valeur Maximale
RCMISbed 0:13c98588f2fc 98 #define znlmin 0 // Zone Non Linearite/ valeur minimale
RCMISbed 0:13c98588f2fc 99 #define znlMax 100 // Zone Non Linearite/ valeur Maximale
RCMISbed 0:13c98588f2fc 100 #define ctfmin 0.05 // Kpmin: Gain min poportionnel
RCMISbed 0:13c98588f2fc 101 #define ctfMAX 5 // KpMax: Gain Max poportionnel
RCMISbed 0:13c98588f2fc 102 #define ctimin 0.0003 // KiMax: Gain Max integral (Constante de temps Integration Max)
RCMISbed 0:13c98588f2fc 103 #define ctiMAX 0.003 // KiMax: Gain Max integral (Constante de temps Integration Max)
RCMISbed 0:13c98588f2fc 104
RCMISbed 0:13c98588f2fc 105 #define CtR 0.00003 // Constante de temps filtrage commande (filtre passe bas)
RCMISbed 0:13c98588f2fc 106
RCMISbed 0:13c98588f2fc 107 //Definition/ Constantes temporelles
RCMISbed 0:13c98588f2fc 108 #define TSample 0.01 // Periode Echantillonnage Process ( 10 ms )
RCMISbed 0:13c98588f2fc 109 #define secWDTMAX 1/ TSample // Watchdog Seconde
RCMISbed 0:13c98588f2fc 110 #define wledWDTMAX 30 // Watchdog MAX/ Led WIFI
RCMISbed 0:13c98588f2fc 111 #define ledWDTMAX 100 // Watchdog MAX/ Led
RCMISbed 0:13c98588f2fc 112 #define sonWDTMAX 500 // Watchdog MAX/ signal sonore
RCMISbed 0:13c98588f2fc 113 #define imuWDTMAX 10 // Watchdog MAX/ process IMU
RCMISbed 0:13c98588f2fc 114 #define trameWDTMAX 300 // Watchdog MAX/ Duree de vie de la Trame
RCMISbed 0:13c98588f2fc 115 #define keyWDTMAX 50 // Watchdog MAX/ Durée de vie info touche sur trame
RCMISbed 0:13c98588f2fc 116
RCMISbed 0:13c98588f2fc 117 // Definition/ Constantes materiel communication
RCMISbed 0:13c98588f2fc 118 #define usbBR 115200 // Communication/ port Serie/ UART USB Baut Rate
RCMISbed 0:13c98588f2fc 119 #define uartBR 9600 // Communication/ port Serie/ UART Baut Rate (Bluetooth)
RCMISbed 0:13c98588f2fc 120 #define i2cBR 400000 // Communication/ port Serie/ frequence bus I2C
RCMISbed 0:13c98588f2fc 121
RCMISbed 0:13c98588f2fc 122 // Definition/ Parametres Protocole Trame
RCMISbed 0:13c98588f2fc 123 #define idNULL 0
RCMISbed 0:13c98588f2fc 124 #define idMOBILE 120
RCMISbed 0:13c98588f2fc 125 #define idMOBILE1 122
RCMISbed 0:13c98588f2fc 126 #define idMOTOR 123
RCMISbed 0:13c98588f2fc 127 #define idBALANCE 543
RCMISbed 0:13c98588f2fc 128 #define idIMU 888
RCMISbed 0:13c98588f2fc 129
RCMISbed 0:13c98588f2fc 130
RCMISbed 0:13c98588f2fc 131 //2- Definition/ Type de donnees
RCMISbed 0:13c98588f2fc 132 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
RCMISbed 0:13c98588f2fc 133
RCMISbed 0:13c98588f2fc 134 // Voir fichier: objet.h
RCMISbed 0:13c98588f2fc 135
RCMISbed 0:13c98588f2fc 136
RCMISbed 0:13c98588f2fc 137
RCMISbed 0:13c98588f2fc 138 //3- Definition/ Variables Globales
RCMISbed 0:13c98588f2fc 139 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
RCMISbed 0:13c98588f2fc 140
RCMISbed 0:13c98588f2fc 141 int16_t periode= 10;
RCMISbed 0:13c98588f2fc 142
RCMISbed 0:13c98588f2fc 143 int16_t wledWDT = 0;
RCMISbed 0:13c98588f2fc 144 int16_t rxledWDT = 0;
RCMISbed 0:13c98588f2fc 145 int16_t rledWDT = 0;
RCMISbed 0:13c98588f2fc 146 int16_t gledWDT = 0;
RCMISbed 0:13c98588f2fc 147 int16_t bledWDT = 0;
RCMISbed 0:13c98588f2fc 148 int16_t secWDT = secWDTMAX;
RCMISbed 0:13c98588f2fc 149 int16_t sonWDT = 0;
RCMISbed 0:13c98588f2fc 150 int16_t sw0WDT = 0;
RCMISbed 0:13c98588f2fc 151 int16_t sw1WDT = 0;
RCMISbed 0:13c98588f2fc 152 int16_t sw2WDT = 0;
RCMISbed 0:13c98588f2fc 153 int16_t sw3WDT = 0;
RCMISbed 0:13c98588f2fc 154 int16_t sw0MASK = 0;
RCMISbed 0:13c98588f2fc 155 int16_t sw1MASK = 0;
RCMISbed 0:13c98588f2fc 156 int16_t sw2MASK = 0;
RCMISbed 0:13c98588f2fc 157 int16_t sw3MASK = 0;
RCMISbed 0:13c98588f2fc 158 int16_t sw = 0;
RCMISbed 0:13c98588f2fc 159
RCMISbed 0:13c98588f2fc 160 int16_t pTX = 0;
RCMISbed 0:13c98588f2fc 161 int16_t pRX = 0;
RCMISbed 0:13c98588f2fc 162 int16_t op[10];
RCMISbed 0:13c98588f2fc 163 bool fINPUT = true;
RCMISbed 0:13c98588f2fc 164
RCMISbed 0:13c98588f2fc 165 int heure = 0;
RCMISbed 0:13c98588f2fc 166 int minute = 0;
RCMISbed 0:13c98588f2fc 167 int seconde = 0;
RCMISbed 0:13c98588f2fc 168 time_t epoch_time;
RCMISbed 0:13c98588f2fc 169
RCMISbed 0:13c98588f2fc 170
RCMISbed 0:13c98588f2fc 171 bool fSB = false;
RCMISbed 0:13c98588f2fc 172 bool fEB = false;
RCMISbed 0:13c98588f2fc 173 char startB = '$';
RCMISbed 0:13c98588f2fc 174 char dlB = ',';
RCMISbed 0:13c98588f2fc 175 char endB = '*';
RCMISbed 0:13c98588f2fc 176 char rx[wBUFFER];
RCMISbed 0:13c98588f2fc 177 int pcar = 0;
RCMISbed 0:13c98588f2fc 178
RCMISbed 0:13c98588f2fc 179
RCMISbed 0:13c98588f2fc 180 int pUSBRx = 0;
RCMISbed 0:13c98588f2fc 181 int pUSBTx = 0;
RCMISbed 0:13c98588f2fc 182
RCMISbed 0:13c98588f2fc 183 string sUSBRx = " ";
RCMISbed 0:13c98588f2fc 184
RCMISbed 0:13c98588f2fc 185
RCMISbed 0:13c98588f2fc 186 Ds3231 rtc(PB_7, PB_6);
RCMISbed 0:13c98588f2fc 187
RCMISbed 0:13c98588f2fc 188 PAD_t pad;
RCMISbed 0:13c98588f2fc 189 TRAME_t trame;
RCMISbed 0:13c98588f2fc 190 Ticker process;
RCMISbed 0:13c98588f2fc 191
RCMISbed 0:13c98588f2fc 192
RCMISbed 0:13c98588f2fc 193 long int nbTRM = 0;
RCMISbed 0:13c98588f2fc 194
RCMISbed 0:13c98588f2fc 195
RCMISbed 0:13c98588f2fc 196 //4- Definition/ Macro
RCMISbed 0:13c98588f2fc 197 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
RCMISbed 0:13c98588f2fc 198
RCMISbed 0:13c98588f2fc 199 #define RX_LED_OFF RXLED = 0;
RCMISbed 0:13c98588f2fc 200 #define RX_LED_ON RXLED = 1;
RCMISbed 0:13c98588f2fc 201
RCMISbed 0:13c98588f2fc 202 #define R_LED_OFF RLED = 1;
RCMISbed 0:13c98588f2fc 203 #define R_LED_ON RLED = 0;
RCMISbed 0:13c98588f2fc 204
RCMISbed 0:13c98588f2fc 205 #define G_LED_OFF GLED = 1;
RCMISbed 0:13c98588f2fc 206 #define G_LED_ON GLED = 0;
RCMISbed 0:13c98588f2fc 207
RCMISbed 0:13c98588f2fc 208 #define B_LED_OFF BLED = 1;
RCMISbed 0:13c98588f2fc 209 #define B_LED_ON BLED = 0;
RCMISbed 0:13c98588f2fc 210
RCMISbed 0:13c98588f2fc 211 #define SON_OFF SOUND = 0;
RCMISbed 0:13c98588f2fc 212 #define SON_ON SOUND = 1;
RCMISbed 0:13c98588f2fc 213
RCMISbed 0:13c98588f2fc 214
RCMISbed 0:13c98588f2fc 215
RCMISbed 0:13c98588f2fc 216 //5- Definition/ Procedures
RCMISbed 0:13c98588f2fc 217 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
RCMISbed 0:13c98588f2fc 218
RCMISbed 0:13c98588f2fc 219 //5.1- Definition/ Procedure/ Reception UART USB (interruption)
RCMISbed 0:13c98588f2fc 220 void rx_usb_isr(){
RCMISbed 0:13c98588f2fc 221 char car;
RCMISbed 0:13c98588f2fc 222 int count = 0;
RCMISbed 0:13c98588f2fc 223
RCMISbed 0:13c98588f2fc 224 car= usb.getc();
RCMISbed 0:13c98588f2fc 225
RCMISbed 0:13c98588f2fc 226 switch((int)car){
RCMISbed 0:13c98588f2fc 227
RCMISbed 0:13c98588f2fc 228 case 97: //Touche 'a'
RCMISbed 0:13c98588f2fc 229 break;
RCMISbed 0:13c98588f2fc 230 case 122: //Touche 'z'
RCMISbed 0:13c98588f2fc 231 break;
RCMISbed 0:13c98588f2fc 232
RCMISbed 0:13c98588f2fc 233 case BS://Touche 'Back Space'
RCMISbed 0:13c98588f2fc 234 if(sUSBRx.length()> 0){
RCMISbed 0:13c98588f2fc 235 sUSBRx.erase(sUSBRx.length()-1,1);
RCMISbed 0:13c98588f2fc 236 while(count< sUSBRx.length()){usb.printf(" ");++count;};
RCMISbed 0:13c98588f2fc 237 usb.printf("\r%s",sUSBRx);
RCMISbed 0:13c98588f2fc 238 };
RCMISbed 0:13c98588f2fc 239 break;
RCMISbed 0:13c98588f2fc 240 case LF: // Touche Line Feed '\n'
RCMISbed 0:13c98588f2fc 241 break;
RCMISbed 0:13c98588f2fc 242 case CR: //Touche Carriage Return '\r'
RCMISbed 0:13c98588f2fc 243 sUSBRx+= "\r\n";
RCMISbed 0:13c98588f2fc 244 usb.printf("\r\n");
RCMISbed 0:13c98588f2fc 245 sUSBRx= "";
RCMISbed 0:13c98588f2fc 246 break;
RCMISbed 0:13c98588f2fc 247 default: //Touche Caractere ASCII
RCMISbed 0:13c98588f2fc 248 sUSBRx+= car;
RCMISbed 0:13c98588f2fc 249 usb.printf("%c",car);
RCMISbed 0:13c98588f2fc 250 break;
RCMISbed 0:13c98588f2fc 251 }; // fin switch((int)car){
RCMISbed 0:13c98588f2fc 252
RCMISbed 0:13c98588f2fc 253 }
RCMISbed 0:13c98588f2fc 254
RCMISbed 0:13c98588f2fc 255
RCMISbed 0:13c98588f2fc 256
RCMISbed 0:13c98588f2fc 257
RCMISbed 0:13c98588f2fc 258 //5.2- Definition/ Procedure/ Reception UART BT (interruption)
RCMISbed 0:13c98588f2fc 259 void rx_uart_isr(){
RCMISbed 0:13c98588f2fc 260 // __disable_irq();
RCMISbed 0:13c98588f2fc 261
RCMISbed 0:13c98588f2fc 262 char RxCar;
RCMISbed 0:13c98588f2fc 263 char stB;
RCMISbed 0:13c98588f2fc 264 string str;
RCMISbed 0:13c98588f2fc 265 int identifier;
RCMISbed 0:13c98588f2fc 266
RCMISbed 0:13c98588f2fc 267 RxCar= uart.getc();
RCMISbed 0:13c98588f2fc 268
RCMISbed 0:13c98588f2fc 269 // if(vDEBUG == true){ usb.printf("%c",RxCar); }; // DEBUG/ USB
RCMISbed 0:13c98588f2fc 270 // bledWDT= 3;
RCMISbed 0:13c98588f2fc 271
RCMISbed 0:13c98588f2fc 272 if((RxCar== startB )&& (fEB== false)){pcar= 0; fSB = true; fEB= false;}; // Synchronisation Trame (Start Beacon)
RCMISbed 0:13c98588f2fc 273 if(fSB== true){rx[pcar]= RxCar; ++pcar;};
RCMISbed 0:13c98588f2fc 274 if((RxCar== endB )&& (fSB== true)){fEB= true;};
RCMISbed 0:13c98588f2fc 275 if(pcar>= wBUFFER){fSB= false; fEB= false; pcar= 0;};
RCMISbed 0:13c98588f2fc 276 if((fSB== true)&& (fEB== true)){ // Synchronisation OK
RCMISbed 0:13c98588f2fc 277 fSB= false; fEB= false;
RCMISbed 0:13c98588f2fc 278 // usb.printf("%s\r\n", rx);
RCMISbed 0:13c98588f2fc 279
RCMISbed 0:13c98588f2fc 280 sscanf(rx,"%c,%i",&stB, &identifier);
RCMISbed 0:13c98588f2fc 281 switch(identifier){
RCMISbed 0:13c98588f2fc 282 case idMOBILE: // Trame idMOBILE
RCMISbed 0:13c98588f2fc 283 trame.wdtRX = 100;
RCMISbed 0:13c98588f2fc 284 sscanf(rx,"%c,%i,%i,%i,%i,%i,%i,%c",&trame.sb, &trame.r[0], &trame.r[1], &trame.r[2], &trame.r[3], &trame.r[4], &trame.r[5], &trame.eb); // Réception Données Trame
RCMISbed 0:13c98588f2fc 285 usb.printf("Rx from MOBILE : %s %s\r\n", rx, ctime(&epoch_time));
RCMISbed 0:13c98588f2fc 286 switch(trame.r[3]){ // Traitement rMODE
RCMISbed 0:13c98588f2fc 287 case mSTP: // mode STOP
RCMISbed 0:13c98588f2fc 288 bledWDT= 30; gledWDT= 0; rledWDT= 0;
RCMISbed 0:13c98588f2fc 289 break;
RCMISbed 0:13c98588f2fc 290 case mMAN: // mode MANUEL
RCMISbed 0:13c98588f2fc 291 bledWDT= 0; gledWDT= 30; rledWDT= 0;
RCMISbed 0:13c98588f2fc 292 break;
RCMISbed 0:13c98588f2fc 293 case mPA : // mode PA
RCMISbed 0:13c98588f2fc 294 bledWDT= 0; gledWDT= 0; rledWDT= 30;
RCMISbed 0:13c98588f2fc 295 break;
RCMISbed 0:13c98588f2fc 296
RCMISbed 0:13c98588f2fc 297 default :break;
RCMISbed 0:13c98588f2fc 298 }; // fin switch(trame.r[3]){
RCMISbed 0:13c98588f2fc 299 rxledWDT= 3;
RCMISbed 0:13c98588f2fc 300 break;
RCMISbed 0:13c98588f2fc 301
RCMISbed 0:13c98588f2fc 302 default : break;
RCMISbed 0:13c98588f2fc 303 }; // fin switch(identifier){
RCMISbed 0:13c98588f2fc 304 }; // fin if((fSRx== true)&& (fERx== true)){
RCMISbed 0:13c98588f2fc 305 // __enable_irq();
RCMISbed 0:13c98588f2fc 306
RCMISbed 0:13c98588f2fc 307 }
RCMISbed 0:13c98588f2fc 308
RCMISbed 0:13c98588f2fc 309
RCMISbed 0:13c98588f2fc 310
RCMISbed 0:13c98588f2fc 311 //5.3- Definition/ Procedure/ Process (interruption)
RCMISbed 0:13c98588f2fc 312 void process_isr(){
RCMISbed 0:13c98588f2fc 313 float aP, aI;
RCMISbed 0:13c98588f2fc 314 int ctn;
RCMISbed 0:13c98588f2fc 315 int8_t key;
RCMISbed 0:13c98588f2fc 316
RCMISbed 0:13c98588f2fc 317 // --ledWDT; if(ledWDT<= 0){ledWDT= ledWDTMAX; RX_LED_OFF; SON_OFF;}; if(ledWDT< 5){RX_LED_ON; SON_ON;};
RCMISbed 0:13c98588f2fc 318
RCMISbed 0:13c98588f2fc 319 --sw0WDT; if(sw0WDT<= 0){sw0WDT= 0;}; // wdt SW0
RCMISbed 0:13c98588f2fc 320 --sw1WDT; if(sw1WDT<= 0){sw1WDT= 0;}; // wdt SW1
RCMISbed 0:13c98588f2fc 321 --sw2WDT; if(sw2WDT<= 0){sw2WDT= 0;}; // wdt SW2
RCMISbed 0:13c98588f2fc 322 --sw3WDT; if(sw3WDT<= 0){sw3WDT= 0;}; // wdt SW3
RCMISbed 0:13c98588f2fc 323
RCMISbed 0:13c98588f2fc 324 --rxledWDT; if(rxledWDT<= 0){rxledWDT= 0; RX_LED_OFF;}else{RX_LED_ON;}; // wdt LED INTEGREE
RCMISbed 0:13c98588f2fc 325
RCMISbed 0:13c98588f2fc 326 --rledWDT; if(rledWDT<= 0){rledWDT= 0; R_LED_OFF;}else{R_LED_ON;}; // wdt LED ROUGE
RCMISbed 0:13c98588f2fc 327 --gledWDT; if(gledWDT<= 0){gledWDT= 0; G_LED_OFF;}else{G_LED_ON;}; // wdt LED VERTE
RCMISbed 0:13c98588f2fc 328 --bledWDT; if(bledWDT<= 0){bledWDT= 0; B_LED_OFF;}else{B_LED_ON;}; // wdt LED VERTE
RCMISbed 0:13c98588f2fc 329
RCMISbed 0:13c98588f2fc 330 --sonWDT; if(sonWDT<= 0){sonWDT= 0; SON_OFF;}else{SON_ON;}; // wdt son
RCMISbed 0:13c98588f2fc 331
RCMISbed 0:13c98588f2fc 332 --trame.wdtTX; if(trame.wdtTX < 0) {trame.wdtTX = 0;}; // wdt TX TRAME (periode emission)
RCMISbed 0:13c98588f2fc 333
RCMISbed 0:13c98588f2fc 334 --trame.wdtRX; if(trame.wdtRX <= 0) {trame.wdtRX = 0; ;}; // wdt RX TRAME
RCMISbed 0:13c98588f2fc 335 if(trame.wdtRX == 1 ) {ctn= wBUFFER- 1;
RCMISbed 0:13c98588f2fc 336 while(ctn>= 0){trame.rx[ctn]= '+'; --ctn;};
RCMISbed 0:13c98588f2fc 337 ctn= wBUFFER- 3; trame.rx[ctn]= '\r';
RCMISbed 0:13c98588f2fc 338 ctn= wBUFFER- 2; trame.rx[ctn]= '\n';
RCMISbed 0:13c98588f2fc 339 sonWDT= 25;
RCMISbed 0:13c98588f2fc 340 };
RCMISbed 0:13c98588f2fc 341
RCMISbed 0:13c98588f2fc 342 --secWDT; if(secWDT<= 0){secWDT= 0;}; // wdt Seconde
RCMISbed 0:13c98588f2fc 343
RCMISbed 0:13c98588f2fc 344 // a- Process/ Gestion CLAVIER
RCMISbed 0:13c98588f2fc 345 key = noKEY;
RCMISbed 0:13c98588f2fc 346 if(SW1== 1){key= lKEY;}; // appui touche RIGHT
RCMISbed 0:13c98588f2fc 347 if(SW2== 1){key= mKEY;}; // appui touche MIDDLE
RCMISbed 0:13c98588f2fc 348 if(SW3== 1){key= rKEY;}; // appui touche LEFT
RCMISbed 0:13c98588f2fc 349 if(SW0== 0){key= razKEY;}; // appui touche RAZ (touche inversée)
RCMISbed 0:13c98588f2fc 350
RCMISbed 0:13c98588f2fc 351 // b- Process/ Gestion LED
RCMISbed 0:13c98588f2fc 352 switch(key){
RCMISbed 0:13c98588f2fc 353 case lKEY : if(fINPUT== true){sonWDT= 3; sw1WDT= keyWDTMAX ; bledWDT= 10; fINPUT= false;}; break;
RCMISbed 0:13c98588f2fc 354 case mKEY : if(fINPUT== true){sonWDT= 3; sw2WDT= keyWDTMAX ; gledWDT= 10; fINPUT= false;}; break;
RCMISbed 0:13c98588f2fc 355 case rKEY : if(fINPUT== true){sonWDT= 3; sw3WDT= keyWDTMAX ; rledWDT= 10; fINPUT= false;}; break;
RCMISbed 0:13c98588f2fc 356 case razKEY : if(fINPUT== true){sonWDT= 3; sw0WDT= keyWDTMAX ;
RCMISbed 0:13c98588f2fc 357 bledWDT= 5; gledWDT= 5; rledWDT= 5; fINPUT= false;}; break;
RCMISbed 0:13c98588f2fc 358 case noKEY : fINPUT= true; break;
RCMISbed 0:13c98588f2fc 359 default : break;
RCMISbed 0:13c98588f2fc 360 };
RCMISbed 0:13c98588f2fc 361
RCMISbed 0:13c98588f2fc 362 // c- Process/ Gestion PAD
RCMISbed 0:13c98588f2fc 363 // c.1- Process/ Gestion PAD/ SW
RCMISbed 0:13c98588f2fc 364 ctn= 0;
RCMISbed 0:13c98588f2fc 365 while(ctn<= padNbSW){
RCMISbed 0:13c98588f2fc 366 switch(ctn){
RCMISbed 0:13c98588f2fc 367 case 0: // Gestion SW(0]: RAZ loi
RCMISbed 0:13c98588f2fc 368 pad.sw[0].value= OFF; if(key== razKEY){pad.sw[0].value= ON;};
RCMISbed 0:13c98588f2fc 369 if(pad.sw[0].value== ON){
RCMISbed 0:13c98588f2fc 370 pad.axe[1].in= Dyn0; pad.axe[1].i0= Dyn0; pad.axe[1].i= 0; pad.axe[1].out= 0;
RCMISbed 0:13c98588f2fc 371 pad.axe[0].in= Dyn0; pad.axe[0].i0= Dyn0; pad.axe[0].i= 0; pad.axe[0].out= 0;
RCMISbed 0:13c98588f2fc 372 };
RCMISbed 0:13c98588f2fc 373 break;
RCMISbed 0:13c98588f2fc 374 case 1: // Gestion SW(1]
RCMISbed 0:13c98588f2fc 375 break;
RCMISbed 0:13c98588f2fc 376 case 2: // Gestion SW(2]
RCMISbed 0:13c98588f2fc 377 break;
RCMISbed 0:13c98588f2fc 378 case 3: // Gestion SW(3]
RCMISbed 0:13c98588f2fc 379 break;
RCMISbed 0:13c98588f2fc 380 case 4: // Gestion SW(4]
RCMISbed 0:13c98588f2fc 381 break;
RCMISbed 0:13c98588f2fc 382 default:break;
RCMISbed 0:13c98588f2fc 383 };
RCMISbed 0:13c98588f2fc 384 ++ctn;
RCMISbed 0:13c98588f2fc 385 }; // fin while(ctn<= padNbSW){
RCMISbed 0:13c98588f2fc 386
RCMISbed 0:13c98588f2fc 387
RCMISbed 0:13c98588f2fc 388 // c.2- Process/ Gestion SW
RCMISbed 0:13c98588f2fc 389 sw= mSTB;
RCMISbed 0:13c98588f2fc 390 if(sw0WDT> 0){sw= mRAZ;};
RCMISbed 0:13c98588f2fc 391 if(sw1WDT> 0){sw= mSTP;};
RCMISbed 0:13c98588f2fc 392 if(sw2WDT> 0){sw= mMAN;};
RCMISbed 0:13c98588f2fc 393 if(sw3WDT> 0){sw= mPA; };
RCMISbed 0:13c98588f2fc 394
RCMISbed 0:13c98588f2fc 395
RCMISbed 0:13c98588f2fc 396 // c.2- Process/ Gestion PAD
RCMISbed 0:13c98588f2fc 397 // c.2- Process/ Gestion PAD/ axe 1
RCMISbed 0:13c98588f2fc 398 pad.axe[0].out = 2*padX- 1;
RCMISbed 0:13c98588f2fc 399 if(pad.axe[0].out< -1){pad.axe[0].out= -1;};
RCMISbed 0:13c98588f2fc 400 if(pad.axe[0].out> 1){pad.axe[0].out= 1;};
RCMISbed 0:13c98588f2fc 401
RCMISbed 0:13c98588f2fc 402 // c.2.3- Process/ Gestion PAD/ axe Tangage
RCMISbed 0:13c98588f2fc 403 pad.axe[1].out = 2*padY- 1;
RCMISbed 0:13c98588f2fc 404 if(pad.axe[1].out< -1){pad.axe[1].out= -1;};
RCMISbed 0:13c98588f2fc 405 if(pad.axe[1].out> 1){pad.axe[1].out= 1;};
RCMISbed 0:13c98588f2fc 406
RCMISbed 0:13c98588f2fc 407
RCMISbed 0:13c98588f2fc 408 --periode;
RCMISbed 0:13c98588f2fc 409 if(periode<= 0){
RCMISbed 0:13c98588f2fc 410 sprintf(trame.tx,"%c,%d,%d,%d,%d,%d,%d,%c %d \r\n", startB, trame.id, (int)(DynM* pad.axe[1].out), (int)(DynM* pad.axe[0].out), sw, 0, 0, endB, epoch_time);
RCMISbed 0:13c98588f2fc 411 uart.printf("%s",trame.tx);
RCMISbed 0:13c98588f2fc 412 // usb.printf("Tx to MOBILE : %s",trame.tx);
RCMISbed 0:13c98588f2fc 413
RCMISbed 0:13c98588f2fc 414 periode= 10;
RCMISbed 0:13c98588f2fc 415 };
RCMISbed 0:13c98588f2fc 416
RCMISbed 0:13c98588f2fc 417 }
RCMISbed 0:13c98588f2fc 418
RCMISbed 0:13c98588f2fc 419
RCMISbed 0:13c98588f2fc 420
RCMISbed 0:13c98588f2fc 421
RCMISbed 0:13c98588f2fc 422
RCMISbed 0:13c98588f2fc 423
RCMISbed 0:13c98588f2fc 424 //5.4- Definition/ Procedures/ Initialisation
RCMISbed 0:13c98588f2fc 425 int InitProcess(void){
RCMISbed 0:13c98588f2fc 426
RCMISbed 0:13c98588f2fc 427 int cmpt= 0, ctn= 0, status= 0;
RCMISbed 0:13c98588f2fc 428
RCMISbed 0:13c98588f2fc 429 pTX= 0;
RCMISbed 0:13c98588f2fc 430 RX_LED_OFF;
RCMISbed 0:13c98588f2fc 431 R_LED_OFF;
RCMISbed 0:13c98588f2fc 432 G_LED_OFF;
RCMISbed 0:13c98588f2fc 433 B_LED_OFF;
RCMISbed 0:13c98588f2fc 434 SON_OFF;
RCMISbed 0:13c98588f2fc 435
RCMISbed 0:13c98588f2fc 436 usb.printf("\r\n\r\n\r\n");
RCMISbed 0:13c98588f2fc 437 if(vDEBUG== true){usb.printf("%s/ Initialisation ..... %s \r\n", productName, versionName); wait(1);};
RCMISbed 0:13c98588f2fc 438
RCMISbed 0:13c98588f2fc 439
RCMISbed 0:13c98588f2fc 440 // Signal Sonore et Lumineux de Bienvenue
RCMISbed 0:13c98588f2fc 441 SON_ON; wait(0.1); SON_OFF;
RCMISbed 0:13c98588f2fc 442 R_LED_ON; G_LED_ON; B_LED_ON;
RCMISbed 0:13c98588f2fc 443
RCMISbed 0:13c98588f2fc 444 // if(vDEBUG== true){usb.println(" "); usb.print(productName); usb.print(" nb axes: "); usb.println(padNbAxe);delay(10);};
RCMISbed 0:13c98588f2fc 445 cmpt= 0;
RCMISbed 0:13c98588f2fc 446 while(cmpt< padNbAxe){
RCMISbed 0:13c98588f2fc 447 // if(vDEBUG== true){usb.print("-"); delay(500);};
RCMISbed 0:13c98588f2fc 448 switch(cmpt){
RCMISbed 0:13c98588f2fc 449 case 0:// Axe Latteral (Roulis)
RCMISbed 0:13c98588f2fc 450 // pad.axe[cmpt].nom = XAxeName; // "Roulis"; // Axe/ Designation
RCMISbed 0:13c98588f2fc 451 pad.axe[cmpt].scB = 100; // Mode Commande : 100 (%: 100 -> Proportionnelle pure, 0 -> Integrale Pure)
RCMISbed 0:13c98588f2fc 452 pad.axe[cmpt].dzB = 7; // Dead Zone : 5 (% plage)
RCMISbed 0:13c98588f2fc 453 pad.axe[cmpt].znlB = 25; // Zone Non Linearite: 50 (% plage)
RCMISbed 0:13c98588f2fc 454 pad.axe[cmpt].ctfB= 20; // Gain Proportionnel: 20 (% plage)
RCMISbed 0:13c98588f2fc 455 pad.axe[cmpt].ctiB= 0; // Gain Integral : 0 (% plage)
RCMISbed 0:13c98588f2fc 456 pad.axe[cmpt].gainI= 20; // Gain Integration deuxieme zone lineaire/ Valeure
RCMISbed 0:13c98588f2fc 457 // RAZ filtre moyenneur
RCMISbed 0:13c98588f2fc 458 // pad.axe[cmpt].fm[0]= 0; pad.axe[cmpt].fm[1]= 0; pad.axe[cmpt].fm[2]= 0; pad.axe[cmpt].fm[3]= 0; pad.axe[cmpt].fm[4]= 0;
RCMISbed 0:13c98588f2fc 459 break;
RCMISbed 0:13c98588f2fc 460
RCMISbed 0:13c98588f2fc 461 case 1:// Axe Antero posterieur (Tangage)
RCMISbed 0:13c98588f2fc 462 // pad.axe[cmpt].nom = YAxeName; //"Tangage";// Axe/ Designation
RCMISbed 0:13c98588f2fc 463 pad.axe[cmpt].scB = 100; // Mode Commande : 100 (%: 100 -> Proportionnelle pure, 0 -> Integrale Pure) // Commande Integrale Pure
RCMISbed 0:13c98588f2fc 464 pad.axe[cmpt].dzB = 5; // Dead Zone : 10 (% plage)
RCMISbed 0:13c98588f2fc 465 pad.axe[cmpt].znlB = 70; // Zone Non Linearite: 40 (% plage)
RCMISbed 0:13c98588f2fc 466 pad.axe[cmpt].ctfB= 20; // Gain Proportionnel: 20 (% plage)
RCMISbed 0:13c98588f2fc 467 pad.axe[cmpt].ctiB= 0; // Gain Integral : 0 (% plage)
RCMISbed 0:13c98588f2fc 468 pad.axe[cmpt].gainI= 25; // Gain Integration deuxieme zone lineaire/ Valeure
RCMISbed 0:13c98588f2fc 469 // RAZ filtre moyenneur
RCMISbed 0:13c98588f2fc 470 // pad.axe[cmpt].fm[0]= 0; pad.axe[cmpt].fm[1]= 0; pad.axe[cmpt].fm[2]= 0; pad.axe[cmpt].fm[3]= 0; pad.axe[cmpt].fm[4]= 0;
RCMISbed 0:13c98588f2fc 471 break;
RCMISbed 0:13c98588f2fc 472 default: break;
RCMISbed 0:13c98588f2fc 473 }; // fin switch(cmpt){
RCMISbed 0:13c98588f2fc 474
RCMISbed 0:13c98588f2fc 475 pad.axe[cmpt].sc = pad.axe[cmpt].scB/ 100;
RCMISbed 0:13c98588f2fc 476 pad.axe[cmpt].dzm = pad.axe[cmpt].dzB; pad.axe[cmpt].dzm/= 100; // Dead Zone/ Valeur min
RCMISbed 0:13c98588f2fc 477 pad.axe[cmpt].dzm*= -1;
RCMISbed 0:13c98588f2fc 478 pad.axe[cmpt].dzM = pad.axe[cmpt].dzB; pad.axe[cmpt].dzM/= 100; // Dead Zone/ Valeur MAX
RCMISbed 0:13c98588f2fc 479 pad.axe[cmpt].znlm= pad.axe[cmpt].znlB; pad.axe[cmpt].znlm/= 100; // Zone Non Linearite/ Valeur min
RCMISbed 0:13c98588f2fc 480 pad.axe[cmpt].znlm*= -1;
RCMISbed 0:13c98588f2fc 481 pad.axe[cmpt].znlM= pad.axe[cmpt].znlB; pad.axe[cmpt].znlM/= 100; // Zone Non Linearite/ Valeur MAX
RCMISbed 0:13c98588f2fc 482 pad.axe[cmpt].ctf = ctfmin+ (((pad.axe[cmpt].ctfB*(ctfMAX- ctfmin))/100)); // Gain Proportionnel/ Valeur nominale
RCMISbed 0:13c98588f2fc 483 pad.axe[cmpt].cti = ctimin+ (((pad.axe[cmpt].ctiB*(ctiMAX- ctimin))/100)); // Gain Integral/ Valeur nominale
RCMISbed 0:13c98588f2fc 484 pad.axe[cmpt].l = 0;
RCMISbed 0:13c98588f2fc 485 pad.axe[cmpt].i = 0;
RCMISbed 0:13c98588f2fc 486 pad.axe[cmpt].p = 0;
RCMISbed 0:13c98588f2fc 487 pad.axe[cmpt].i0 = 0;
RCMISbed 0:13c98588f2fc 488 pad.axe[cmpt].in = 0;
RCMISbed 0:13c98588f2fc 489 pad.axe[cmpt].out = 0;
RCMISbed 0:13c98588f2fc 490 pad.axe[cmpt].x= 0; pad.axe[cmpt].dX= 0; pad.axe[cmpt].X= 0;
RCMISbed 0:13c98588f2fc 491
RCMISbed 0:13c98588f2fc 492 ++cmpt;
RCMISbed 0:13c98588f2fc 493 }; // fin while(cmpt<= padNbAxe){
RCMISbed 0:13c98588f2fc 494
RCMISbed 0:13c98588f2fc 495
RCMISbed 0:13c98588f2fc 496 // if(vDEBUG== true){usb.println(" "); delay(10);};
RCMISbed 0:13c98588f2fc 497
RCMISbed 0:13c98588f2fc 498 // Initialisation/ Module/ PAD/ SW
RCMISbed 0:13c98588f2fc 499 // if(vDEBUG== true){usb.print(productName); usb.print("/ Initialisation/ PAD/ SW "); delay(10);};
RCMISbed 0:13c98588f2fc 500 cmpt= 0;
RCMISbed 0:13c98588f2fc 501 while(cmpt<= padNbSW){
RCMISbed 0:13c98588f2fc 502 // if(vDEBUG== true){usb.print("-"); delay(10);};
RCMISbed 0:13c98588f2fc 503 switch(cmpt){
RCMISbed 0:13c98588f2fc 504 case 0:// Switch SW0: RAZ
RCMISbed 0:13c98588f2fc 505 pad.sw[0].value = OFF;
RCMISbed 0:13c98588f2fc 506 break;
RCMISbed 0:13c98588f2fc 507 default: break;
RCMISbed 0:13c98588f2fc 508 }; // fin switch(cmpt){
RCMISbed 0:13c98588f2fc 509 ++cmpt;
RCMISbed 0:13c98588f2fc 510 }; // fin while(cmpt<= padNbSW){
RCMISbed 0:13c98588f2fc 511
RCMISbed 0:13c98588f2fc 512
RCMISbed 0:13c98588f2fc 513 // Initialisation/ Module/ Trame emission et reception UART
RCMISbed 0:13c98588f2fc 514 // if(vDEBUG== true){usb.print(productName); usb.print("/ Initialisation/ PAD/ Trame "); delay(10);};
RCMISbed 0:13c98588f2fc 515 trame.wdtTX = wdtTXMAX;
RCMISbed 0:13c98588f2fc 516 trame.wdtRX = wdtRXMAX;
RCMISbed 0:13c98588f2fc 517 ctn= wBUFFER- 1; while(ctn>= 0){trame.rx[ctn]= ' '; --ctn;};
RCMISbed 0:13c98588f2fc 518 trame.pcar = -1;
RCMISbed 0:13c98588f2fc 519 trame.fSB = false;
RCMISbed 0:13c98588f2fc 520 trame.fEB = false;
RCMISbed 0:13c98588f2fc 521 trame.sb = startB;
RCMISbed 0:13c98588f2fc 522 trame.eb = endB;
RCMISbed 0:13c98588f2fc 523 trame.dlb = dlB;
RCMISbed 0:13c98588f2fc 524 trame.id = idMOBILE;
RCMISbed 0:13c98588f2fc 525
RCMISbed 0:13c98588f2fc 526 //Initialisation/ Materiel/ DS3231
RCMISbed 0:13c98588f2fc 527 // ds3231_time_t time = {12,0,0,0,1};
RCMISbed 0:13c98588f2fc 528 // int16_t ret_val= rtc.set_time(time);
RCMISbed 0:13c98588f2fc 529
RCMISbed 0:13c98588f2fc 530
RCMISbed 0:13c98588f2fc 531 //Initialisation/ Materiel/ Communication/ UART USB
RCMISbed 0:13c98588f2fc 532 usb.baud(usbBR); wait(0.3);
RCMISbed 0:13c98588f2fc 533 usb.attach(&rx_usb_isr, Serial::RxIrq);
RCMISbed 0:13c98588f2fc 534 // USB.attach(&Tx_USB_Isr, Serial::TxIrq);
RCMISbed 0:13c98588f2fc 535 pUSBRx= 0; pUSBTx= 0;
RCMISbed 0:13c98588f2fc 536
RCMISbed 0:13c98588f2fc 537 //Initialisation/ Materiel/ Communication/ UART BT
RCMISbed 0:13c98588f2fc 538 uart.baud(uartBR); wait(0.3);
RCMISbed 0:13c98588f2fc 539 uart.attach(&rx_uart_isr, Serial::RxIrq);
RCMISbed 0:13c98588f2fc 540 // uart.attach(&Tx_uart_Isr, Serial::TxIrq);
RCMISbed 0:13c98588f2fc 541
RCMISbed 0:13c98588f2fc 542 //Initialisation/ Materiel/ Communication/ I2C
RCMISbed 0:13c98588f2fc 543 i2c.frequency(i2cBR); wait(0.2);
RCMISbed 0:13c98588f2fc 544
RCMISbed 0:13c98588f2fc 545
RCMISbed 0:13c98588f2fc 546 //Initialisation/ Materiel/ Communication/ RTC
RCMISbed 0:13c98588f2fc 547 // epoch_time = rtc.get_epoch(); // ds3231
RCMISbed 0:13c98588f2fc 548
RCMISbed 0:13c98588f2fc 549 // Signal Sonore et Lumineux de Sortie
RCMISbed 0:13c98588f2fc 550 SON_ON; wait(0.1); SON_OFF;
RCMISbed 0:13c98588f2fc 551 R_LED_OFF; G_LED_OFF; B_LED_OFF;
RCMISbed 0:13c98588f2fc 552
RCMISbed 0:13c98588f2fc 553 //Initialisation/ Materiel/ Interruption principale
RCMISbed 0:13c98588f2fc 554 if(status ==0){process.attach(&process_isr, TSample);};
RCMISbed 0:13c98588f2fc 555
RCMISbed 0:13c98588f2fc 556 return status;
RCMISbed 0:13c98588f2fc 557 }
RCMISbed 0:13c98588f2fc 558
RCMISbed 0:13c98588f2fc 559
RCMISbed 0:13c98588f2fc 560
RCMISbed 0:13c98588f2fc 561
RCMISbed 0:13c98588f2fc 562
RCMISbed 0:13c98588f2fc 563
RCMISbed 0:13c98588f2fc 564 //5.6- Definition/ Procedure/ Alarme
RCMISbed 0:13c98588f2fc 565 void alarme(void){
RCMISbed 0:13c98588f2fc 566 while(1){
RCMISbed 0:13c98588f2fc 567 B_LED_OFF; G_LED_OFF; R_LED_OFF; wait(0.3);
RCMISbed 0:13c98588f2fc 568 B_LED_ON; G_LED_OFF; R_LED_OFF; wait(0.3);
RCMISbed 0:13c98588f2fc 569 B_LED_OFF; G_LED_ON; R_LED_OFF; wait(0.3);
RCMISbed 0:13c98588f2fc 570 B_LED_OFF; G_LED_OFF; R_LED_ON; wait(0.3);
RCMISbed 0:13c98588f2fc 571 B_LED_OFF; G_LED_OFF; R_LED_OFF; wait(0.3);
RCMISbed 0:13c98588f2fc 572 };
RCMISbed 0:13c98588f2fc 573 }
RCMISbed 0:13c98588f2fc 574
RCMISbed 0:13c98588f2fc 575
RCMISbed 0:13c98588f2fc 576
RCMISbed 0:13c98588f2fc 577 //5.6- Definition/ Procedure/ Principale
RCMISbed 0:13c98588f2fc 578 int main(){
RCMISbed 0:13c98588f2fc 579 int statusInit= 0;
RCMISbed 0:13c98588f2fc 580 string svalue = "";
RCMISbed 0:13c98588f2fc 581
RCMISbed 0:13c98588f2fc 582 statusInit= InitProcess(); // Processus Principal/ Initialisation
RCMISbed 0:13c98588f2fc 583 if(statusInit== -1){ alarme();}; // Processus Principal/ Initialisation/ Probleme/ ARRET
RCMISbed 0:13c98588f2fc 584
RCMISbed 0:13c98588f2fc 585 usb.printf("\r\n\r\n--------------------------------------------------------\r\n\r\n");
RCMISbed 0:13c98588f2fc 586 usb.printf("%s/ %s version : %s \r\n", target, productName, versionName);
RCMISbed 0:13c98588f2fc 587 usb.printf("\r\n\r\n");
RCMISbed 0:13c98588f2fc 588
RCMISbed 0:13c98588f2fc 589 usb.printf("Parametre/ TSample (ms) : %d \r\n", (int)(1000*TSample));
RCMISbed 0:13c98588f2fc 590 usb.printf("Parametre/ USB Baud Rate : %d \r\n", usbBR);
RCMISbed 0:13c98588f2fc 591 usb.printf("\r\n");
RCMISbed 0:13c98588f2fc 592 usb.printf("%s/ STATUS : Running ... \r\n\r\n", productName);
RCMISbed 0:13c98588f2fc 593
RCMISbed 0:13c98588f2fc 594 // Processus principal
RCMISbed 0:13c98588f2fc 595 while(true){
RCMISbed 0:13c98588f2fc 596
RCMISbed 0:13c98588f2fc 597 if(secWDT<= 0){
RCMISbed 0:13c98588f2fc 598 epoch_time = rtc.get_epoch();
RCMISbed 0:13c98588f2fc 599 rledWDT= 5;
RCMISbed 0:13c98588f2fc 600 secWDT= secWDTMAX;
RCMISbed 0:13c98588f2fc 601 };
RCMISbed 0:13c98588f2fc 602
RCMISbed 0:13c98588f2fc 603 /*
RCMISbed 0:13c98588f2fc 604 // 5.15.1- Gestion Bus I2C
RCMISbed 0:13c98588f2fc 605 tmp1= 888;
RCMISbed 0:13c98588f2fc 606 tmp2= 999;
RCMISbed 0:13c98588f2fc 607 tmp1= power.read_bus_voltage();
RCMISbed 0:13c98588f2fc 608 tmp2= power.read_current();
RCMISbed 0:13c98588f2fc 609 eTENSION= tmp1;
RCMISbed 0:13c98588f2fc 610 eCOURANT= tmp2;
RCMISbed 0:13c98588f2fc 611
RCMISbed 0:13c98588f2fc 612 // 5.15.2- Gestion Bus CAN
RCMISbed 0:13c98588f2fc 613 // 5.15.2.1- CAN Emission
RCMISbed 0:13c98588f2fc 614 if(sndCAN== true){ // CAN/ Emission
RCMISbed 0:13c98588f2fc 615 // CANTx.clear();
RCMISbed 0:13c98588f2fc 616 switch(processCAN){
RCMISbed 0:13c98588f2fc 617 case 0: CANTx.id= idMOBILE; processCAN= 1;break; // CAN/ demande info IMU
RCMISbed 0:13c98588f2fc 618 case 1: CANTx.id= idIMU; processCAN= 0;break;
RCMISbed 0:13c98588f2fc 619 default: break;
RCMISbed 0:13c98588f2fc 620 }; // fin switch(processCAN){
RCMISbed 0:13c98588f2fc 621 CANTx.len= 1;
RCMISbed 0:13c98588f2fc 622 CANTx.data[0]= 0;
RCMISbed 0:13c98588f2fc 623 bCAN.write(CANTx);
RCMISbed 0:13c98588f2fc 624 sndCAN= false;
RCMISbed 0:13c98588f2fc 625 }; // fin if(sndCAN== true){
RCMISbed 0:13c98588f2fc 626
RCMISbed 0:13c98588f2fc 627 // 5.15.2.2- CAN Reception
RCMISbed 0:13c98588f2fc 628 if(rcvCAN== true){ // CAN/ Reception
RCMISbed 0:13c98588f2fc 629 switch(CANRx.id){
RCMISbed 0:13c98588f2fc 630 case idIMU : // imuWDT= 100;
RCMISbed 0:13c98588f2fc 631 // led(1, d20ms);
RCMISbed 0:13c98588f2fc 632 break;
RCMISbed 0:13c98588f2fc 633 default : break;
RCMISbed 0:13c98588f2fc 634 }; // fin swith(CANRx.id){
RCMISbed 0:13c98588f2fc 635 rcvCAN= false;
RCMISbed 0:13c98588f2fc 636 }; // fin if(rcvCAN== true){
RCMISbed 0:13c98588f2fc 637 */
RCMISbed 0:13c98588f2fc 638 }; // fin while(true){
RCMISbed 0:13c98588f2fc 639
RCMISbed 0:13c98588f2fc 640 } // Fin int main() {
RCMISbed 0:13c98588f2fc 641
RCMISbed 0:13c98588f2fc 642