Program to allow ISP programming of custom LPC1768 ICs on custom PCBs.

Dependencies:   mbed

Committer:
ms523
Date:
Sun Feb 19 10:33:26 2012 +0000
Revision:
0:fab931a2c13b

        

Who changed what in which revision?

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