matriz

Dependencies:   mbed

Committer:
Esbp10
Date:
Thu Sep 13 03:50:54 2018 +0000
Revision:
0:d6fe56fdc91c
matriz;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Esbp10 0:d6fe56fdc91c 1 SPI deviceM(PB_15, PB_14, PB_13);
Esbp10 0:d6fe56fdc91c 2 DigitalOut ssel (PB_12);
Esbp10 0:d6fe56fdc91c 3 float Vel=0.8;
Esbp10 0:d6fe56fdc91c 4
Esbp10 0:d6fe56fdc91c 5 void sendSPI(uint8_t d1, uint8_t d2)
Esbp10 0:d6fe56fdc91c 6 {
Esbp10 0:d6fe56fdc91c 7 deviceM.unlock();
Esbp10 0:d6fe56fdc91c 8 ssel=0;
Esbp10 0:d6fe56fdc91c 9 deviceM.write(d1);
Esbp10 0:d6fe56fdc91c 10 deviceM.write(d2);
Esbp10 0:d6fe56fdc91c 11 ssel=1;
Esbp10 0:d6fe56fdc91c 12 deviceM.lock();
Esbp10 0:d6fe56fdc91c 13 }
Esbp10 0:d6fe56fdc91c 14
Esbp10 0:d6fe56fdc91c 15 void printMatrix(uint8_t* vC, uint8_t col)
Esbp10 0:d6fe56fdc91c 16 {
Esbp10 0:d6fe56fdc91c 17 int i;
Esbp10 0:d6fe56fdc91c 18 int j=1;
Esbp10 0:d6fe56fdc91c 19 int h=1;
Esbp10 0:d6fe56fdc91c 20 for(i=1;i<=8;i++){
Esbp10 0:d6fe56fdc91c 21 if(*(vC+1)==0b00000000 && *(vC)==0b00000000){
Esbp10 0:d6fe56fdc91c 22 sendSPI(i,*(vC+2)>>col-1);
Esbp10 0:d6fe56fdc91c 23 if(i>0){
Esbp10 0:d6fe56fdc91c 24 sendSPI(i-1,0);
Esbp10 0:d6fe56fdc91c 25 }
Esbp10 0:d6fe56fdc91c 26 wait(Vel);
Esbp10 0:d6fe56fdc91c 27 }
Esbp10 0:d6fe56fdc91c 28 else
Esbp10 0:d6fe56fdc91c 29 {
Esbp10 0:d6fe56fdc91c 30 if(i>1){
Esbp10 0:d6fe56fdc91c 31 j=i-2;
Esbp10 0:d6fe56fdc91c 32 h=i-3;
Esbp10 0:d6fe56fdc91c 33 if(*(vC)==0b00000000){
Esbp10 0:d6fe56fdc91c 34 j=i-1;
Esbp10 0:d6fe56fdc91c 35 h=i;
Esbp10 0:d6fe56fdc91c 36 }
Esbp10 0:d6fe56fdc91c 37 sendSPI(i,*(vC)>>col-1);
Esbp10 0:d6fe56fdc91c 38 sendSPI(j,*(vC+1)>>col-1);
Esbp10 0:d6fe56fdc91c 39 sendSPI(h,*(vC+2)>>col-1);
Esbp10 0:d6fe56fdc91c 40 if(i>2){
Esbp10 0:d6fe56fdc91c 41 sendSPI(i-3,0);
Esbp10 0:d6fe56fdc91c 42 }
Esbp10 0:d6fe56fdc91c 43 wait(Vel);
Esbp10 0:d6fe56fdc91c 44 }
Esbp10 0:d6fe56fdc91c 45 }
Esbp10 0:d6fe56fdc91c 46 }
Esbp10 0:d6fe56fdc91c 47 }
Esbp10 0:d6fe56fdc91c 48
Esbp10 0:d6fe56fdc91c 49 void giro(uint8_t *f,uint8_t col,uint8_t gi)
Esbp10 0:d6fe56fdc91c 50 {
Esbp10 0:d6fe56fdc91c 51 uint8_t a[3]={0,0,0};
Esbp10 0:d6fe56fdc91c 52 int i;
Esbp10 0:d6fe56fdc91c 53 int j;
Esbp10 0:d6fe56fdc91c 54 switch(gi){
Esbp10 0:d6fe56fdc91c 55 case 0:
Esbp10 0:d6fe56fdc91c 56 printMatrix(f,col);
Esbp10 0:d6fe56fdc91c 57 break;
Esbp10 0:d6fe56fdc91c 58 case 1:
Esbp10 0:d6fe56fdc91c 59 for(j=0;j<3;j++){
Esbp10 0:d6fe56fdc91c 60 for(i=0;i<3;i++){
Esbp10 0:d6fe56fdc91c 61 a[i]=((((*(f+j))<<2-i)&0b10000000)>>j)+a[i];
Esbp10 0:d6fe56fdc91c 62 }
Esbp10 0:d6fe56fdc91c 63 }
Esbp10 0:d6fe56fdc91c 64 printMatrix(a,col);
Esbp10 0:d6fe56fdc91c 65 break;
Esbp10 0:d6fe56fdc91c 66 case 2:
Esbp10 0:d6fe56fdc91c 67 for(j=0;j<3;j++){
Esbp10 0:d6fe56fdc91c 68 for(i=0;i<3;i++){
Esbp10 0:d6fe56fdc91c 69 a[i]=((((*(f+(2-i)))>>2-j)&0b00100000)<<j)+a[i];
Esbp10 0:d6fe56fdc91c 70 }
Esbp10 0:d6fe56fdc91c 71 }
Esbp10 0:d6fe56fdc91c 72 printMatrix(a,col);
Esbp10 0:d6fe56fdc91c 73 break;
Esbp10 0:d6fe56fdc91c 74 case 3:
Esbp10 0:d6fe56fdc91c 75 for(j=0;j<3;j++){
Esbp10 0:d6fe56fdc91c 76 for(i=0;i<3;i++){
Esbp10 0:d6fe56fdc91c 77 a[i]=((((*(f+j))>>2-i)&(0b00100000))<<j)+a[i];
Esbp10 0:d6fe56fdc91c 78 }
Esbp10 0:d6fe56fdc91c 79 }
Esbp10 0:d6fe56fdc91c 80 printMatrix(a,col);
Esbp10 0:d6fe56fdc91c 81 break;
Esbp10 0:d6fe56fdc91c 82 default:
Esbp10 0:d6fe56fdc91c 83 break;
Esbp10 0:d6fe56fdc91c 84 }
Esbp10 0:d6fe56fdc91c 85 }