bien spi no se queda pegado

Dependencies:   mbed

Committer:
djinn77
Date:
Thu Sep 13 04:54:06 2018 +0000
Revision:
9:0cf4c5f7a1d8
Parent:
8:e5a5b39dd8e8
Continua el problema con el error al choque

Who changed what in which revision?

UserRevisionLine numberNew contents of line
djinn77 0:4b2603e81763 1 #include "mbed.h"
djinn77 1:d99b6299bad8 2 #include "piezas.h"
djinn77 1:d99b6299bad8 3 //#define DEBUG 1
djinn77 0:4b2603e81763 4
djinn77 7:5677ded8ff2a 5 Serial pc(USBTX,USBRX);
djinn77 7:5677ded8ff2a 6 SPI deviceM(PB_15, PB_14, PB_13); //SE DEFINE EL LED QUE ACTIVARA EL DISPOSITIVO
djinn77 0:4b2603e81763 7 DigitalOut ssel (PB_12);
djinn77 0:4b2603e81763 8
djinn77 3:b77f80e91118 9 int memoria[8]={0};
djinn77 0:4b2603e81763 10
djinn77 0:4b2603e81763 11 void debuging(char*s,...){
djinn77 0:4b2603e81763 12
djinn77 0:4b2603e81763 13 #if DEBUG
djinn77 0:4b2603e81763 14 pc.printf(s);
djinn77 0:4b2603e81763 15 #endif
djinn77 0:4b2603e81763 16
djinn77 0:4b2603e81763 17 }
djinn77 0:4b2603e81763 18
djinn77 7:5677ded8ff2a 19 // FUNCION EL CUAL ENVIA EL DATO JUNTO CON LA DIRECCION DE LA COLUMNA CORRESPONDIENTE AL PRIMER DISPOSITIVO
djinn77 0:4b2603e81763 20 void sendSPI(uint8_t d1, uint8_t d2)
djinn77 0:4b2603e81763 21 {
djinn77 0:4b2603e81763 22 deviceM.unlock();
djinn77 7:5677ded8ff2a 23 ssel=0; // SELECCIONA EL PRIMER DISPOSOTIVO
djinn77 7:5677ded8ff2a 24 deviceM.write(d1); // ESCRIBE EL ADDRESS
djinn77 7:5677ded8ff2a 25 deviceM.write(d2); // ESCRIBE EL DATA
djinn77 0:4b2603e81763 26 ssel=1;
djinn77 0:4b2603e81763 27 deviceM.lock();
djinn77 0:4b2603e81763 28 };
djinn77 1:d99b6299bad8 29
djinn77 7:5677ded8ff2a 30 // Toma el vecor reorganizado , lo imprime y lo almacena
djinn77 1:d99b6299bad8 31 void captura_matriz(uint16_t* imprimir){
djinn77 7:5677ded8ff2a 32 int i=0; // inicia el contador i en 0
djinn77 6:c80ec2cdfb9e 33
djinn77 7:5677ded8ff2a 34 while(i <8){ //se encarga de desplazar los bits dentro del vector
djinn77 7:5677ded8ff2a 35 int j=1; // inicia el contador j en 1
djinn77 7:5677ded8ff2a 36
djinn77 7:5677ded8ff2a 37 while(j<=8){ //se encarga de seleccionar que posicion del vector imprimira
djinn77 7:5677ded8ff2a 38
djinn77 7:5677ded8ff2a 39 sendSPI(j, memoria[j-1]|(imprimir[j-1]>>i)); //Imprime el resultado de aplicar OR a la memoria y al desplamamiento de imprimir
djinn77 5:106def451c41 40
djinn77 9:0cf4c5f7a1d8 41 if((memoria[j-1]&(imprimir[j-1]>>i+1))!=0){
djinn77 9:0cf4c5f7a1d8 42 memoria[j-1]= memoria[j-1]|(imprimir[j-1]>>i);
djinn77 9:0cf4c5f7a1d8 43 break;
djinn77 9:0cf4c5f7a1d8 44 }
djinn77 9:0cf4c5f7a1d8 45
djinn77 9:0cf4c5f7a1d8 46 if(i==7){ //Detiene el desplazamiento cuando los bits tocan fondo //AQUI esta el error
djinn77 6:c80ec2cdfb9e 47
djinn77 8:e5a5b39dd8e8 48 memoria[j-1]= memoria[j-1]|(imprimir[j-1]>>i); //Almacena el nuevo valor de la operacion OR en la memoria
djinn77 6:c80ec2cdfb9e 49
djinn77 6:c80ec2cdfb9e 50 }
djinn77 6:c80ec2cdfb9e 51 j++;
djinn77 6:c80ec2cdfb9e 52 }
djinn77 7:5677ded8ff2a 53 wait(1.0); // espera para tomar el otro valor de lectura
djinn77 4:1d1a3b0021d5 54 i++;
djinn77 4:1d1a3b0021d5 55 }
djinn77 7:5677ded8ff2a 56
djinn77 1:d99b6299bad8 57 }
djinn77 1:d99b6299bad8 58
djinn77 1:d99b6299bad8 59
djinn77 7:5677ded8ff2a 60 void desplazar(uint16_t* datos, char des){ // tomar la figura y la desplaza segun la posicion ingresada inicialmente
djinn77 1:d99b6299bad8 61
djinn77 7:5677ded8ff2a 62 uint16_t desplazamiento[8]={0}; // Inicia un vector auxiliar con solo Ceros
djinn77 1:d99b6299bad8 63 int j= 0;
djinn77 1:d99b6299bad8 64
djinn77 7:5677ded8ff2a 65 for(int i=des; i<(des+3);i++){ // Inicia un vector auxiliar con solo Ceros
djinn77 7:5677ded8ff2a 66 desplazamiento[i]=datos[j]; // Alamcena los nuevos datos tomados en el vector
djinn77 1:d99b6299bad8 67 j++;
djinn77 1:d99b6299bad8 68 }
djinn77 7:5677ded8ff2a 69 captura_matriz(desplazamiento); //Envia el Vector desplazado la funcion de captura de matriz
djinn77 1:d99b6299bad8 70 }
djinn77 1:d99b6299bad8 71
djinn77 1:d99b6299bad8 72 void read(){
djinn77 0:4b2603e81763 73
djinn77 7:5677ded8ff2a 74 pc.baud(38400); //Inicializa la velocidad de comunicacion
djinn77 3:b77f80e91118 75
djinn77 0:4b2603e81763 76 char pos= 0;
djinn77 0:4b2603e81763 77 char figura= 0;
djinn77 0:4b2603e81763 78 char giro= 0;
djinn77 7:5677ded8ff2a 79
djinn77 0:4b2603e81763 80 debuging("\n Ingrese el posicion. ");
djinn77 0:4b2603e81763 81 pos=pc.getc();
djinn77 0:4b2603e81763 82 debuging("\n Seleccione la Figura. ");
djinn77 0:4b2603e81763 83 figura=pc.getc();
djinn77 0:4b2603e81763 84 debuging("\n Seleccione la rotacion. ");
djinn77 0:4b2603e81763 85 giro=pc.getc();
djinn77 0:4b2603e81763 86
djinn77 0:4b2603e81763 87
djinn77 7:5677ded8ff2a 88 switch(figura){ //Este switch escoje la figura con que trabajaar
djinn77 1:d99b6299bad8 89 case 0: // L
djinn77 7:5677ded8ff2a 90 switch(giro){ //Este switch rota la figura a trabajar
djinn77 1:d99b6299bad8 91 case 0:
djinn77 7:5677ded8ff2a 92 desplazar(PZA_LD,pos); //LLAMA A LA FUNCION DESPLAZAMIENTO Y PONE LA POSICION
djinn77 1:d99b6299bad8 93 case 1:
djinn77 2:f9d289ee6b30 94 desplazar(PZA_LDN,pos);
djinn77 1:d99b6299bad8 95
djinn77 1:d99b6299bad8 96 break;
djinn77 1:d99b6299bad8 97 case 2:
djinn77 2:f9d289ee6b30 98 desplazar(PZA_LDO,pos);
djinn77 1:d99b6299bad8 99
djinn77 1:d99b6299bad8 100 break;
djinn77 1:d99b6299bad8 101 case 3:
djinn77 2:f9d289ee6b30 102 desplazar(PZA_LDD, pos);
djinn77 1:d99b6299bad8 103
djinn77 1:d99b6299bad8 104 break;
djinn77 0:4b2603e81763 105 }
djinn77 0:4b2603e81763 106 break;
djinn77 2:f9d289ee6b30 107 case 1://T
djinn77 2:f9d289ee6b30 108 switch(giro){
djinn77 2:f9d289ee6b30 109 case 0:
djinn77 2:f9d289ee6b30 110 desplazar(PZA_T, pos);
djinn77 2:f9d289ee6b30 111 break;
djinn77 2:f9d289ee6b30 112 case 1:
djinn77 2:f9d289ee6b30 113 desplazar(PZA_TN, pos);
djinn77 2:f9d289ee6b30 114 break;
djinn77 2:f9d289ee6b30 115 case 2:
djinn77 2:f9d289ee6b30 116 desplazar(PZA_TO, pos);
djinn77 2:f9d289ee6b30 117 break;
djinn77 2:f9d289ee6b30 118 case 3:
djinn77 2:f9d289ee6b30 119 desplazar(PZA_TD, pos);
djinn77 2:f9d289ee6b30 120 break;
djinn77 0:4b2603e81763 121 }
djinn77 0:4b2603e81763 122
djinn77 0:4b2603e81763 123 break;
djinn77 2:f9d289ee6b30 124 case 2://I
djinn77 2:f9d289ee6b30 125 switch(giro){
djinn77 2:f9d289ee6b30 126 case 0: case 2:
djinn77 2:f9d289ee6b30 127 desplazar(PZA_I, pos);
djinn77 2:f9d289ee6b30 128 break;
djinn77 2:f9d289ee6b30 129 case 1: case 3:
djinn77 2:f9d289ee6b30 130 desplazar(PZA_IR, pos);
djinn77 2:f9d289ee6b30 131 break;
djinn77 0:4b2603e81763 132 }
djinn77 0:4b2603e81763 133 break;
djinn77 2:f9d289ee6b30 134 case 3://Cuadrado
djinn77 2:f9d289ee6b30 135 switch(giro){
djinn77 2:f9d289ee6b30 136 case 1: case 2: case 3: case 4:
djinn77 2:f9d289ee6b30 137 desplazar(PZA_C,pos);
djinn77 2:f9d289ee6b30 138 break;
djinn77 0:4b2603e81763 139 }
djinn77 2:f9d289ee6b30 140 break;
djinn77 2:f9d289ee6b30 141 case 5: //Z
djinn77 2:f9d289ee6b30 142 switch(giro){
djinn77 2:f9d289ee6b30 143 case 0:
djinn77 2:f9d289ee6b30 144 desplazar(PZA_Z,pos);
djinn77 2:f9d289ee6b30 145 break;
djinn77 2:f9d289ee6b30 146 case 1:
djinn77 2:f9d289ee6b30 147 desplazar(PZA_ZN,pos);
djinn77 2:f9d289ee6b30 148 break;
djinn77 2:f9d289ee6b30 149 case 2:
djinn77 2:f9d289ee6b30 150 desplazar(PZA_ZO,pos);
djinn77 2:f9d289ee6b30 151 break;
djinn77 2:f9d289ee6b30 152 case 3:
djinn77 2:f9d289ee6b30 153 desplazar(PZA_ZD, pos);
djinn77 2:f9d289ee6b30 154 break;
djinn77 2:f9d289ee6b30 155 }
djinn77 0:4b2603e81763 156
djinn77 0:4b2603e81763 157 break;
djinn77 2:f9d289ee6b30 158
djinn77 0:4b2603e81763 159 }
djinn77 0:4b2603e81763 160 }
djinn77 1:d99b6299bad8 161
djinn77 7:5677ded8ff2a 162 void inicializar(){ //INICIALIZA LA MATRIZ
djinn77 0:4b2603e81763 163
djinn77 7:5677ded8ff2a 164 sendSPI(0x0c,1);
djinn77 0:4b2603e81763 165 sendSPI(0x0b,7);
djinn77 7:5677ded8ff2a 166 sendSPI(0x09,0); //SELECCIONA LA LUMINOSIDAD DE LA MATRIZ
djinn77 7:5677ded8ff2a 167 sendSPI(0x0A,0x0f); //SELECCIONA LA LUMINOSIDAD DE LA MATRIZ
djinn77 0:4b2603e81763 168 int i;
djinn77 0:4b2603e81763 169 for (i=0;i<2;i++){
djinn77 0:4b2603e81763 170 sendSPI(0x0F,1);
djinn77 0:4b2603e81763 171 wait (0.5);
djinn77 0:4b2603e81763 172 sendSPI(0x0f,0);
djinn77 0:4b2603e81763 173 wait (0.5);
djinn77 0:4b2603e81763 174 }
djinn77 0:4b2603e81763 175
djinn77 5:106def451c41 176 for (int j= 1; j<=8;j++){ // limpia la pantalla al encenderce o reiniarcea asi
djinn77 5:106def451c41 177 //no quedan leds encendidos cuando se ejecute el programa nuevamente
djinn77 5:106def451c41 178
djinn77 7:5677ded8ff2a 179 sendSPI(j, 0x00); //pone cada columna y vecto en blanco al inicializar
djinn77 5:106def451c41 180 }
djinn77 0:4b2603e81763 181 }
djinn77 0:4b2603e81763 182
djinn77 0:4b2603e81763 183
djinn77 0:4b2603e81763 184 int main() {
djinn77 7:5677ded8ff2a 185 inicializar(); // Inicializa el programa para establecer los modos de trabajo liminosidad
djinn77 0:4b2603e81763 186 while(1){
djinn77 7:5677ded8ff2a 187 read(); // Inicia la lectura de la informacion
djinn77 0:4b2603e81763 188 }
djinn77 7:5677ded8ff2a 189
djinn77 0:4b2603e81763 190 }