This is a GR peach project demonstrating shift registers 595 and 165
Fork of mbed_shiftreg_2 by
shitreg.cpp@6:5889eff2e861, 2017-01-03 (annotated)
- Committer:
- akverma
- Date:
- Tue Jan 03 18:02:16 2017 +0000
- Revision:
- 6:5889eff2e861
- Parent:
- 3:1696c69e3109
- Child:
- 7:2c0917fbf656
Shiftreg_3 for 8pin system;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
akverma | 3:1696c69e3109 | 1 | #include<iostream> |
RahulSitaram | 0:b9fbca7b029d | 2 | #include "mbed.h" |
RahulSitaram | 0:b9fbca7b029d | 3 | //#include <bitset> |
RahulSitaram | 0:b9fbca7b029d | 4 | #include "arduino.h" |
RahulSitaram | 0:b9fbca7b029d | 5 | |
akverma | 3:1696c69e3109 | 6 | #define delay_time 0 |
akverma | 3:1696c69e3109 | 7 | #define outlets 1 |
akverma | 3:1696c69e3109 | 8 | |
RahulSitaram | 0:b9fbca7b029d | 9 | //using namespace mbed::mbed; |
RahulSitaram | 0:b9fbca7b029d | 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 |
akverma | 3:1696c69e3109 | 15 | DigitalOut latch = P8_11; |
akverma | 3:1696c69e3109 | 16 | DigitalOut CLK_595 = P8_13; |
akverma | 6:5889eff2e861 | 17 | DigitalOut data_out_pins[outlets][3] = |
akverma | 6:5889eff2e861 | 18 | {{P4_4, P4_5, P4_6}}; |
akverma | 3:1696c69e3109 | 19 | DigitalIn data_in_pins[outlets] = {P4_7}; |
akverma | 3:1696c69e3109 | 20 | DigitalOut CLK_165(P2_14); |
akverma | 3:1696c69e3109 | 21 | DigitalOut load(P2_15); |
RahulSitaram | 0:b9fbca7b029d | 22 | |
RahulSitaram | 0:b9fbca7b029d | 23 | uint8_t data_read; |
RahulSitaram | 1:b42fa19eeea8 | 24 | bool c1[4]; |
RahulSitaram | 1:b42fa19eeea8 | 25 | bool c2[4]; |
RahulSitaram | 1:b42fa19eeea8 | 26 | bool c3[4]; |
RahulSitaram | 1:b42fa19eeea8 | 27 | bool c4[4]; |
akverma | 3:1696c69e3109 | 28 | uint8_t data_in[outlets]; |
akverma | 3:1696c69e3109 | 29 | uint8_t data_out[outlets][3] = {{0xC5, 0xB2, 0x68}}; |
RahulSitaram | 1:b42fa19eeea8 | 30 | |
akverma | 3:1696c69e3109 | 31 | void shift(){ |
akverma | 3:1696c69e3109 | 32 | // DigitalOut lat = pins[row_no][0]; |
akverma | 3:1696c69e3109 | 33 | // DigitalOut dat = pins[row_no][1]; |
akverma | 3:1696c69e3109 | 34 | // DigitalOut clk = pins[row_no][2]; |
akverma | 3:1696c69e3109 | 35 | CLK_595 = 0; |
akverma | 3:1696c69e3109 | 36 | latch = 0; |
akverma | 3:1696c69e3109 | 37 | int init = 0x80; |
akverma | 3:1696c69e3109 | 38 | for(int i=0; i<8; i++) |
akverma | 3:1696c69e3109 | 39 | { |
akverma | 3:1696c69e3109 | 40 | for (int j=0; j<outlets; j++) |
akverma | 3:1696c69e3109 | 41 | { |
akverma | 3:1696c69e3109 | 42 | data_out_pins[j][0] = data_out[j][0] & (init>>i); |
akverma | 3:1696c69e3109 | 43 | data_out_pins[j][1] = data_out[j][1] & (init>>i); |
akverma | 3:1696c69e3109 | 44 | data_out_pins[j][2] = data_out[j][2] & (init>>i); |
RahulSitaram | 0:b9fbca7b029d | 45 | } |
akverma | 3:1696c69e3109 | 46 | CLK_595 = 1; |
akverma | 3:1696c69e3109 | 47 | CLK_595 = 0; |
akverma | 3:1696c69e3109 | 48 | } |
akverma | 3:1696c69e3109 | 49 | latch = 1; |
akverma | 3:1696c69e3109 | 50 | latch = 0; |
RahulSitaram | 0:b9fbca7b029d | 51 | } |
RahulSitaram | 0:b9fbca7b029d | 52 | |
akverma | 3:1696c69e3109 | 53 | void shift_read(){ |
akverma | 3:1696c69e3109 | 54 | load = 0; |
akverma | 3:1696c69e3109 | 55 | load = 1; |
akverma | 3:1696c69e3109 | 56 | for (int i=0; i<outlets; i++) |
RahulSitaram | 0:b9fbca7b029d | 57 | { |
akverma | 3:1696c69e3109 | 58 | data_in[i] = (data_in[i]<<1)|data_in_pins[i]; |
RahulSitaram | 0:b9fbca7b029d | 59 | } |
akverma | 3:1696c69e3109 | 60 | for(int i=0; i<8; i++) |
akverma | 3:1696c69e3109 | 61 | { |
akverma | 3:1696c69e3109 | 62 | for (int i=0; i<outlets; i++) |
akverma | 3:1696c69e3109 | 63 | { |
akverma | 3:1696c69e3109 | 64 | data_in[i] = (data_in[i]<<1)|data_in_pins[i]; |
akverma | 3:1696c69e3109 | 65 | } |
akverma | 3:1696c69e3109 | 66 | CLK_165 = 0; |
akverma | 3:1696c69e3109 | 67 | CLK_165 = 1; |
RahulSitaram | 0:b9fbca7b029d | 68 | } |
akverma | 3:1696c69e3109 | 69 | } |
akverma | 3:1696c69e3109 | 70 | |
akverma | 3:1696c69e3109 | 71 | void call(){ |
akverma | 3:1696c69e3109 | 72 | data_out[0][0] = pc.getc(); |
akverma | 3:1696c69e3109 | 73 | shift(); |
akverma | 3:1696c69e3109 | 74 | } |
RahulSitaram | 0:b9fbca7b029d | 75 | |
RahulSitaram | 0:b9fbca7b029d | 76 | int main() { |
RahulSitaram | 2:a07ae6396167 | 77 | pc.attach(&call); |
akverma | 3:1696c69e3109 | 78 | long time_counter1 = 0; |
akverma | 3:1696c69e3109 | 79 | wait_ms(500); |
akverma | 3:1696c69e3109 | 80 | cout<<"Starting: "<<endl; |
RahulSitaram | 0:b9fbca7b029d | 81 | wait_ms(500); |
RahulSitaram | 1:b42fa19eeea8 | 82 | while(1){ |
akverma | 3:1696c69e3109 | 83 | shift(); |
akverma | 3:1696c69e3109 | 84 | shift_read(); |
akverma | 3:1696c69e3109 | 85 | time_counter1++; |
akverma | 3:1696c69e3109 | 86 | if (time_counter1 == 1000000) |
akverma | 3:1696c69e3109 | 87 | { |
akverma | 3:1696c69e3109 | 88 | pc.printf("%X\n", data_in[0]); |
akverma | 3:1696c69e3109 | 89 | time_counter1 = 0; |
RahulSitaram | 1:b42fa19eeea8 | 90 | } |
akverma | 3:1696c69e3109 | 91 | } |
RahulSitaram | 0:b9fbca7b029d | 92 | } |