Program for loading code into LPC1768 on a costum PCB

Dependencies:   mbed

Committer:
DaniusKalv
Date:
Tue Mar 10 15:24:36 2015 +0000
Revision:
0:ba450e9d7f56
In system programming code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DaniusKalv 0:ba450e9d7f56 1 #include "mbed.h"
DaniusKalv 0:ba450e9d7f56 2
DaniusKalv 0:ba450e9d7f56 3 DigitalOut led1(LED1);
DaniusKalv 0:ba450e9d7f56 4 DigitalOut led2(LED2);
DaniusKalv 0:ba450e9d7f56 5
DaniusKalv 0:ba450e9d7f56 6 Serial pc (USBTX,USBRX);
DaniusKalv 0:ba450e9d7f56 7 Serial target (p28,p27);
DaniusKalv 0:ba450e9d7f56 8
DaniusKalv 0:ba450e9d7f56 9 // We'll drive this low, and then set the as inputs
DaniusKalv 0:ba450e9d7f56 10 // this mimics an open collector style ouput
DaniusKalv 0:ba450e9d7f56 11 DigitalInOut reset (p29);
DaniusKalv 0:ba450e9d7f56 12 DigitalInOut isp (p30);
DaniusKalv 0:ba450e9d7f56 13
DaniusKalv 0:ba450e9d7f56 14 int main() {
DaniusKalv 0:ba450e9d7f56 15
DaniusKalv 0:ba450e9d7f56 16 pc.baud(115200);
DaniusKalv 0:ba450e9d7f56 17 target.baud(115200);
DaniusKalv 0:ba450e9d7f56 18
DaniusKalv 0:ba450e9d7f56 19 // ISP Input with pullup
DaniusKalv 0:ba450e9d7f56 20 pc.printf("Ready!\r\n");
DaniusKalv 0:ba450e9d7f56 21 isp.input();
DaniusKalv 0:ba450e9d7f56 22 isp.mode(PullUp);
DaniusKalv 0:ba450e9d7f56 23
DaniusKalv 0:ba450e9d7f56 24 // pulse reset low
DaniusKalv 0:ba450e9d7f56 25 reset.output();
DaniusKalv 0:ba450e9d7f56 26 reset = 0;
DaniusKalv 0:ba450e9d7f56 27 wait (0.01);
DaniusKalv 0:ba450e9d7f56 28
DaniusKalv 0:ba450e9d7f56 29 // reset input, with pullup
DaniusKalv 0:ba450e9d7f56 30 reset.input();
DaniusKalv 0:ba450e9d7f56 31 reset.mode(PullUp);
DaniusKalv 0:ba450e9d7f56 32
DaniusKalv 0:ba450e9d7f56 33 while (!pc.readable()) {}
DaniusKalv 0:ba450e9d7f56 34
DaniusKalv 0:ba450e9d7f56 35 // pull ISP and nReset low
DaniusKalv 0:ba450e9d7f56 36 reset.output();
DaniusKalv 0:ba450e9d7f56 37 isp.output();
DaniusKalv 0:ba450e9d7f56 38 reset = 0;
DaniusKalv 0:ba450e9d7f56 39 isp = 0;
DaniusKalv 0:ba450e9d7f56 40
DaniusKalv 0:ba450e9d7f56 41 wait (0.1);
DaniusKalv 0:ba450e9d7f56 42
DaniusKalv 0:ba450e9d7f56 43 // Bring target out of reset
DaniusKalv 0:ba450e9d7f56 44 reset.input();
DaniusKalv 0:ba450e9d7f56 45 reset.mode(PullUp);
DaniusKalv 0:ba450e9d7f56 46
DaniusKalv 0:ba450e9d7f56 47 wait (0.1);
DaniusKalv 0:ba450e9d7f56 48
DaniusKalv 0:ba450e9d7f56 49 while (1) {
DaniusKalv 0:ba450e9d7f56 50
DaniusKalv 0:ba450e9d7f56 51 if (pc.readable()) {
DaniusKalv 0:ba450e9d7f56 52 target.putc(pc.getc());
DaniusKalv 0:ba450e9d7f56 53 led1 = !led1;
DaniusKalv 0:ba450e9d7f56 54 }
DaniusKalv 0:ba450e9d7f56 55
DaniusKalv 0:ba450e9d7f56 56 if (target.readable()) {
DaniusKalv 0:ba450e9d7f56 57 pc.putc(target.getc());
DaniusKalv 0:ba450e9d7f56 58 led2 = !led2;
DaniusKalv 0:ba450e9d7f56 59 }
DaniusKalv 0:ba450e9d7f56 60
DaniusKalv 0:ba450e9d7f56 61 }
DaniusKalv 0:ba450e9d7f56 62 }