bien spi no se queda pegado

Dependencies:   mbed

Committer:
djinn77
Date:
Tue Sep 11 21:40:56 2018 +0000
Revision:
1:d99b6299bad8
Parent:
0:4b2603e81763
Child:
2:f9d289ee6b30
Se arreglo solo!!!!!!

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 0:4b2603e81763 5 Serial pc(USBTX,USBRX);
djinn77 0:4b2603e81763 6 SPI deviceM(PB_15, PB_14, PB_13);
djinn77 0:4b2603e81763 7 DigitalOut ssel (PB_12);
djinn77 0:4b2603e81763 8
djinn77 0:4b2603e81763 9 int matriz[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 1:d99b6299bad8 19
djinn77 0:4b2603e81763 20 void sendSPI(uint8_t d1, uint8_t d2)
djinn77 0:4b2603e81763 21 {
djinn77 0:4b2603e81763 22 deviceM.unlock();
djinn77 0:4b2603e81763 23 ssel=0;
djinn77 0:4b2603e81763 24 deviceM.write(d1);
djinn77 0:4b2603e81763 25 deviceM.write(d2);
djinn77 0:4b2603e81763 26 ssel=1;
djinn77 0:4b2603e81763 27 deviceM.lock();
djinn77 0:4b2603e81763 28 };
djinn77 1:d99b6299bad8 29
djinn77 1:d99b6299bad8 30
djinn77 1:d99b6299bad8 31 void captura_matriz(uint16_t* imprimir){
djinn77 1:d99b6299bad8 32
djinn77 1:d99b6299bad8 33
djinn77 1:d99b6299bad8 34 for(int i=0; i<11; i++){ // realiza el desplazamiento de los bits
djinn77 1:d99b6299bad8 35 for (int j= 1; j<=8;j++){ // seleciona la columna a imprimir empezando desde la 1
djinn77 1:d99b6299bad8 36 sendSPI(j, imprimir[j-1]>>i);
djinn77 1:d99b6299bad8 37 }
djinn77 1:d99b6299bad8 38 wait(1.5);
djinn77 1:d99b6299bad8 39 }
djinn77 0:4b2603e81763 40
djinn77 1:d99b6299bad8 41 }
djinn77 1:d99b6299bad8 42
djinn77 1:d99b6299bad8 43
djinn77 1:d99b6299bad8 44 void desplazar(uint16_t* datos, char des){
djinn77 1:d99b6299bad8 45
djinn77 1:d99b6299bad8 46 uint16_t desplazamiento[8]={0};
djinn77 1:d99b6299bad8 47 int j= 0;
djinn77 1:d99b6299bad8 48
djinn77 1:d99b6299bad8 49 for(int i=des; i<(des+3);i++){
djinn77 1:d99b6299bad8 50 desplazamiento[i]=datos[j];
djinn77 1:d99b6299bad8 51 j++;
djinn77 1:d99b6299bad8 52 }
djinn77 1:d99b6299bad8 53 captura_matriz(desplazamiento);
djinn77 1:d99b6299bad8 54
djinn77 1:d99b6299bad8 55
djinn77 1:d99b6299bad8 56 }
djinn77 1:d99b6299bad8 57
djinn77 1:d99b6299bad8 58 void read(){
djinn77 0:4b2603e81763 59
djinn77 0:4b2603e81763 60 pc.baud(38400);
djinn77 0:4b2603e81763 61 char pos= 0;
djinn77 0:4b2603e81763 62 char figura= 0;
djinn77 0:4b2603e81763 63 char giro= 0;
djinn77 0:4b2603e81763 64 debuging("\n Ingrese el posicion. ");
djinn77 0:4b2603e81763 65 pos=pc.getc();
djinn77 0:4b2603e81763 66 debuging("\n Seleccione la Figura. ");
djinn77 0:4b2603e81763 67 figura=pc.getc();
djinn77 0:4b2603e81763 68 debuging("\n Seleccione la rotacion. ");
djinn77 0:4b2603e81763 69 giro=pc.getc();
djinn77 0:4b2603e81763 70
djinn77 0:4b2603e81763 71
djinn77 0:4b2603e81763 72 switch(figura){
djinn77 1:d99b6299bad8 73 case 0: // L
djinn77 1:d99b6299bad8 74 switch(giro){
djinn77 1:d99b6299bad8 75 case 0:
djinn77 1:d99b6299bad8 76 desplazar(PZA_T,pos);
djinn77 1:d99b6299bad8 77 break;
djinn77 1:d99b6299bad8 78 case 1:
djinn77 1:d99b6299bad8 79 desplazar(PZA_TN,pos);
djinn77 1:d99b6299bad8 80
djinn77 1:d99b6299bad8 81 break;
djinn77 1:d99b6299bad8 82 case 2:
djinn77 1:d99b6299bad8 83 desplazar(PZA_TO,pos);
djinn77 1:d99b6299bad8 84
djinn77 1:d99b6299bad8 85 break;
djinn77 1:d99b6299bad8 86 case 3:
djinn77 1:d99b6299bad8 87 desplazar(PZA_TD, pos);
djinn77 1:d99b6299bad8 88
djinn77 1:d99b6299bad8 89 break;
djinn77 0:4b2603e81763 90 }
djinn77 0:4b2603e81763 91 break;
djinn77 1:d99b6299bad8 92 /*case 2:
djinn77 0:4b2603e81763 93 //T
djinn77 0:4b2603e81763 94 switch(giro){
djinn77 0:4b2603e81763 95 case 1:
djinn77 0:4b2603e81763 96 matriz[pos]= 0b10000000000;
djinn77 0:4b2603e81763 97 matriz[pos+1]=0b11000000000;
djinn77 0:4b2603e81763 98 matriz[pos+2]=0b10000000000;
djinn77 0:4b2603e81763 99 imprimir();
djinn77 0:4b2603e81763 100 break;
djinn77 0:4b2603e81763 101 case 2:
djinn77 0:4b2603e81763 102 matriz[pos]= 0b01000000000;
djinn77 0:4b2603e81763 103 matriz[pos+1]=0b11100000000;
djinn77 0:4b2603e81763 104 imprimir();
djinn77 0:4b2603e81763 105 break;
djinn77 0:4b2603e81763 106 case 3:
djinn77 0:4b2603e81763 107 matriz[pos]= 0b11100000000;
djinn77 0:4b2603e81763 108 matriz[pos+1]=0b01000000000;
djinn77 0:4b2603e81763 109 imprimir();
djinn77 0:4b2603e81763 110 break;
djinn77 0:4b2603e81763 111 case 4:
djinn77 0:4b2603e81763 112 matriz[pos]= 0b01000000000;
djinn77 0:4b2603e81763 113 matriz[pos+1]=0b11000000000;
djinn77 0:4b2603e81763 114 matriz[pos+2]=0b01000000000;
djinn77 0:4b2603e81763 115 imprimir();
djinn77 0:4b2603e81763 116 break;
djinn77 0:4b2603e81763 117 }
djinn77 0:4b2603e81763 118
djinn77 0:4b2603e81763 119 break;
djinn77 0:4b2603e81763 120 case 3:
djinn77 0:4b2603e81763 121 //L
djinn77 0:4b2603e81763 122 switch(giro){
djinn77 0:4b2603e81763 123 case 1:
djinn77 0:4b2603e81763 124 matriz[pos]= 0b11000000000;
djinn77 0:4b2603e81763 125 matriz[pos+1]=0b10000000000;
djinn77 0:4b2603e81763 126 matriz[pos+2]=0b10000000000;
djinn77 0:4b2603e81763 127 imprimir();
djinn77 0:4b2603e81763 128 break;
djinn77 0:4b2603e81763 129 case 2:
djinn77 0:4b2603e81763 130 matriz[pos]= 0b111000000000;
djinn77 0:4b2603e81763 131 matriz[pos+1]=0b001000000000;
djinn77 0:4b2603e81763 132 imprimir();
djinn77 0:4b2603e81763 133 break;
djinn77 0:4b2603e81763 134 case 3:
djinn77 0:4b2603e81763 135 matriz[pos]= 0b01000000000;
djinn77 0:4b2603e81763 136 matriz[pos+1]=0b01000000000;
djinn77 0:4b2603e81763 137 matriz[pos+2]=0b11000000000;
djinn77 0:4b2603e81763 138 imprimir();
djinn77 0:4b2603e81763 139 break;
djinn77 0:4b2603e81763 140 case 4:
djinn77 0:4b2603e81763 141 matriz[pos]= 0b10000000000;
djinn77 0:4b2603e81763 142 matriz[pos+1]=0b11100000000;
djinn77 0:4b2603e81763 143 imprimir();
djinn77 0:4b2603e81763 144 break;
djinn77 0:4b2603e81763 145 }
djinn77 0:4b2603e81763 146 break;
djinn77 0:4b2603e81763 147 case 4:
djinn77 0:4b2603e81763 148 //Z
djinn77 0:4b2603e81763 149 switch(giro){
djinn77 0:4b2603e81763 150 case 1: case 3:
djinn77 0:4b2603e81763 151 matriz[pos]= 0b01000000000;
djinn77 0:4b2603e81763 152 matriz[pos+1]=0b11000000000;
djinn77 0:4b2603e81763 153 matriz[pos+2]=0b10000000000;
djinn77 0:4b2603e81763 154 imprimir();
djinn77 0:4b2603e81763 155 break;
djinn77 0:4b2603e81763 156 case 2: case 4:
djinn77 0:4b2603e81763 157 matriz[pos]= 0b11000000000;
djinn77 0:4b2603e81763 158 matriz[pos+1]=0b01100000000;
djinn77 0:4b2603e81763 159 imprimir();
djinn77 0:4b2603e81763 160 break;
djinn77 0:4b2603e81763 161
djinn77 0:4b2603e81763 162 }
djinn77 0:4b2603e81763 163 break;
djinn77 0:4b2603e81763 164 case 5:
djinn77 0:4b2603e81763 165 switch(giro){
djinn77 0:4b2603e81763 166 case 1: case 3:
djinn77 0:4b2603e81763 167 matriz[pos]= 0b10000000000;
djinn77 0:4b2603e81763 168 matriz[pos+1]=0b10000000000;
djinn77 0:4b2603e81763 169 matriz[pos+2]=0b10000000000;
djinn77 0:4b2603e81763 170 imprimir();
djinn77 0:4b2603e81763 171 break;
djinn77 0:4b2603e81763 172 case 2: case 4:
djinn77 0:4b2603e81763 173 matriz[pos]= 0b11100000000;
djinn77 0:4b2603e81763 174 imprimir();
djinn77 0:4b2603e81763 175 break;
djinn77 0:4b2603e81763 176 }
djinn77 0:4b2603e81763 177
djinn77 0:4b2603e81763 178 break;
djinn77 0:4b2603e81763 179
djinn77 0:4b2603e81763 180
djinn77 0:4b2603e81763 181
djinn77 1:d99b6299bad8 182 */
djinn77 0:4b2603e81763 183
djinn77 0:4b2603e81763 184 }
djinn77 1:d99b6299bad8 185
djinn77 0:4b2603e81763 186 matriz[0]=0;
djinn77 0:4b2603e81763 187 matriz[1]=0;
djinn77 0:4b2603e81763 188 matriz[2]=0;
djinn77 0:4b2603e81763 189 matriz[3]=0;
djinn77 0:4b2603e81763 190 matriz[4]=0;
djinn77 0:4b2603e81763 191 matriz[5]=0;
djinn77 0:4b2603e81763 192 matriz[6]=0;
djinn77 0:4b2603e81763 193 matriz[7]=0;
djinn77 0:4b2603e81763 194
djinn77 0:4b2603e81763 195 }
djinn77 1:d99b6299bad8 196
djinn77 0:4b2603e81763 197 void inicializar(){
djinn77 0:4b2603e81763 198
djinn77 0:4b2603e81763 199 sendSPI(0x0c,1);
djinn77 0:4b2603e81763 200 sendSPI(0x0b,7);
djinn77 0:4b2603e81763 201 sendSPI(0x09,0);
djinn77 0:4b2603e81763 202 sendSPI(0x0A,0x0f);
djinn77 0:4b2603e81763 203 int i;
djinn77 0:4b2603e81763 204 for (i=0;i<2;i++){
djinn77 0:4b2603e81763 205 sendSPI(0x0F,1);
djinn77 0:4b2603e81763 206 wait (0.5);
djinn77 0:4b2603e81763 207 sendSPI(0x0f,0);
djinn77 0:4b2603e81763 208 wait (0.5);
djinn77 0:4b2603e81763 209 }
djinn77 0:4b2603e81763 210
djinn77 0:4b2603e81763 211 }
djinn77 0:4b2603e81763 212
djinn77 0:4b2603e81763 213
djinn77 0:4b2603e81763 214 int main() {
djinn77 0:4b2603e81763 215 inicializar();
djinn77 0:4b2603e81763 216 while(1){
djinn77 1:d99b6299bad8 217 read();
djinn77 0:4b2603e81763 218 }
djinn77 0:4b2603e81763 219
djinn77 0:4b2603e81763 220
djinn77 0:4b2603e81763 221
djinn77 0:4b2603e81763 222
djinn77 0:4b2603e81763 223 }