Patch to goodfet firmware that drives P5.0 low during init. This is to
authorscottlivingston <scottlivingston@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Sun, 23 May 2010 17:52:52 +0000 (17:52 +0000)
committerscottlivingston <scottlivingston@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Sun, 23 May 2010 17:52:52 +0000 (17:52 +0000)
immediately reset any attached PIC chips (in the PIC app, P5.0 is
!MCLR).

An explanation is given in goodfet.c where this is done, and echoed
here.

At least dsPIC33F and PIC24H --and very likely other 16-bit PIC
families-- draw a large amount of current when running, especially
when using a fast clock: from 60 mA up to approx. 90 mA.  If the PIC
target begins to run before the client can request a new ICSP session,
which requires much less current (e.g., less than 2 mA), then the
MSP430 chip on the GoodFET will fail to start and the FTDI may have
trouble communicating with the client.  The latter likely relates to
the FTDI on-chip 3V3 regulator being specified up to only 50 mA.

git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@557 12e2690d-a6be-4b82-a7b7-67c4a43b65c8

firmware/goodfet.c

index f12e278..0d78ea3 100644 (file)
@@ -24,6 +24,25 @@ void init(){
   //LED out and on.
   PLEDDIR |= PLEDPIN;
   PLEDOUT &= ~PLEDPIN;
   //LED out and on.
   PLEDDIR |= PLEDPIN;
   PLEDOUT &= ~PLEDPIN;
+
+
+  /* P5.0 out and low; this is chosen for the PIC app (in which P5.0
+        is !MCLR) to ensure that an attached PIC chip, if present, is
+        immediately driven to reset state. A brief explanation of why this
+        is important follows.
+
+   At least dsPIC33F and PIC24H --and very likely other 16-bit PIC
+   families-- draw a large amount of current when running, especially
+   when using a fast clock: from 60 mA up to approx. 90 mA.  If the
+   PIC target begins to run before the client can request a new ICSP
+   session, which requires much less current (e.g., less than 2 mA),
+   then the MSP430 chip on the GoodFET will fail to start and the FTDI
+   may have trouble communicating with the client.  The latter likely
+   relates to the FTDI on-chip 3V3 regulator being specified up to
+   only 50 mA. */
+       P5DIR |= BIT0;
+       P5REN &= ~BIT0;
+       P5OUT &= ~BIT0;
   
   //Setup clocks, unique to each '430.
   msp430_init_dco();
   
   //Setup clocks, unique to each '430.
   msp430_init_dco();