bien spi no se queda pegado

Dependencies:   mbed

Committer:
djinn77
Date:
Wed Sep 12 07:50:38 2018 +0000
Revision:
5:106def451c41
Parent:
4:1d1a3b0021d5
Child:
6:c80ec2cdfb9e
Peque?o problema

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 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 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 4:1d1a3b0021d5 32 int i=0;
djinn77 5:106def451c41 33 int bl=0;
djinn77 5:106def451c41 34 while(i <8 ){
djinn77 5:106def451c41 35
djinn77 4:1d1a3b0021d5 36 for (int j= 1; j<=8;j++){ // seleciona la columna a imprimir empezando desde la 1
djinn77 5:106def451c41 37
djinn77 5:106def451c41 38 bl= memoria[j-1] & (imprimir[j-1]>>i+1);
djinn77 5:106def451c41 39
djinn77 5:106def451c41 40 if(i==7 || bl!=0){
djinn77 4:1d1a3b0021d5 41 memoria[j-1]= memoria[j-1]|(imprimir[j-1]>>i);
djinn77 4:1d1a3b0021d5 42 }
djinn77 5:106def451c41 43
djinn77 5:106def451c41 44 sendSPI(j, memoria[j-1]|(imprimir[j-1]>>i));
djinn77 5:106def451c41 45
djinn77 4:1d1a3b0021d5 46 }
djinn77 5:106def451c41 47 wait(1.0);
djinn77 4:1d1a3b0021d5 48 i++;
djinn77 4:1d1a3b0021d5 49
djinn77 4:1d1a3b0021d5 50
djinn77 4:1d1a3b0021d5 51 }
djinn77 1:d99b6299bad8 52
djinn77 1:d99b6299bad8 53 }
djinn77 1:d99b6299bad8 54
djinn77 1:d99b6299bad8 55
djinn77 1:d99b6299bad8 56 void desplazar(uint16_t* datos, char des){
djinn77 1:d99b6299bad8 57
djinn77 1:d99b6299bad8 58 uint16_t desplazamiento[8]={0};
djinn77 1:d99b6299bad8 59 int j= 0;
djinn77 1:d99b6299bad8 60
djinn77 1:d99b6299bad8 61 for(int i=des; i<(des+3);i++){
djinn77 1:d99b6299bad8 62 desplazamiento[i]=datos[j];
djinn77 1:d99b6299bad8 63 j++;
djinn77 1:d99b6299bad8 64 }
djinn77 1:d99b6299bad8 65 captura_matriz(desplazamiento);
djinn77 1:d99b6299bad8 66 }
djinn77 1:d99b6299bad8 67
djinn77 1:d99b6299bad8 68 void read(){
djinn77 0:4b2603e81763 69
djinn77 0:4b2603e81763 70 pc.baud(38400);
djinn77 3:b77f80e91118 71
djinn77 0:4b2603e81763 72 char pos= 0;
djinn77 0:4b2603e81763 73 char figura= 0;
djinn77 0:4b2603e81763 74 char giro= 0;
djinn77 0:4b2603e81763 75 debuging("\n Ingrese el posicion. ");
djinn77 0:4b2603e81763 76 pos=pc.getc();
djinn77 0:4b2603e81763 77 debuging("\n Seleccione la Figura. ");
djinn77 0:4b2603e81763 78 figura=pc.getc();
djinn77 0:4b2603e81763 79 debuging("\n Seleccione la rotacion. ");
djinn77 0:4b2603e81763 80 giro=pc.getc();
djinn77 0:4b2603e81763 81
djinn77 0:4b2603e81763 82
djinn77 0:4b2603e81763 83 switch(figura){
djinn77 1:d99b6299bad8 84 case 0: // L
djinn77 1:d99b6299bad8 85 switch(giro){
djinn77 1:d99b6299bad8 86 case 0:
djinn77 2:f9d289ee6b30 87 desplazar(PZA_LD,pos);
djinn77 1:d99b6299bad8 88 break;
djinn77 1:d99b6299bad8 89 case 1:
djinn77 2:f9d289ee6b30 90 desplazar(PZA_LDN,pos);
djinn77 1:d99b6299bad8 91
djinn77 1:d99b6299bad8 92 break;
djinn77 1:d99b6299bad8 93 case 2:
djinn77 2:f9d289ee6b30 94 desplazar(PZA_LDO,pos);
djinn77 1:d99b6299bad8 95
djinn77 1:d99b6299bad8 96 break;
djinn77 1:d99b6299bad8 97 case 3:
djinn77 2:f9d289ee6b30 98 desplazar(PZA_LDD, pos);
djinn77 1:d99b6299bad8 99
djinn77 1:d99b6299bad8 100 break;
djinn77 0:4b2603e81763 101 }
djinn77 0:4b2603e81763 102 break;
djinn77 2:f9d289ee6b30 103 case 1://T
djinn77 2:f9d289ee6b30 104 switch(giro){
djinn77 2:f9d289ee6b30 105 case 0:
djinn77 2:f9d289ee6b30 106 desplazar(PZA_T, pos);
djinn77 2:f9d289ee6b30 107 break;
djinn77 2:f9d289ee6b30 108 case 1:
djinn77 2:f9d289ee6b30 109 desplazar(PZA_TN, pos);
djinn77 2:f9d289ee6b30 110 break;
djinn77 2:f9d289ee6b30 111 case 2:
djinn77 2:f9d289ee6b30 112 desplazar(PZA_TO, pos);
djinn77 2:f9d289ee6b30 113 break;
djinn77 2:f9d289ee6b30 114 case 3:
djinn77 2:f9d289ee6b30 115 desplazar(PZA_TD, pos);
djinn77 2:f9d289ee6b30 116 break;
djinn77 0:4b2603e81763 117 }
djinn77 0:4b2603e81763 118
djinn77 0:4b2603e81763 119 break;
djinn77 2:f9d289ee6b30 120 case 2://I
djinn77 2:f9d289ee6b30 121 switch(giro){
djinn77 2:f9d289ee6b30 122 case 0: case 2:
djinn77 2:f9d289ee6b30 123 desplazar(PZA_I, pos);
djinn77 2:f9d289ee6b30 124 break;
djinn77 2:f9d289ee6b30 125 case 1: case 3:
djinn77 2:f9d289ee6b30 126 desplazar(PZA_IR, pos);
djinn77 2:f9d289ee6b30 127 break;
djinn77 0:4b2603e81763 128 }
djinn77 0:4b2603e81763 129 break;
djinn77 2:f9d289ee6b30 130 case 3://Cuadrado
djinn77 2:f9d289ee6b30 131 switch(giro){
djinn77 2:f9d289ee6b30 132 case 1: case 2: case 3: case 4:
djinn77 2:f9d289ee6b30 133 desplazar(PZA_C,pos);
djinn77 2:f9d289ee6b30 134 break;
djinn77 0:4b2603e81763 135 }
djinn77 2:f9d289ee6b30 136 break;
djinn77 2:f9d289ee6b30 137 case 5: //Z
djinn77 2:f9d289ee6b30 138 switch(giro){
djinn77 2:f9d289ee6b30 139 case 0:
djinn77 2:f9d289ee6b30 140 desplazar(PZA_Z,pos);
djinn77 2:f9d289ee6b30 141 break;
djinn77 2:f9d289ee6b30 142 case 1:
djinn77 2:f9d289ee6b30 143 desplazar(PZA_ZN,pos);
djinn77 2:f9d289ee6b30 144 break;
djinn77 2:f9d289ee6b30 145 case 2:
djinn77 2:f9d289ee6b30 146 desplazar(PZA_ZO,pos);
djinn77 2:f9d289ee6b30 147 break;
djinn77 2:f9d289ee6b30 148 case 3:
djinn77 2:f9d289ee6b30 149 desplazar(PZA_ZD, pos);
djinn77 2:f9d289ee6b30 150 break;
djinn77 2:f9d289ee6b30 151 }
djinn77 0:4b2603e81763 152
djinn77 0:4b2603e81763 153 break;
djinn77 2:f9d289ee6b30 154
djinn77 0:4b2603e81763 155 }
djinn77 0:4b2603e81763 156 }
djinn77 1:d99b6299bad8 157
djinn77 0:4b2603e81763 158 void inicializar(){
djinn77 0:4b2603e81763 159
djinn77 0:4b2603e81763 160 sendSPI(0x0c,1);
djinn77 0:4b2603e81763 161 sendSPI(0x0b,7);
djinn77 0:4b2603e81763 162 sendSPI(0x09,0);
djinn77 0:4b2603e81763 163 sendSPI(0x0A,0x0f);
djinn77 0:4b2603e81763 164 int i;
djinn77 0:4b2603e81763 165 for (i=0;i<2;i++){
djinn77 0:4b2603e81763 166 sendSPI(0x0F,1);
djinn77 0:4b2603e81763 167 wait (0.5);
djinn77 0:4b2603e81763 168 sendSPI(0x0f,0);
djinn77 0:4b2603e81763 169 wait (0.5);
djinn77 0:4b2603e81763 170 }
djinn77 0:4b2603e81763 171
djinn77 5:106def451c41 172 for (int j= 1; j<=8;j++){ // limpia la pantalla al encenderce o reiniarcea asi
djinn77 5:106def451c41 173 //no quedan leds encendidos cuando se ejecute el programa nuevamente
djinn77 5:106def451c41 174
djinn77 5:106def451c41 175 sendSPI(j, 0x00);
djinn77 5:106def451c41 176 }
djinn77 0:4b2603e81763 177 }
djinn77 0:4b2603e81763 178
djinn77 0:4b2603e81763 179
djinn77 0:4b2603e81763 180 int main() {
djinn77 0:4b2603e81763 181 inicializar();
djinn77 0:4b2603e81763 182 while(1){
djinn77 1:d99b6299bad8 183 read();
djinn77 0:4b2603e81763 184 }
djinn77 0:4b2603e81763 185
djinn77 0:4b2603e81763 186
djinn77 0:4b2603e81763 187
djinn77 0:4b2603e81763 188
djinn77 0:4b2603e81763 189 }