This is a GR peach project demonstrating shift registers 595 and 165
Fork of mbed_shiftreg_3 by
shitreg.cpp@5:cfa7c7d886a7, 2017-01-03 (annotated)
- Committer:
- RahulSitaram
- Date:
- Tue Jan 03 17:55:04 2017 +0000
- Revision:
- 5:cfa7c7d886a7
- Parent:
- 3:081ce87947b8
10 outlets;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
RahulSitaram | 3:081ce87947b8 | 1 | #include<iostream> |
RahulSitaram | 0:b9fbca7b029d | 2 | #include "mbed.h" |
RahulSitaram | 0:b9fbca7b029d | 3 | //#include <bitset> |
RahulSitaram | 0:b9fbca7b029d | 4 | #include "arduino.h" |
RahulSitaram | 3:081ce87947b8 | 5 | |
RahulSitaram | 3:081ce87947b8 | 6 | #define delay_time 0 |
RahulSitaram | 3:081ce87947b8 | 7 | #define outlets 11 |
RahulSitaram | 5:cfa7c7d886a7 | 8 | |
RahulSitaram | 0:b9fbca7b029d | 9 | //using namespace mbed::mbed; |
RahulSitaram | 3:081ce87947b8 | 10 | |
RahulSitaram | 0:b9fbca7b029d | 11 | //DigitalOut lat(P8_11); |
RahulSitaram | 0:b9fbca7b029d | 12 | //DigitalOut dat(P8_13); |
RahulSitaram | 0:b9fbca7b029d | 13 | //DigitalOut clk(P4_4); |
RahulSitaram | 0:b9fbca7b029d | 14 | Serial pc(USBTX, USBRX); // tx, rx |
RahulSitaram | 3:081ce87947b8 | 15 | DigitalOut latch = P8_11; |
RahulSitaram | 3:081ce87947b8 | 16 | DigitalOut CLK_595 = P8_13; |
RahulSitaram | 3:081ce87947b8 | 17 | DigitalOut data_out_pins[outlets][3] = { |
RahulSitaram | 3:081ce87947b8 | 18 | {P4_4, P4_5, P4_6}, |
RahulSitaram | 3:081ce87947b8 | 19 | {P1_2, P1_3, P10_12}, |
RahulSitaram | 3:081ce87947b8 | 20 | {P10_14, P10_13, P8_14}, |
RahulSitaram | 3:081ce87947b8 | 21 | {P1_8, P1_9, P1_10}, |
RahulSitaram | 3:081ce87947b8 | 22 | {P1_13, P1_15, P1_7}, |
RahulSitaram | 3:081ce87947b8 | 23 | {P10_0, P1_1, P1_0}, |
RahulSitaram | 3:081ce87947b8 | 24 | {P2_7, P2_6, P2_5}, |
RahulSitaram | 3:081ce87947b8 | 25 | {P2_3, P2_2, P2_1}, |
RahulSitaram | 3:081ce87947b8 | 26 | {P7_15, P8_1, P2_9}, |
RahulSitaram | 3:081ce87947b8 | 27 | {P4_0, P2_13, P5_7}, |
RahulSitaram | 3:081ce87947b8 | 28 | {P5_3, P5_2, P5_1},}; |
RahulSitaram | 3:081ce87947b8 | 29 | DigitalIn data_in_pins[outlets] = {P4_7,P10_15,P8_15,P1_11,P1_6,P1_12,P2_4,P2_0,P2_10,P5_6,P5_0}; |
RahulSitaram | 3:081ce87947b8 | 30 | DigitalOut CLK_165(P2_14); |
RahulSitaram | 3:081ce87947b8 | 31 | DigitalOut load(P2_15); |
RahulSitaram | 3:081ce87947b8 | 32 | |
RahulSitaram | 0:b9fbca7b029d | 33 | uint8_t data_read; |
RahulSitaram | 1:b42fa19eeea8 | 34 | bool c1[4]; |
RahulSitaram | 1:b42fa19eeea8 | 35 | bool c2[4]; |
RahulSitaram | 1:b42fa19eeea8 | 36 | bool c3[4]; |
RahulSitaram | 1:b42fa19eeea8 | 37 | bool c4[4]; |
RahulSitaram | 3:081ce87947b8 | 38 | uint8_t data_in[outlets]; |
RahulSitaram | 3:081ce87947b8 | 39 | uint8_t data_out[outlets][3] = {{0xC5, 0xB2, 0x68}}; |
RahulSitaram | 3:081ce87947b8 | 40 | |
RahulSitaram | 3:081ce87947b8 | 41 | void shift(){ |
RahulSitaram | 3:081ce87947b8 | 42 | // DigitalOut lat = pins[row_no][0]; |
RahulSitaram | 3:081ce87947b8 | 43 | // DigitalOut dat = pins[row_no][1]; |
RahulSitaram | 3:081ce87947b8 | 44 | // DigitalOut clk = pins[row_no][2]; |
RahulSitaram | 3:081ce87947b8 | 45 | CLK_595 = 0; |
RahulSitaram | 3:081ce87947b8 | 46 | latch = 0; |
RahulSitaram | 3:081ce87947b8 | 47 | int init = 0x80; |
RahulSitaram | 3:081ce87947b8 | 48 | for(int i=0; i<8; i++) |
RahulSitaram | 3:081ce87947b8 | 49 | { |
RahulSitaram | 3:081ce87947b8 | 50 | for (int j=0; j<outlets; j++) |
RahulSitaram | 3:081ce87947b8 | 51 | { |
RahulSitaram | 3:081ce87947b8 | 52 | data_out_pins[j][0] = data_out[j][0] & (init>>i); |
RahulSitaram | 3:081ce87947b8 | 53 | data_out_pins[j][1] = data_out[j][1] & (init>>i); |
RahulSitaram | 3:081ce87947b8 | 54 | data_out_pins[j][2] = data_out[j][2] & (init>>i); |
RahulSitaram | 0:b9fbca7b029d | 55 | } |
RahulSitaram | 3:081ce87947b8 | 56 | CLK_595 = 1; |
RahulSitaram | 3:081ce87947b8 | 57 | CLK_595 = 0; |
RahulSitaram | 3:081ce87947b8 | 58 | } |
RahulSitaram | 3:081ce87947b8 | 59 | latch = 1; |
RahulSitaram | 3:081ce87947b8 | 60 | latch = 0; |
RahulSitaram | 0:b9fbca7b029d | 61 | } |
RahulSitaram | 3:081ce87947b8 | 62 | |
RahulSitaram | 3:081ce87947b8 | 63 | void shift_read(){ |
RahulSitaram | 3:081ce87947b8 | 64 | load = 0; |
RahulSitaram | 3:081ce87947b8 | 65 | load = 1; |
RahulSitaram | 3:081ce87947b8 | 66 | for (int i=0; i<outlets; i++) |
RahulSitaram | 0:b9fbca7b029d | 67 | { |
RahulSitaram | 3:081ce87947b8 | 68 | data_in[i] = (data_in[i]<<1)|data_in_pins[i]; |
RahulSitaram | 0:b9fbca7b029d | 69 | } |
RahulSitaram | 3:081ce87947b8 | 70 | for(int i=0; i<8; i++) |
RahulSitaram | 3:081ce87947b8 | 71 | { |
RahulSitaram | 3:081ce87947b8 | 72 | for (int i=0; i<outlets; i++) |
RahulSitaram | 3:081ce87947b8 | 73 | { |
RahulSitaram | 3:081ce87947b8 | 74 | data_in[i] = (data_in[i]<<1)|data_in_pins[i]; |
RahulSitaram | 3:081ce87947b8 | 75 | } |
RahulSitaram | 3:081ce87947b8 | 76 | CLK_165 = 0; |
RahulSitaram | 3:081ce87947b8 | 77 | CLK_165 = 1; |
RahulSitaram | 0:b9fbca7b029d | 78 | } |
RahulSitaram | 3:081ce87947b8 | 79 | } |
RahulSitaram | 3:081ce87947b8 | 80 | |
RahulSitaram | 3:081ce87947b8 | 81 | void call(){ |
RahulSitaram | 3:081ce87947b8 | 82 | data_out[0][0] = pc.getc(); |
RahulSitaram | 3:081ce87947b8 | 83 | shift(); |
RahulSitaram | 3:081ce87947b8 | 84 | } |
RahulSitaram | 3:081ce87947b8 | 85 | |
RahulSitaram | 0:b9fbca7b029d | 86 | int main() { |
RahulSitaram | 2:a07ae6396167 | 87 | pc.attach(&call); |
RahulSitaram | 3:081ce87947b8 | 88 | long time_counter1 = 0; |
RahulSitaram | 3:081ce87947b8 | 89 | wait_ms(500); |
RahulSitaram | 3:081ce87947b8 | 90 | cout<<"Starting: "<<endl; |
RahulSitaram | 0:b9fbca7b029d | 91 | wait_ms(500); |
RahulSitaram | 1:b42fa19eeea8 | 92 | while(1){ |
RahulSitaram | 3:081ce87947b8 | 93 | shift(); |
RahulSitaram | 3:081ce87947b8 | 94 | shift_read(); |
RahulSitaram | 3:081ce87947b8 | 95 | time_counter1++; |
RahulSitaram | 3:081ce87947b8 | 96 | if (time_counter1 == 1000000) |
RahulSitaram | 3:081ce87947b8 | 97 | { |
RahulSitaram | 3:081ce87947b8 | 98 | //pc.printf("%X\n", data_in[0]); |
RahulSitaram | 3:081ce87947b8 | 99 | cout<<"Flag"<<endl; |
RahulSitaram | 3:081ce87947b8 | 100 | time_counter1 = 0; |
RahulSitaram | 1:b42fa19eeea8 | 101 | } |
RahulSitaram | 3:081ce87947b8 | 102 | } |
RahulSitaram | 0:b9fbca7b029d | 103 | } |