i have no idea what i'm doing

Dependencies:   mbed

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?

UserRevisionLine numberNew 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