programme de test pour envoyer du DUJ4 vers processing

Dependencies:   mbed

Committer:
dujardin
Date:
Thu Jan 14 10:01:51 2021 +0000
Revision:
0:84f30b3eb83b
programme de test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dujardin 0:84f30b3eb83b 1 // DUJ4 en version limitée
dujardin 0:84f30b3eb83b 2 // en emission D comme Départ
dujardin 0:84f30b3eb83b 3 // 2 variables 16bits DK et DL
dujardin 0:84f30b3eb83b 4 // 3 tableaux de 100 12bits tabDR , tabDS , tabDT
dujardin 0:84f30b3eb83b 5 // ordres en emission .. a vous de jouer avec un pc.putc('f'); ordre 'f'
dujardin 0:84f30b3eb83b 6 // en Reception A comme Arrivée
dujardin 0:84f30b3eb83b 7 // 3 variables 16 bits AK et AL
dujardin 0:84f30b3eb83b 8 // 3 tableaux de 100 12 bits tabAR , tabAS , tabAT
dujardin 0:84f30b3eb83b 9 // ordres en reception .. a vous de jouer au debut de void interrup ...
dujardin 0:84f30b3eb83b 10
dujardin 0:84f30b3eb83b 11 // VARIABLES
dujardin 0:84f30b3eb83b 12 // variables pde reception et de décodage propres à DUJ4 pas au main
dujardin 0:84f30b3eb83b 13 int hex3 ='1' ; int hex2 = 0 ; int hex1 = 0 ; int hex0 = 0;
dujardin 0:84f30b3eb83b 14 int val3 =0 ; int val2=0 ;int val1 = 0; int val0 = 0; int res=0;
dujardin 0:84f30b3eb83b 15 int val = 0; // lieu de passage des char arrivés en port com
dujardin 0:84f30b3eb83b 16 int point = 0; // pointeur dans le tableau des char arrivés
dujardin 0:84f30b3eb83b 17 int rec[10]; // tableau des char en arrivée pure
dujardin 0:84f30b3eb83b 18 int ou ; int quoi ; // ou et quoi dans les tableaux tabAX[]
dujardin 0:84f30b3eb83b 19 int tempo = 0;
dujardin 0:84f30b3eb83b 20 //nom des tableaux servant de tampons de décodage en arrivée
dujardin 0:84f30b3eb83b 21 int tabAH[101] ;int tabAI[101] ; int tabAJ[101] ;
dujardin 0:84f30b3eb83b 22
dujardin 0:84f30b3eb83b 23 // nom des variables 16 bits en Depart utilisables dans le main
dujardin 0:84f30b3eb83b 24 int DK = 1000 ; int DL = 5000; // depart
dujardin 0:84f30b3eb83b 25 int AK = 0 ; int AL = 0; // arrivée
dujardin 0:84f30b3eb83b 26 // nom des tableaux de variables UTILISABLES dans le main
dujardin 0:84f30b3eb83b 27 int tabDR[101] ; int tabDS[101] ; int tabDT[101] ;// en Depart
dujardin 0:84f30b3eb83b 28 int tabAR[101] ; int tabAS[101] ; int tabAT[101] ;// en Arrivée
dujardin 0:84f30b3eb83b 29
dujardin 0:84f30b3eb83b 30 //SOUS PROGRAMMES
dujardin 0:84f30b3eb83b 31 int HEXit ( int valc )
dujardin 0:84f30b3eb83b 32 {// traduction d'une valeur 0 à 15 en Ascii O à F
dujardin 0:84f30b3eb83b 33 int asc;
dujardin 0:84f30b3eb83b 34 if ( valc > 16 ) valc = 16 ; if (valc < 1 ) valc = 0 ;
dujardin 0:84f30b3eb83b 35 if ( valc == 0 ) asc = '0'; if ( valc == 1 ) asc = '1';
dujardin 0:84f30b3eb83b 36 if ( valc == 2 ) asc = '2'; if ( valc == 3 ) asc = '3';
dujardin 0:84f30b3eb83b 37 if ( valc == 4 ) asc = '4'; if ( valc == 5 ) asc = '5';
dujardin 0:84f30b3eb83b 38 if ( valc == 6 ) asc = '6'; if ( valc == 7 ) asc = '7';
dujardin 0:84f30b3eb83b 39 if ( valc == 8 ) asc = '8'; if ( valc == 9 ) asc = '9';
dujardin 0:84f30b3eb83b 40 if ( valc == 10) asc = 'A'; if ( valc == 11) asc = 'B';
dujardin 0:84f30b3eb83b 41 if ( valc == 12) asc = 'C'; if ( valc == 13) asc = 'D';
dujardin 0:84f30b3eb83b 42 if ( valc == 14) asc = 'E'; if ( valc == 15) asc = 'F';
dujardin 0:84f30b3eb83b 43 return asc;
dujardin 0:84f30b3eb83b 44 }
dujardin 0:84f30b3eb83b 45
dujardin 0:84f30b3eb83b 46 void INTtoHEX( int valI) // calcul les 4 valeurs en hexa d'un INT
dujardin 0:84f30b3eb83b 47 {
dujardin 0:84f30b3eb83b 48 val3 =valI/4096 ;hex3 = HEXit( val3) ;
dujardin 0:84f30b3eb83b 49 valI =valI - 4096*val3 ; val2 = valI/256 ;hex2 = HEXit( val2) ;
dujardin 0:84f30b3eb83b 50 valI =valI - val2*256 ; val1 = valI/16 ;hex1 = HEXit( val1) ;
dujardin 0:84f30b3eb83b 51 valI =valI - val1*16 ; val0 = valI ;hex0 = HEXit( val0) ;
dujardin 0:84f30b3eb83b 52 }
dujardin 0:84f30b3eb83b 53
dujardin 0:84f30b3eb83b 54 void THextabDR( int nb ) // transfert tableau de 12bits DR
dujardin 0:84f30b3eb83b 55 {
dujardin 0:84f30b3eb83b 56 for (int pt = 0 ; pt < nb ; pt++)
dujardin 0:84f30b3eb83b 57 {
dujardin 0:84f30b3eb83b 58 int can = tabDR[pt] * 4; //passe a 4096
dujardin 0:84f30b3eb83b 59 INTtoHEX(can);
dujardin 0:84f30b3eb83b 60 pc.putc(hex2); pc.putc(hex1); pc.putc(hex0);
dujardin 0:84f30b3eb83b 61 pc.putc('H');
dujardin 0:84f30b3eb83b 62 }
dujardin 0:84f30b3eb83b 63 wait_ms(10);
dujardin 0:84f30b3eb83b 64 pc.putc('R'); //
dujardin 0:84f30b3eb83b 65 wait_ms(10);
dujardin 0:84f30b3eb83b 66 }
dujardin 0:84f30b3eb83b 67
dujardin 0:84f30b3eb83b 68 void THextabDS( int nb )// transfert en 12 bits DS
dujardin 0:84f30b3eb83b 69 {
dujardin 0:84f30b3eb83b 70 for (int pt = 0 ; pt < nb ; pt++)
dujardin 0:84f30b3eb83b 71 {
dujardin 0:84f30b3eb83b 72 int can = tabDS[pt] * 4 ; // passe à 4096
dujardin 0:84f30b3eb83b 73 INTtoHEX(can);
dujardin 0:84f30b3eb83b 74 pc.putc(hex2); pc.putc(hex1); pc.putc(hex0);
dujardin 0:84f30b3eb83b 75 pc.putc('I');
dujardin 0:84f30b3eb83b 76 }
dujardin 0:84f30b3eb83b 77 wait_ms(10);
dujardin 0:84f30b3eb83b 78 pc.putc('S'); //
dujardin 0:84f30b3eb83b 79 wait_ms(10);
dujardin 0:84f30b3eb83b 80 }
dujardin 0:84f30b3eb83b 81
dujardin 0:84f30b3eb83b 82 void THextabDT( int nb )// transfert en 12 bits DT
dujardin 0:84f30b3eb83b 83 {
dujardin 0:84f30b3eb83b 84 for (int pt = 0 ; pt < nb ; pt++)
dujardin 0:84f30b3eb83b 85 {
dujardin 0:84f30b3eb83b 86 int can = tabDT[pt] ;
dujardin 0:84f30b3eb83b 87 INTtoHEX(can);
dujardin 0:84f30b3eb83b 88 pc.putc(hex2); pc.putc(hex1); pc.putc(hex0);
dujardin 0:84f30b3eb83b 89 pc.putc('J');
dujardin 0:84f30b3eb83b 90 }
dujardin 0:84f30b3eb83b 91 wait_ms(10);
dujardin 0:84f30b3eb83b 92 pc.putc('T'); //
dujardin 0:84f30b3eb83b 93 wait_ms(10);
dujardin 0:84f30b3eb83b 94 }
dujardin 0:84f30b3eb83b 95
dujardin 0:84f30b3eb83b 96 void sendDK ( )// envoie DK en 16 bits hexa
dujardin 0:84f30b3eb83b 97 {
dujardin 0:84f30b3eb83b 98 INTtoHEX(DK);
dujardin 0:84f30b3eb83b 99 pc.putc(hex3); pc.putc(hex2); pc.putc(hex1); pc.putc(hex0);
dujardin 0:84f30b3eb83b 100 pc.putc('K');
dujardin 0:84f30b3eb83b 101 }
dujardin 0:84f30b3eb83b 102 void sendDL( )// envoie DL en 16 bits
dujardin 0:84f30b3eb83b 103 {
dujardin 0:84f30b3eb83b 104 INTtoHEX(DL);
dujardin 0:84f30b3eb83b 105 pc.putc(hex3); pc.putc(hex2); pc.putc(hex1); pc.putc(hex0);
dujardin 0:84f30b3eb83b 106 pc.putc('L');
dujardin 0:84f30b3eb83b 107 }
dujardin 0:84f30b3eb83b 108
dujardin 0:84f30b3eb83b 109 int readval12() // traduc en 12 bits des 3 hexa arrivés
dujardin 0:84f30b3eb83b 110 {int cal;
dujardin 0:84f30b3eb83b 111 cal = 256*rec[0]+ 16 *rec[1]+ rec[2];
dujardin 0:84f30b3eb83b 112 return cal; }
dujardin 0:84f30b3eb83b 113 int readval16() // traduc en 16 bits des 4 hexa arrivés
dujardin 0:84f30b3eb83b 114 {int cal;
dujardin 0:84f30b3eb83b 115 cal = 4096*rec[0]+ 256*rec[1]+ 16 *rec[2]+ rec[3];
dujardin 0:84f30b3eb83b 116 return cal; }
dujardin 0:84f30b3eb83b 117
dujardin 0:84f30b3eb83b 118 // COEUR du PROCESSUS DE RECEPTION
dujardin 0:84f30b3eb83b 119 void interrupt() // chaque carractère reçut ce programme est appelé
dujardin 0:84f30b3eb83b 120 { val = pc.getc(); // sauvegarder le dernier carractère arrivé
dujardin 0:84f30b3eb83b 121 // on a 100 µS pour faire la suite
dujardin 0:84f30b3eb83b 122 // detection ordres et actions prevues ( sans delai)
dujardin 0:84f30b3eb83b 123 if ( val == 'f' ) {led= !led; }
dujardin 0:84f30b3eb83b 124 if ( val == 'g' ) {flag = 1; } //*******test duj4
dujardin 0:84f30b3eb83b 125
dujardin 0:84f30b3eb83b 126 //if ( val == 'z') { ; }
dujardin 0:84f30b3eb83b 127 // reception de l'héxa et placement dans le tableau intermediaire rec[]
dujardin 0:84f30b3eb83b 128 if ( val == '0'){rec[point]=0 ; point++;} if(val=='1'){rec[point]=1;point++;}
dujardin 0:84f30b3eb83b 129 if ( val == '2'){rec[point]=2 ; point++;} if(val=='3'){rec[point]=3;point++;}
dujardin 0:84f30b3eb83b 130 if ( val == '4'){rec[point]=4 ; point++;} if(val=='5'){rec[point]=5;point++;}
dujardin 0:84f30b3eb83b 131 if ( val == '6'){rec[point]=6 ; point++;} if(val=='7'){rec[point]=7;point++;}
dujardin 0:84f30b3eb83b 132 if ( val == '8'){rec[point]=8 ; point++;} if(val=='9'){rec[point]=9;point++;}
dujardin 0:84f30b3eb83b 133 if ( val == 'A'){rec[point]=10; point++;} if(val=='B'){rec[point]=11;point++;}
dujardin 0:84f30b3eb83b 134 if ( val == 'C'){rec[point]=12; point++;} if(val=='D'){rec[point]=13;point++;}
dujardin 0:84f30b3eb83b 135 if ( val == 'E'){rec[point]=14; point++;} if(val=='F'){rec[point]=15;point++;}
dujardin 0:84f30b3eb83b 136 if ( point > 8 ) point = 8;
dujardin 0:84f30b3eb83b 137 // detection des transferts de datas ..
dujardin 0:84f30b3eb83b 138 if ( val == 'H') { tabAH[ou]= readval12(); point = 0 ; ou++;} //empilage tampon
dujardin 0:84f30b3eb83b 139 if ( val == 'I') { tabAI[ou]= readval12(); point = 0 ; ou++;} //empilage
dujardin 0:84f30b3eb83b 140 if ( val == 'J') { tabAJ[ou]= readval12(); point = 0 ; ou++;} //empilage
dujardin 0:84f30b3eb83b 141 if ( val == 'K') { AK= readval16(); point = 0 ; } // // AK
dujardin 0:84f30b3eb83b 142 if ( val == 'L') { AL= readval16(); point = 0 ; } //
dujardin 0:84f30b3eb83b 143 // ASCII libres //
dujardin 0:84f30b3eb83b 144 if ( val == 'R') { for(int i=0; i<100; i++)tabAR[i]=tabAH[i];ou=0;} // util
dujardin 0:84f30b3eb83b 145 if ( val == 'S') { for(int i=0; i<100; i++)tabAS[i]=tabAI[i];ou=0;} //
dujardin 0:84f30b3eb83b 146 if ( val == 'T') { for(int i=0; i<100; i++)tabAT[i]=tabAJ[i];ou=0;} // >AT
dujardin 0:84f30b3eb83b 147 // ASCII libres
dujardin 0:84f30b3eb83b 148
dujardin 0:84f30b3eb83b 149 }
dujardin 0:84f30b3eb83b 150