dujardin stephane
/
base_mbed_SAE1_S2
point de depart de la programmation
Diff: main.cpp
- Revision:
- 10:32b5218ff304
- Parent:
- 9:695e8840ec64
- Child:
- 11:fa0f1787ea13
--- a/main.cpp Tue Dec 03 18:30:47 2019 +0000 +++ b/main.cpp Sun Jan 26 15:20:30 2020 +0000 @@ -24,9 +24,41 @@ //********************************************************************** uint16_t chi[5]; // déclaratiion d'un tableau d'entiers 16bits sans signe float chf[5]; // déclaration d'un tableau de float -int recpt = 0; // pour y stocker l'arrivé d'un octet de la liaison série XBEE +int recpt = 0; // on y pose l'arrivé d'un octet de la liaison série + +int XX = 0; +int YY = 64000; +int P1 ; int P2 ; int P3 ; int P4; // int vers hexa msb > lsb en ascii //******** sous programmes ( situés en bas de cette page ) +int hexa( int in) + { // sous programme de traduction de 4 bits d'un int en ascii + int out = '0'; + if ( in == 0) out='0'; if( in ==1 ) out ='1'; if ( in == 2 ) out = '2'; + if ( in == 3) out='3'; if( in ==4 ) out ='4'; if ( in == 5 ) out = '5'; + if ( in == 6) out='6'; if( in ==7 ) out ='7'; if ( in == 8 ) out = '8'; + if ( in == 9) out='9'; if( in ==10) out ='A'; if ( in == 11) out = 'B'; + if ( in == 12)out='C'; if( in ==13) out ='D'; if ( in == 14) out = 'E'; + if ( in == 15)out='F'; + return (out); + } + +void trad( int in ) + { // sous programme de traduction d'un int en hexa + int din = in / 4096; + P1 = hexa(din); + int ddin = din * 4096 ; + din = in - ddin; + int dddin = din/256 ; + P2 = hexa(dddin); + int ddddin = dddin * 256 ; + din = din - ddddin; + int dddddin = din/16; + P3 = hexa(dddddin); + int ddddddin = dddddin*16 ; + din = din - ddddddin; + P4 = hexa (din) ; + } void interrupt(); // lié à la liaison série void init(void) // initialisation @@ -48,30 +80,31 @@ { LL = !LL ; //inverse led carte mbed wait(0.5); // delai 0.5s + XX = XX + 1 ; YY = YY - 1; -// exemple 1 de transfert d'une trame de 4 entiers au protocole duj2 ( toto) - // pc.putc('i'); // pointeur 1 = 0 - // pc.putc('e'); pc.putc('0'); pc.putc('1'); pc.putc('0'); pc.putc('0');//Pt++ - // pc.putc('e'); pc.putc('0'); pc.putc('1'); pc.putc('0'); pc.putc('1'); - // pc.putc('e'); pc.putc('0'); pc.putc('1'); pc.putc('0'); pc.putc('2'); - // pc.putc('e'); pc.putc('0'); pc.putc('1'); pc.putc('0'); pc.putc('3'); - // pc.putc('q'); // mise en mémoire +//exemple 1 ) Tranfert de deux int : XX et XX en ascii ( base hexa)en DUJ2 + pc.putc('i'); // pointeur 1 = 0 + trad(XX); // traduit un int XX en 4 ascii en hexa + pc.putc('e'); pc.putc(P1); pc.putc(P2); pc.putc(P3); pc.putc(P4); + trad(YY); + pc.putc('e'); pc.putc(P1); pc.putc(P2); pc.putc(P3); pc.putc(P4); + pc.putc('q'); // top de fin traduction des data recues et utilisation // on verra le résultat sur Tera Term en 19200 bauds - // comme ceci " ie0100e0101e0102e0103q " - // cette partie sera celle qui vous servira a valider votre processing + // comme ceci " ie0001e6400q" à la 1ere seconde + // cette exemple vous servira à valider votre processing -// exemple 2 pour mesurer et transferer ch1 en hex et ch2 en float - chi[1] = Ch1.read_u16(); // mesure ch1 mise en int en memoire 16bits - chf[1] = Ch2.read(); // mesure ch2 mise en float en mémoire - printf(" chi =0x%04x " , chi[1] ); // affiche chi en hexadecima ( 4 char) - printf(" chf =%.6f \n", 3.3*( chf[1])); // affiche chf en float (6char ) - // on lira ceci " chi =0x80b8 chf =0.710769 " +//exemple 2) mesurer et transferer sur usb serie ch1 en hex et ch2 en float ( non duj2) +// chi[1] = Ch1.read_u16(); // mesure ch1 mise en int en memoire 16bits +// chf[1] = Ch2.read(); // mesure ch2 mise en float en mémoire +// printf(" chi =0x%04x " , chi[1] ); //affiche chi en hexadecima ( 4 char) +// printf(" chf =%.6f \n", 3.3*( chf[1])); // affiche chf en float (6char ) +// on lira ceci " chi =0x80b8 chf =0.710769 " NON DUJ2 } } -void interrupt() // "recepteur" à chaque carractère reçut ce programme est activé - { // à vous de jouer !! a partir de l'exemple fournit page 11 +void interrupt()//"recepteur" à chaque carractère reçut ce programme est activé + { // à vous de jouer !! recpt = pc.getc(); if ( recpt == 'i') IO = !IO; // si 'i' inverse led carte MES return;