bien spi no se queda pegado

Dependencies:   mbed

tets_pc.cpp

Committer:
djinn77
Date:
2018-09-11
Revision:
1:d99b6299bad8
Parent:
0:4b2603e81763
Child:
2:f9d289ee6b30

File content as of revision 1:d99b6299bad8:

#include "mbed.h"
#include "piezas.h"
//#define DEBUG 1

Serial pc(USBTX,USBRX);   
SPI deviceM(PB_15, PB_14, PB_13);
DigitalOut ssel (PB_12);

int matriz[8]={0};

void debuging(char*s,...){
    
    #if DEBUG
    pc.printf(s);
    #endif
    
    }


void sendSPI(uint8_t d1, uint8_t d2)
{
    deviceM.unlock();
    ssel=0;
    deviceM.write(d1); 
    deviceM.write(d2);  
    ssel=1;
    deviceM.lock();
};


void captura_matriz(uint16_t* imprimir){
 
 
 for(int i=0; i<11; i++){       // realiza el desplazamiento de los bits
     for (int j= 1; j<=8;j++){  // seleciona la columna a imprimir empezando desde la 1
          sendSPI(j, imprimir[j-1]>>i);
                            }    
     wait(1.5);
                         }
  
  }
 
 
 void desplazar(uint16_t* datos, char des){
    
  uint16_t desplazamiento[8]={0};
  int j= 0;
  
       for(int i=des; i<(des+3);i++){
           desplazamiento[i]=datos[j];
           j++;                    
                          }
       captura_matriz(desplazamiento);


  }
  
 void read(){
     
         pc.baud(38400);
         char pos= 0;
         char figura= 0;
         char giro= 0;
         debuging("\n Ingrese el posicion. ");
         pos=pc.getc();
         debuging("\n Seleccione la Figura. ");
         figura=pc.getc();
         debuging("\n Seleccione la rotacion. ");
         giro=pc.getc();
         
         
         switch(figura){
             case 0: // L
                   switch(giro){
                         case 0:
                         desplazar(PZA_T,pos);
                         break;
                         case 1:
                         desplazar(PZA_TN,pos);

                         break;
                         case 2:
                         desplazar(PZA_TO,pos);

                         break;
                         case 3:
                         desplazar(PZA_TD, pos);

                         break;
             }
             break;
             /*case 2:
             //T
             switch(giro){
                 case 1:
                 matriz[pos]=  0b10000000000;
                 matriz[pos+1]=0b11000000000;
                 matriz[pos+2]=0b10000000000;
                 imprimir();
                 break;
                 case 2:
                 matriz[pos]=  0b01000000000;
                 matriz[pos+1]=0b11100000000;
                 imprimir();
                 break;
                 case 3:
                 matriz[pos]=  0b11100000000;
                 matriz[pos+1]=0b01000000000;
                 imprimir();
                 break;
                 case 4:
                 matriz[pos]=  0b01000000000;
                 matriz[pos+1]=0b11000000000;
                 matriz[pos+2]=0b01000000000;
                 imprimir();
                 break;
                 }
        
             break;
             case 3:
             //L
             switch(giro){
                 case 1:
                 matriz[pos]=  0b11000000000;
                 matriz[pos+1]=0b10000000000;
                 matriz[pos+2]=0b10000000000;
                 imprimir();
                 break;
                 case 2:
                 matriz[pos]=  0b111000000000;
                 matriz[pos+1]=0b001000000000;
                 imprimir();
                 break;
                 case 3:
                 matriz[pos]=  0b01000000000;
                 matriz[pos+1]=0b01000000000;
                 matriz[pos+2]=0b11000000000;
                 imprimir();
                 break;
                 case 4:
                 matriz[pos]=  0b10000000000;
                 matriz[pos+1]=0b11100000000;
                 imprimir();
                 break;
                 }
             break;
             case 4:
             //Z
             switch(giro){
                 case 1: case 3:
                 matriz[pos]=  0b01000000000;
                 matriz[pos+1]=0b11000000000;
                 matriz[pos+2]=0b10000000000;
                 imprimir();
                 break;
                 case 2: case 4:
                 matriz[pos]=  0b11000000000;
                 matriz[pos+1]=0b01100000000;
                 imprimir();
                 break;
    
                 }
             break;
             case 5:
             switch(giro){
                 case 1: case 3:
                 matriz[pos]=  0b10000000000;
                 matriz[pos+1]=0b10000000000;
                 matriz[pos+2]=0b10000000000;
                 imprimir();
                 break;
                 case 2: case 4:
                 matriz[pos]=  0b11100000000;
                 imprimir();
                 break;
                 }
             
             break;
             
             
             
             */
             
             }
             
        matriz[0]=0;
        matriz[1]=0;
        matriz[2]=0;
        matriz[3]=0;
        matriz[4]=0;
        matriz[5]=0;
        matriz[6]=0;
        matriz[7]=0;
     
     }
     
void inicializar(){
    
    sendSPI(0x0c,1);
    sendSPI(0x0b,7);
    sendSPI(0x09,0);
    sendSPI(0x0A,0x0f);
    int i;
    for (i=0;i<2;i++){
        sendSPI(0x0F,1);
        wait (0.5);
        sendSPI(0x0f,0);
        wait (0.5);
    }
    
    }

 
int main() {
    inicializar();
    while(1){
            read();
            }
        
       
        
     
}