Program for loading code into LPC1768 on a costum PCB
Dependencies: mbed
main.cpp@0:ba450e9d7f56, 2015-03-10 (annotated)
- Committer:
- DaniusKalv
- Date:
- Tue Mar 10 15:24:36 2015 +0000
- Revision:
- 0:ba450e9d7f56
In system programming code
Who changed what in which revision?
User | Revision | Line number | New 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 | } |