richard misi
/
STM32F303-ESSAI-DS3231-16102018
Essai ds3132
essai-ds3231.cpp@0:13c98588f2fc, 2018-10-17 (annotated)
- Committer:
- RCMISbed
- Date:
- Wed Oct 17 12:01:00 2018 +0000
- Revision:
- 0:13c98588f2fc
essai ds3132
Who changed what in which revision?
User | Revision | Line number | New 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 |