dujardin stephane / Mbed 2 deprecated base_mbed_SAE1_S2

Dependencies:   mbed

Committer:
dujardin
Date:
Sat Mar 28 15:50:27 2020 +0000
Revision:
11:fa0f1787ea13
Parent:
10:32b5218ff304
Child:
12:09b5ebdca214
modif du 28 03 2020

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dujardin 2:6566f09256dc 1 #include "mbed.h" //
dujardin 0:5945217144be 2
dujardin 5:c404ef14ea33 3 //-------- programme de test carte MES432 ----------------
dujardin 3:032c516c2ffa 4 // chaque seconde, numérise 4 valeurs sur ch1 ch2
dujardin 7:7b0c1a910ccc 5 // ***************et envoie en duj2 de la trame de test exemple dit "toto"
dujardin 2:6566f09256dc 6 //
dujardin 2:6566f09256dc 7 // configuration liaison série à 19200 bps ( driver stlink)
dujardin 1:1779a3279496 8 // A0 et A1 sont placées en entrée analogique ( mesure sortie AOP)
dujardin 1:1779a3279496 9 // A3 et A4 sont placées en sortie analogique ( offset vers AOP)
dujardin 2:6566f09256dc 10 // sorties led sur carte nommée LL , IO sur D3 , pol sur D2
dujardin 3:032c516c2ffa 11 // broches D0 D1 sont précablées en I2C ( sans plus)
dujardin 4:fdb2d0fefd66 12 // connecteur (vue de face)*** I2C I2C IO Ov Ov 3.3V ch2 ch1 ***
dujardin 0:5945217144be 13 //------------------------------------
dujardin 0:5945217144be 14
dujardin 2:6566f09256dc 15 //****************** déclaration des broches ****************
dujardin 1:1779a3279496 16 Serial pc(SERIAL_TX, SERIAL_RX); // PORT SERIE SUR usb !!
dujardin 9:695e8840ec64 17 AnalogIn Ch1(A1) ;AnalogIn Ch2(A0); // entrées ana nommées Ch1 Ch2
dujardin 1:1779a3279496 18 AnalogOut out1(A3);AnalogOut out2(A4); // sorties ana nommées out1 out2
dujardin 1:1779a3279496 19 I2C i2c(D0,D1); // (sda,scl) canal I2C nommé i2c
dujardin 2:6566f09256dc 20 DigitalOut pol(D2); // polarisation à 3.3V I2C ( si à 1)
dujardin 2:6566f09256dc 21 DigitalOut IO(D3); // sortie TTL nommée S0
dujardin 1:1779a3279496 22 DigitalOut LL(LED1); // led nommée LL ( sur module L432
dujardin 2:6566f09256dc 23 // nota IO peut etre déclarée en entrée en ecrivant DigitalIn IO(D3);
dujardin 2:6566f09256dc 24 //**********************************************************************
dujardin 4:fdb2d0fefd66 25 uint16_t chi[5]; // déclaratiion d'un tableau d'entiers 16bits sans signe
dujardin 4:fdb2d0fefd66 26 float chf[5]; // déclaration d'un tableau de float
dujardin 10:32b5218ff304 27 int recpt = 0; // on y pose l'arrivé d'un octet de la liaison série
dujardin 10:32b5218ff304 28
dujardin 10:32b5218ff304 29 int XX = 0;
dujardin 10:32b5218ff304 30 int YY = 64000;
dujardin 10:32b5218ff304 31 int P1 ; int P2 ; int P3 ; int P4; // int vers hexa msb > lsb en ascii
dujardin 7:7b0c1a910ccc 32
dujardin 7:7b0c1a910ccc 33 //******** sous programmes ( situés en bas de cette page )
dujardin 10:32b5218ff304 34 int hexa( int in)
dujardin 10:32b5218ff304 35 { // sous programme de traduction de 4 bits d'un int en ascii
dujardin 10:32b5218ff304 36 int out = '0';
dujardin 10:32b5218ff304 37 if ( in == 0) out='0'; if( in ==1 ) out ='1'; if ( in == 2 ) out = '2';
dujardin 10:32b5218ff304 38 if ( in == 3) out='3'; if( in ==4 ) out ='4'; if ( in == 5 ) out = '5';
dujardin 10:32b5218ff304 39 if ( in == 6) out='6'; if( in ==7 ) out ='7'; if ( in == 8 ) out = '8';
dujardin 10:32b5218ff304 40 if ( in == 9) out='9'; if( in ==10) out ='A'; if ( in == 11) out = 'B';
dujardin 10:32b5218ff304 41 if ( in == 12)out='C'; if( in ==13) out ='D'; if ( in == 14) out = 'E';
dujardin 10:32b5218ff304 42 if ( in == 15)out='F';
dujardin 10:32b5218ff304 43 return (out);
dujardin 10:32b5218ff304 44 }
dujardin 10:32b5218ff304 45
dujardin 10:32b5218ff304 46 void trad( int in )
dujardin 10:32b5218ff304 47 { // sous programme de traduction d'un int en hexa
dujardin 10:32b5218ff304 48 int din = in / 4096;
dujardin 10:32b5218ff304 49 P1 = hexa(din);
dujardin 10:32b5218ff304 50 int ddin = din * 4096 ;
dujardin 10:32b5218ff304 51 din = in - ddin;
dujardin 10:32b5218ff304 52 int dddin = din/256 ;
dujardin 10:32b5218ff304 53 P2 = hexa(dddin);
dujardin 10:32b5218ff304 54 int ddddin = dddin * 256 ;
dujardin 10:32b5218ff304 55 din = din - ddddin;
dujardin 10:32b5218ff304 56 int dddddin = din/16;
dujardin 10:32b5218ff304 57 P3 = hexa(dddddin);
dujardin 10:32b5218ff304 58 int ddddddin = dddddin*16 ;
dujardin 10:32b5218ff304 59 din = din - ddddddin;
dujardin 10:32b5218ff304 60 P4 = hexa (din) ;
dujardin 10:32b5218ff304 61 }
dujardin 7:7b0c1a910ccc 62 void interrupt(); // lié à la liaison série
dujardin 0:5945217144be 63
dujardin 3:032c516c2ffa 64 void init(void) // initialisation
dujardin 3:032c516c2ffa 65 {
dujardin 4:fdb2d0fefd66 66 pc.baud(19200); // vitesse liaison série
dujardin 7:7b0c1a910ccc 67 pc.attach(&interrupt, Serial::RxIrq); // autorise IT de liaison serie
dujardin 4:fdb2d0fefd66 68 pol = 1; // polarisation résistancesde l' I2C
dujardin 3:032c516c2ffa 69 LL = 0 ; // led du L432 on
dujardin 11:fa0f1787ea13 70 out1.write(0.25); // sortie si ana A3 = 0.5 * 3.3V soit 1.6 V
dujardin 11:fa0f1787ea13 71 out2.write(0.25); // sortie ana si A4 = 0.25* 3.3V soit 0.8 V
dujardin 4:fdb2d0fefd66 72 IO = 0 ; // sortie I/O mise à 0
dujardin 3:032c516c2ffa 73 }
dujardin 3:032c516c2ffa 74
dujardin 3:032c516c2ffa 75 int main()
dujardin 3:032c516c2ffa 76 {
dujardin 3:032c516c2ffa 77 init();
dujardin 1:1779a3279496 78
dujardin 0:5945217144be 79 while(1) // boucle sans fin
dujardin 3:032c516c2ffa 80 {
dujardin 11:fa0f1787ea13 81 LL = !LL ; //inverse led carte mbed
dujardin 11:fa0f1787ea13 82 wait(0.1); // delai 0.1s
dujardin 11:fa0f1787ea13 83 XX = Ch1.read_u16()/16 ;// read_u16 donne 12bits ijustifiés a gauche
dujardin 11:fa0f1787ea13 84 YY = Ch2.read_u16()/16; // on divise par 16 pour faire de 0 à 4095 12bits
dujardin 11:fa0f1787ea13 85 // attention
dujardin 10:32b5218ff304 86 //exemple 1 ) Tranfert de deux int : XX et XX en ascii ( base hexa)en DUJ2
dujardin 10:32b5218ff304 87 pc.putc('i'); // pointeur 1 = 0
dujardin 10:32b5218ff304 88 trad(XX); // traduit un int XX en 4 ascii en hexa
dujardin 10:32b5218ff304 89 pc.putc('e'); pc.putc(P1); pc.putc(P2); pc.putc(P3); pc.putc(P4);
dujardin 10:32b5218ff304 90 trad(YY);
dujardin 10:32b5218ff304 91 pc.putc('e'); pc.putc(P1); pc.putc(P2); pc.putc(P3); pc.putc(P4);
dujardin 10:32b5218ff304 92 pc.putc('q'); // top de fin traduction des data recues et utilisation
dujardin 9:695e8840ec64 93 // on verra le résultat sur Tera Term en 19200 bauds
dujardin 10:32b5218ff304 94 // comme ceci " ie0001e6400q" à la 1ere seconde
dujardin 10:32b5218ff304 95 // cette exemple vous servira à valider votre processing
dujardin 4:fdb2d0fefd66 96
dujardin 10:32b5218ff304 97 //exemple 2) mesurer et transferer sur usb serie ch1 en hex et ch2 en float ( non duj2)
dujardin 10:32b5218ff304 98 // chi[1] = Ch1.read_u16(); // mesure ch1 mise en int en memoire 16bits
dujardin 10:32b5218ff304 99 // chf[1] = Ch2.read(); // mesure ch2 mise en float en mémoire
dujardin 10:32b5218ff304 100 // printf(" chi =0x%04x " , chi[1] ); //affiche chi en hexadecima ( 4 char)
dujardin 10:32b5218ff304 101 // printf(" chf =%.6f \n", 3.3*( chf[1])); // affiche chf en float (6char )
dujardin 10:32b5218ff304 102 // on lira ceci " chi =0x80b8 chf =0.710769 " NON DUJ2
dujardin 4:fdb2d0fefd66 103
dujardin 3:032c516c2ffa 104 }
dujardin 3:032c516c2ffa 105 }
dujardin 7:7b0c1a910ccc 106
dujardin 10:32b5218ff304 107 void interrupt()//"recepteur" à chaque carractère reçut ce programme est activé
dujardin 10:32b5218ff304 108 { // à vous de jouer !!
dujardin 7:7b0c1a910ccc 109 recpt = pc.getc();
dujardin 8:3f5e4022745e 110 if ( recpt == 'i') IO = !IO; // si 'i' inverse led carte MES
dujardin 7:7b0c1a910ccc 111 return;
dujardin 7:7b0c1a910ccc 112 }