EM260 SPI support. Really needs to be cleaned up.
[goodfet] / firmware / goodfet.c
index acfb7e3..b8d9e3d 100644 (file)
@@ -24,6 +24,31 @@ void init(){
   //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. */
+  
+  
+  //P5REN &= ~BIT0; //DO NOT UNCOMMENT.  Breaks GF1x support.
+  
+  //This will have to be cut soon.  Use pulling resistors instead.
+  /*
+  P5DIR |= BIT0;
+  P5OUT &= ~BIT0;
+  */
   
   //Setup clocks, unique to each '430.
   msp430_init_dco();
@@ -64,7 +89,7 @@ void handle(unsigned char app,
            unsigned char verb,
            unsigned long len){
   //debugstr("GoodFET");
-  P1OUT&=~1;
+  PLEDOUT&=~PLEDPIN;
   switch(app){
   case GLITCH:
     glitchhandle(app,verb,len);
@@ -75,14 +100,19 @@ void handle(unsigned char app,
   case SPI:
     spihandle(app,verb,len);
     break;
+  case NRF:
+    nrfhandle(app,verb,len);
+    break;
+  case CCSPI:
+    ccspihandle(app,verb,len);
+    break;
   case AVR:
     avrhandle(app,verb,len);
     break;
-#ifdef INSTALL_PIC_APP
   case PIC:
     pichandle(app,verb,len);
     break;
-#endif
+
   case I2CAPP:
     i2chandle(app,verb,len);
     break;
@@ -97,8 +127,8 @@ void handle(unsigned char app,
     break;
   case JTAG430: //Also JTAG430X, JTAG430X2
     //Revert this when X2 support returns.
-    //jtag430x2handle(app,verb,len);
-    jtag430handle(app,verb,len);
+    jtag430x2handle(app,verb,len);
+    //jtag430handle(app,verb,len);
     break;
   case SMARTCARD:
     smartcardhandle(app,verb,len);