bien spi no se queda pegado

Dependencies:   mbed

Committer:
djinn77
Date:
Tue Sep 11 21:59:19 2018 +0000
Revision:
2:f9d289ee6b30
Parent:
1:d99b6299bad8
Child:
3:b77f80e91118
Todo hasta corriemiento y seleccion de columna

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 1:d99b6299bad8 40 }
djinn77 1:d99b6299bad8 41
djinn77 1:d99b6299bad8 42
djinn77 1:d99b6299bad8 43 void desplazar(uint16_t* datos, char des){
djinn77 1:d99b6299bad8 44
djinn77 1:d99b6299bad8 45 uint16_t desplazamiento[8]={0};
djinn77 1:d99b6299bad8 46 int j= 0;
djinn77 1:d99b6299bad8 47
djinn77 1:d99b6299bad8 48 for(int i=des; i<(des+3);i++){
djinn77 1:d99b6299bad8 49 desplazamiento[i]=datos[j];
djinn77 1:d99b6299bad8 50 j++;
djinn77 1:d99b6299bad8 51 }
djinn77 1:d99b6299bad8 52 captura_matriz(desplazamiento);
djinn77 1:d99b6299bad8 53 }
djinn77 1:d99b6299bad8 54
djinn77 1:d99b6299bad8 55 void read(){
djinn77 0:4b2603e81763 56
djinn77 0:4b2603e81763 57 pc.baud(38400);
djinn77 0:4b2603e81763 58 char pos= 0;
djinn77 0:4b2603e81763 59 char figura= 0;
djinn77 0:4b2603e81763 60 char giro= 0;
djinn77 0:4b2603e81763 61 debuging("\n Ingrese el posicion. ");
djinn77 0:4b2603e81763 62 pos=pc.getc();
djinn77 0:4b2603e81763 63 debuging("\n Seleccione la Figura. ");
djinn77 0:4b2603e81763 64 figura=pc.getc();
djinn77 0:4b2603e81763 65 debuging("\n Seleccione la rotacion. ");
djinn77 0:4b2603e81763 66 giro=pc.getc();
djinn77 0:4b2603e81763 67
djinn77 0:4b2603e81763 68
djinn77 0:4b2603e81763 69 switch(figura){
djinn77 1:d99b6299bad8 70 case 0: // L
djinn77 1:d99b6299bad8 71 switch(giro){
djinn77 1:d99b6299bad8 72 case 0:
djinn77 2:f9d289ee6b30 73 desplazar(PZA_LD,pos);
djinn77 1:d99b6299bad8 74 break;
djinn77 1:d99b6299bad8 75 case 1:
djinn77 2:f9d289ee6b30 76 desplazar(PZA_LDN,pos);
djinn77 1:d99b6299bad8 77
djinn77 1:d99b6299bad8 78 break;
djinn77 1:d99b6299bad8 79 case 2:
djinn77 2:f9d289ee6b30 80 desplazar(PZA_LDO,pos);
djinn77 1:d99b6299bad8 81
djinn77 1:d99b6299bad8 82 break;
djinn77 1:d99b6299bad8 83 case 3:
djinn77 2:f9d289ee6b30 84 desplazar(PZA_LDD, pos);
djinn77 1:d99b6299bad8 85
djinn77 1:d99b6299bad8 86 break;
djinn77 0:4b2603e81763 87 }
djinn77 0:4b2603e81763 88 break;
djinn77 2:f9d289ee6b30 89 case 1://T
djinn77 2:f9d289ee6b30 90 switch(giro){
djinn77 2:f9d289ee6b30 91 case 0:
djinn77 2:f9d289ee6b30 92 desplazar(PZA_T, pos);
djinn77 2:f9d289ee6b30 93 break;
djinn77 2:f9d289ee6b30 94 case 1:
djinn77 2:f9d289ee6b30 95 desplazar(PZA_TN, pos);
djinn77 2:f9d289ee6b30 96 break;
djinn77 2:f9d289ee6b30 97 case 2:
djinn77 2:f9d289ee6b30 98 desplazar(PZA_TO, pos);
djinn77 2:f9d289ee6b30 99 break;
djinn77 2:f9d289ee6b30 100 case 3:
djinn77 2:f9d289ee6b30 101 desplazar(PZA_TD, pos);
djinn77 2:f9d289ee6b30 102 break;
djinn77 0:4b2603e81763 103 }
djinn77 0:4b2603e81763 104
djinn77 0:4b2603e81763 105 break;
djinn77 2:f9d289ee6b30 106 case 2://I
djinn77 2:f9d289ee6b30 107 switch(giro){
djinn77 2:f9d289ee6b30 108 case 0: case 2:
djinn77 2:f9d289ee6b30 109 desplazar(PZA_I, pos);
djinn77 2:f9d289ee6b30 110 break;
djinn77 2:f9d289ee6b30 111 case 1: case 3:
djinn77 2:f9d289ee6b30 112 desplazar(PZA_IR, pos);
djinn77 2:f9d289ee6b30 113 break;
djinn77 0:4b2603e81763 114 }
djinn77 0:4b2603e81763 115 break;
djinn77 2:f9d289ee6b30 116 case 3://Cuadrado
djinn77 2:f9d289ee6b30 117 switch(giro){
djinn77 2:f9d289ee6b30 118 case 1: case 2: case 3: case 4:
djinn77 2:f9d289ee6b30 119 desplazar(PZA_C,pos);
djinn77 2:f9d289ee6b30 120 break;
djinn77 0:4b2603e81763 121 }
djinn77 2:f9d289ee6b30 122 break;
djinn77 2:f9d289ee6b30 123 case 5: //Z
djinn77 2:f9d289ee6b30 124 switch(giro){
djinn77 2:f9d289ee6b30 125 case 0:
djinn77 2:f9d289ee6b30 126 desplazar(PZA_Z,pos);
djinn77 2:f9d289ee6b30 127 break;
djinn77 2:f9d289ee6b30 128 case 1:
djinn77 2:f9d289ee6b30 129 desplazar(PZA_ZN,pos);
djinn77 2:f9d289ee6b30 130 break;
djinn77 2:f9d289ee6b30 131 case 2:
djinn77 2:f9d289ee6b30 132 desplazar(PZA_ZO,pos);
djinn77 2:f9d289ee6b30 133 break;
djinn77 2:f9d289ee6b30 134 case 3:
djinn77 2:f9d289ee6b30 135 desplazar(PZA_ZD, pos);
djinn77 2:f9d289ee6b30 136 break;
djinn77 2:f9d289ee6b30 137 }
djinn77 0:4b2603e81763 138
djinn77 0:4b2603e81763 139 break;
djinn77 2:f9d289ee6b30 140
djinn77 0:4b2603e81763 141 }
djinn77 0:4b2603e81763 142 }
djinn77 1:d99b6299bad8 143
djinn77 0:4b2603e81763 144 void inicializar(){
djinn77 0:4b2603e81763 145
djinn77 0:4b2603e81763 146 sendSPI(0x0c,1);
djinn77 0:4b2603e81763 147 sendSPI(0x0b,7);
djinn77 0:4b2603e81763 148 sendSPI(0x09,0);
djinn77 0:4b2603e81763 149 sendSPI(0x0A,0x0f);
djinn77 0:4b2603e81763 150 int i;
djinn77 0:4b2603e81763 151 for (i=0;i<2;i++){
djinn77 0:4b2603e81763 152 sendSPI(0x0F,1);
djinn77 0:4b2603e81763 153 wait (0.5);
djinn77 0:4b2603e81763 154 sendSPI(0x0f,0);
djinn77 0:4b2603e81763 155 wait (0.5);
djinn77 0:4b2603e81763 156 }
djinn77 0:4b2603e81763 157
djinn77 0:4b2603e81763 158 }
djinn77 0:4b2603e81763 159
djinn77 0:4b2603e81763 160
djinn77 0:4b2603e81763 161 int main() {
djinn77 0:4b2603e81763 162 inicializar();
djinn77 0:4b2603e81763 163 while(1){
djinn77 1:d99b6299bad8 164 read();
djinn77 0:4b2603e81763 165 }
djinn77 0:4b2603e81763 166
djinn77 0:4b2603e81763 167
djinn77 0:4b2603e81763 168
djinn77 0:4b2603e81763 169
djinn77 0:4b2603e81763 170 }