Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@11:fa0f1787ea13, 2020-03-28 (annotated)
- 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?
User | Revision | Line number | New 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 | } |