sdgfd gdsadsg
/
chip_reader
i have no idea what i'm doing
main.cpp@0:6703a60ee9d0, 2015-05-12 (annotated)
- Committer:
- alecjw
- Date:
- Tue May 12 14:04:47 2015 +0000
- Revision:
- 0:6703a60ee9d0
i have no idea what i'm doing
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
alecjw | 0:6703a60ee9d0 | 1 | #include "mbed.h" |
alecjw | 0:6703a60ee9d0 | 2 | |
alecjw | 0:6703a60ee9d0 | 3 | //Just a couple of the outputs directly accessible for debug |
alecjw | 0:6703a60ee9d0 | 4 | DigitalIn O0(p14);/* |
alecjw | 0:6703a60ee9d0 | 5 | DigitalIn O1(p15); |
alecjw | 0:6703a60ee9d0 | 6 | DigitalIn O2(p16); |
alecjw | 0:6703a60ee9d0 | 7 | DigitalIn O3(p20);*/ |
alecjw | 0:6703a60ee9d0 | 8 | DigitalIn O4(p19);/* |
alecjw | 0:6703a60ee9d0 | 9 | DigitalIn O5(p18); |
alecjw | 0:6703a60ee9d0 | 10 | DigitalIn O6(p17); |
alecjw | 0:6703a60ee9d0 | 11 | DigitalIn O7(p21);*/ |
alecjw | 0:6703a60ee9d0 | 12 | |
alecjw | 0:6703a60ee9d0 | 13 | DigitalOut CE(p22); |
alecjw | 0:6703a60ee9d0 | 14 | DigitalOut OE(p24); |
alecjw | 0:6703a60ee9d0 | 15 | |
alecjw | 0:6703a60ee9d0 | 16 | Serial pc(USBTX, USBRX); |
alecjw | 0:6703a60ee9d0 | 17 | |
alecjw | 0:6703a60ee9d0 | 18 | DigitalOut led1(LED1); |
alecjw | 0:6703a60ee9d0 | 19 | DigitalOut led2(LED2); |
alecjw | 0:6703a60ee9d0 | 20 | DigitalOut led3(LED3); |
alecjw | 0:6703a60ee9d0 | 21 | DigitalOut led4(LED4); |
alecjw | 0:6703a60ee9d0 | 22 | BusIn epromdata(p14,p15,p16,p20,p19,p18,p17,p21); |
alecjw | 0:6703a60ee9d0 | 23 | BusOut addressline(p13,p12,p11,p10,p9,p8,p7,p6,p27,p26,p23,p25,p5,p28); |
alecjw | 0:6703a60ee9d0 | 24 | |
alecjw | 0:6703a60ee9d0 | 25 | |
alecjw | 0:6703a60ee9d0 | 26 | int main() { |
alecjw | 0:6703a60ee9d0 | 27 | //CE and OE lines are inverted |
alecjw | 0:6703a60ee9d0 | 28 | CE=1; |
alecjw | 0:6703a60ee9d0 | 29 | OE=1; |
alecjw | 0:6703a60ee9d0 | 30 | //Give me some time to set up a pipe into a file |
alecjw | 0:6703a60ee9d0 | 31 | wait(8); |
alecjw | 0:6703a60ee9d0 | 32 | |
alecjw | 0:6703a60ee9d0 | 33 | int num=16384; //number of addresses |
alecjw | 0:6703a60ee9d0 | 34 | char epromcontents[num]; //char array to store data words |
alecjw | 0:6703a60ee9d0 | 35 | for (int addr=0;addr<num;addr++){ |
alecjw | 0:6703a60ee9d0 | 36 | addressline=addr; //set the address |
alecjw | 0:6703a60ee9d0 | 37 | CE=0;//clock the chip |
alecjw | 0:6703a60ee9d0 | 38 | OE=0; |
alecjw | 0:6703a60ee9d0 | 39 | wait(1e-6); //wait a generous 1000ns |
alecjw | 0:6703a60ee9d0 | 40 | epromcontents[addr]=epromdata.read(); //then read the data into the array |
alecjw | 0:6703a60ee9d0 | 41 | //just as a sanity check, send two of the data lines to LEDs 1 and 2 |
alecjw | 0:6703a60ee9d0 | 42 | led1=O0; |
alecjw | 0:6703a60ee9d0 | 43 | led2=O4; |
alecjw | 0:6703a60ee9d0 | 44 | //bring the clock lines back up and wait for the output to go back into tristated mode |
alecjw | 0:6703a60ee9d0 | 45 | CE=1; |
alecjw | 0:6703a60ee9d0 | 46 | OE=1; |
alecjw | 0:6703a60ee9d0 | 47 | wait(1e-6); |
alecjw | 0:6703a60ee9d0 | 48 | |
alecjw | 0:6703a60ee9d0 | 49 | } |
alecjw | 0:6703a60ee9d0 | 50 | //led3 goes on to say we're done |
alecjw | 0:6703a60ee9d0 | 51 | led3=1; |
alecjw | 0:6703a60ee9d0 | 52 | for(int i=0;i<num;i++) |
alecjw | 0:6703a60ee9d0 | 53 | pc.printf("%d\n",epromcontents[i]);//send each byte over usbserial |
alecjw | 0:6703a60ee9d0 | 54 | led4=1;//to say we're done sending |
alecjw | 0:6703a60ee9d0 | 55 | } |
alecjw | 0:6703a60ee9d0 | 56 |