Yosef Guevara Salamanca
/
00_LAB_matrix8x8_SPI_yosef
Datos SPI letra b
Fork of 00_LAB_matrix8x8_SPI by
Pruebas.cpp@13:3c9081c62a99, 2018-11-16 (annotated)
- Committer:
- djinn77
- Date:
- Fri Nov 16 07:04:28 2018 +0000
- Revision:
- 13:3c9081c62a99
- Parent:
- 12:9397a2bdfd28
Nombres de funciones cambiados para funcionar
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
djinn77 | 12:9397a2bdfd28 | 1 | |
djinn77 | 12:9397a2bdfd28 | 2 | #include "mbed.h" |
djinn77 | 12:9397a2bdfd28 | 3 | #include <math.h> |
djinn77 | 12:9397a2bdfd28 | 4 | #include "Piezas.h" |
djinn77 | 12:9397a2bdfd28 | 5 | Serial pc(USBTX,USBRX); |
djinn77 | 12:9397a2bdfd28 | 6 | SPI deviceM(PB_5, PB_4, PB_3); // D4(gris), Ninguno, D3(azul) |
djinn77 | 12:9397a2bdfd28 | 7 | DigitalOut ssel (PA_4); // A2(morado) |
djinn77 | 12:9397a2bdfd28 | 8 | |
djinn77 | 12:9397a2bdfd28 | 9 | InterruptIn pulsador_izq(A0); |
djinn77 | 12:9397a2bdfd28 | 10 | InterruptIn pulsador_der(A4); |
djinn77 | 12:9397a2bdfd28 | 11 | |
djinn77 | 12:9397a2bdfd28 | 12 | |
djinn77 | 12:9397a2bdfd28 | 13 | |
djinn77 | 12:9397a2bdfd28 | 14 | int imprimir[8] = {0,0,0,0,0,0,0,0}; |
djinn77 | 13:3c9081c62a99 | 15 | |
djinn77 | 13:3c9081c62a99 | 16 | uint16_t FIG_C[8]= {0b00000011, |
djinn77 | 13:3c9081c62a99 | 17 | 0b00000111, |
djinn77 | 13:3c9081c62a99 | 18 | 0b11111111, |
djinn77 | 13:3c9081c62a99 | 19 | 0b00000111, |
djinn77 | 13:3c9081c62a99 | 20 | 0b00001111, |
djinn77 | 13:3c9081c62a99 | 21 | 0b00011111, |
djinn77 | 13:3c9081c62a99 | 22 | 0b00000111, |
djinn77 | 13:3c9081c62a99 | 23 | 0b00000111}; |
djinn77 | 12:9397a2bdfd28 | 24 | float vel=0.1; |
djinn77 | 12:9397a2bdfd28 | 25 | |
djinn77 | 12:9397a2bdfd28 | 26 | void sendSPI(uint8_t d1, uint8_t d2) |
djinn77 | 12:9397a2bdfd28 | 27 | { |
djinn77 | 12:9397a2bdfd28 | 28 | deviceM.unlock(); |
djinn77 | 12:9397a2bdfd28 | 29 | ssel=0; |
djinn77 | 12:9397a2bdfd28 | 30 | deviceM.write(d1); |
djinn77 | 12:9397a2bdfd28 | 31 | deviceM.write(d2); |
djinn77 | 12:9397a2bdfd28 | 32 | ssel=1; |
djinn77 | 12:9397a2bdfd28 | 33 | deviceM.lock(); |
djinn77 | 12:9397a2bdfd28 | 34 | }; |
djinn77 | 12:9397a2bdfd28 | 35 | |
djinn77 | 12:9397a2bdfd28 | 36 | void inicializar_matriz(){ |
djinn77 | 12:9397a2bdfd28 | 37 | sendSPI(0x0c,1); |
djinn77 | 12:9397a2bdfd28 | 38 | sendSPI(0x0b,7); |
djinn77 | 12:9397a2bdfd28 | 39 | sendSPI(0x09,0); //SELECCIONA LA LUMINOSIDAD DE LA MATRIZ |
djinn77 | 12:9397a2bdfd28 | 40 | sendSPI(0x0A,0x00); //SELECCIONA LA LUMINOSIDAD DE LA MATRIZ |
djinn77 | 12:9397a2bdfd28 | 41 | |
djinn77 | 12:9397a2bdfd28 | 42 | int i; |
djinn77 | 12:9397a2bdfd28 | 43 | for (i=0;i<2;i++){ |
djinn77 | 12:9397a2bdfd28 | 44 | sendSPI(0x0F,1); |
djinn77 | 12:9397a2bdfd28 | 45 | wait (0.5); |
djinn77 | 12:9397a2bdfd28 | 46 | sendSPI(0x0F,0); |
djinn77 | 12:9397a2bdfd28 | 47 | wait (0.5); |
djinn77 | 12:9397a2bdfd28 | 48 | } |
djinn77 | 12:9397a2bdfd28 | 49 | |
djinn77 | 12:9397a2bdfd28 | 50 | } |
djinn77 | 12:9397a2bdfd28 | 51 | |
djinn77 | 12:9397a2bdfd28 | 52 | |
djinn77 | 12:9397a2bdfd28 | 53 | |
djinn77 | 12:9397a2bdfd28 | 54 | int main() { |
djinn77 | 12:9397a2bdfd28 | 55 | |
djinn77 | 12:9397a2bdfd28 | 56 | inicializar_matriz(); |
djinn77 | 12:9397a2bdfd28 | 57 | pc.baud(38400); |
djinn77 | 12:9397a2bdfd28 | 58 | |
djinn77 | 12:9397a2bdfd28 | 59 | while(1){ |
djinn77 | 13:3c9081c62a99 | 60 | ///////////////////////////////// |
djinn77 | 13:3c9081c62a99 | 61 | for(int i= 1;i<=8;i++){ |
djinn77 | 13:3c9081c62a99 | 62 | sendSPI(i, FIG_C[i-1]); |
djinn77 | 13:3c9081c62a99 | 63 | |
djinn77 | 13:3c9081c62a99 | 64 | } |
djinn77 | 13:3c9081c62a99 | 65 | /////////////////// |
djinn77 | 13:3c9081c62a99 | 66 | wait(2.0); |
djinn77 | 13:3c9081c62a99 | 67 | |
djinn77 | 13:3c9081c62a99 | 68 | int16_t MUL1 = FIG_C[0]& FIG_C[1]& FIG_C[2]& FIG_C[3]; |
djinn77 | 13:3c9081c62a99 | 69 | int16_t MUL2 = FIG_C[4]& FIG_C[5]& FIG_C[6]& FIG_C[7]; |
djinn77 | 12:9397a2bdfd28 | 70 | |
djinn77 | 13:3c9081c62a99 | 71 | |
djinn77 | 13:3c9081c62a99 | 72 | MUL1= MUL1&MUL2; |
djinn77 | 13:3c9081c62a99 | 73 | |
djinn77 | 13:3c9081c62a99 | 74 | ////////////////////////// |
djinn77 | 13:3c9081c62a99 | 75 | sendSPI(1, 0); |
djinn77 | 13:3c9081c62a99 | 76 | sendSPI(2, 0); |
djinn77 | 13:3c9081c62a99 | 77 | sendSPI(3, 0); |
djinn77 | 13:3c9081c62a99 | 78 | sendSPI(4, MUL1); |
djinn77 | 13:3c9081c62a99 | 79 | sendSPI(5, 0); |
djinn77 | 13:3c9081c62a99 | 80 | sendSPI(6, 0); |
djinn77 | 13:3c9081c62a99 | 81 | sendSPI(7, 0); |
djinn77 | 13:3c9081c62a99 | 82 | sendSPI(8, 0); |
djinn77 | 13:3c9081c62a99 | 83 | wait(1.0); |
djinn77 | 13:3c9081c62a99 | 84 | /////////////////////////////// |
djinn77 | 13:3c9081c62a99 | 85 | |
djinn77 | 13:3c9081c62a99 | 86 | |
djinn77 | 13:3c9081c62a99 | 87 | int16_t resta[8]={0}; |
djinn77 | 13:3c9081c62a99 | 88 | int16_t memoria[8]={0}; |
djinn77 | 13:3c9081c62a99 | 89 | |
djinn77 | 13:3c9081c62a99 | 90 | for(int ki=0; ki<=7;ki++){ |
djinn77 | 13:3c9081c62a99 | 91 | |
djinn77 | 13:3c9081c62a99 | 92 | resta[ki]=FIG_C[ki]- MUL1; |
djinn77 | 13:3c9081c62a99 | 93 | |
djinn77 | 13:3c9081c62a99 | 94 | } |
djinn77 | 13:3c9081c62a99 | 95 | /////////////////////////////// |
djinn77 | 13:3c9081c62a99 | 96 | for(int i= 1;i<=8;i++){ |
djinn77 | 13:3c9081c62a99 | 97 | sendSPI(i, resta[i-1]); |
djinn77 | 13:3c9081c62a99 | 98 | |
djinn77 | 13:3c9081c62a99 | 99 | } |
djinn77 | 13:3c9081c62a99 | 100 | wait(2.0); |
djinn77 | 13:3c9081c62a99 | 101 | ///////////////////////////////// |
djinn77 | 13:3c9081c62a99 | 102 | int n=0; |
djinn77 | 13:3c9081c62a99 | 103 | int cot=0b00000001; |
djinn77 | 13:3c9081c62a99 | 104 | |
djinn77 | 13:3c9081c62a99 | 105 | for(int l = 0; l<=7;l++){ |
djinn77 | 13:3c9081c62a99 | 106 | if((cot<<l & MUL1) !=0){ |
djinn77 | 13:3c9081c62a99 | 107 | n++; |
djinn77 | 13:3c9081c62a99 | 108 | } |
djinn77 | 13:3c9081c62a99 | 109 | } |
djinn77 | 13:3c9081c62a99 | 110 | |
djinn77 | 13:3c9081c62a99 | 111 | for(int i= 1;i<=8;i++){ |
djinn77 | 13:3c9081c62a99 | 112 | |
djinn77 | 13:3c9081c62a99 | 113 | memoria[i-1]= 0; |
djinn77 | 12:9397a2bdfd28 | 114 | |
djinn77 | 13:3c9081c62a99 | 115 | } |
djinn77 | 13:3c9081c62a99 | 116 | |
djinn77 | 13:3c9081c62a99 | 117 | //////////////// |
djinn77 | 13:3c9081c62a99 | 118 | for(int i= 1;i<=8;i++){ |
djinn77 | 13:3c9081c62a99 | 119 | |
djinn77 | 13:3c9081c62a99 | 120 | memoria[i-1]= resta[i-1]>>n; |
djinn77 | 13:3c9081c62a99 | 121 | |
djinn77 | 13:3c9081c62a99 | 122 | } |
djinn77 | 13:3c9081c62a99 | 123 | wait(0.2); |
djinn77 | 13:3c9081c62a99 | 124 | //////////////////////////////// |
djinn77 | 13:3c9081c62a99 | 125 | /* |
djinn77 | 12:9397a2bdfd28 | 126 | int A = 0b01110111; |
djinn77 | 12:9397a2bdfd28 | 127 | int B = 0b00011100; |
djinn77 | 12:9397a2bdfd28 | 128 | int C = A&B; |
djinn77 | 12:9397a2bdfd28 | 129 | int R= A-C; |
djinn77 | 12:9397a2bdfd28 | 130 | int cot=0b00000001; |
djinn77 | 12:9397a2bdfd28 | 131 | |
djinn77 | 12:9397a2bdfd28 | 132 | int n=0; |
djinn77 | 12:9397a2bdfd28 | 133 | |
djinn77 | 12:9397a2bdfd28 | 134 | for(int l = 0; l<=7;l++){ |
djinn77 | 12:9397a2bdfd28 | 135 | |
djinn77 | 12:9397a2bdfd28 | 136 | if((cot<<l & R) !=0){ |
djinn77 | 12:9397a2bdfd28 | 137 | n++; |
djinn77 | 12:9397a2bdfd28 | 138 | |
djinn77 | 12:9397a2bdfd28 | 139 | } |
djinn77 | 12:9397a2bdfd28 | 140 | } |
djinn77 | 12:9397a2bdfd28 | 141 | pc.printf("\n n %i\n ",n); |
djinn77 | 12:9397a2bdfd28 | 142 | |
djinn77 | 12:9397a2bdfd28 | 143 | pc.printf("\n n-1 %i\n ",n); |
djinn77 | 12:9397a2bdfd28 | 144 | |
djinn77 | 12:9397a2bdfd28 | 145 | |
djinn77 | 12:9397a2bdfd28 | 146 | float acum=1; |
djinn77 | 12:9397a2bdfd28 | 147 | for(int t=1;t<=n;t++){ |
djinn77 | 12:9397a2bdfd28 | 148 | acum*=2; |
djinn77 | 12:9397a2bdfd28 | 149 | } |
djinn77 | 12:9397a2bdfd28 | 150 | acum--; |
djinn77 | 12:9397a2bdfd28 | 151 | |
djinn77 | 12:9397a2bdfd28 | 152 | |
djinn77 | 12:9397a2bdfd28 | 153 | |
djinn77 | 12:9397a2bdfd28 | 154 | pc.printf("\n k %i\n ",acum); |
djinn77 | 12:9397a2bdfd28 | 155 | |
djinn77 | 12:9397a2bdfd28 | 156 | sendSPI(1, A); |
djinn77 | 12:9397a2bdfd28 | 157 | sendSPI(2, B); |
djinn77 | 12:9397a2bdfd28 | 158 | sendSPI(3, C); |
djinn77 | 12:9397a2bdfd28 | 159 | sendSPI(4, R); |
djinn77 | 12:9397a2bdfd28 | 160 | sendSPI(5, 0); |
djinn77 | 12:9397a2bdfd28 | 161 | sendSPI(6, cot); |
djinn77 | 12:9397a2bdfd28 | 162 | sendSPI(7, 0); |
djinn77 | 12:9397a2bdfd28 | 163 | sendSPI(8, acum); |
djinn77 | 12:9397a2bdfd28 | 164 | wait(vel); |
djinn77 | 13:3c9081c62a99 | 165 | |
djinn77 | 13:3c9081c62a99 | 166 | */ |
djinn77 | 12:9397a2bdfd28 | 167 | |
djinn77 | 12:9397a2bdfd28 | 168 | } |
djinn77 | 12:9397a2bdfd28 | 169 | |
djinn77 | 12:9397a2bdfd28 | 170 | } |
djinn77 | 12:9397a2bdfd28 | 171 | |
djinn77 | 12:9397a2bdfd28 | 172 | |
djinn77 | 13:3c9081c62a99 | 173 |