A compilation of code from different sources to provide support for a Playstation 3 controller via bluetooth on the m3pi.

Dependencies:   TextLCD mbed

Fork of mbed_TANK_PS3 by Yasuhiko YAMAMOTO

Revision:
2:895f70862eb9
Parent:
1:ae49669c5e92
--- a/USBHost.cpp	Sun Dec 30 05:16:28 2012 +0000
+++ b/USBHost.cpp	Tue Jan 01 02:10:08 2013 +0000
@@ -826,9 +826,9 @@
     }
 
     #define HOST_CLK_EN        (1<<0)
-    #define PORTSEL_CLK_EN    (1<<3)
-    #define AHB_CLK_EN        (1<<4)
-    #define CLOCK_MASK        (HOST_CLK_EN | PORTSEL_CLK_EN | AHB_CLK_EN)
+    #define OTG_CLK_EN         (1<<3)
+    #define AHB_CLK_EN         (1<<4)
+    #define CLOCK_MASK         (HOST_CLK_EN | OTG_CLK_EN | AHB_CLK_EN)
 
     #define  FRAMEINTERVAL        (12000-1)    // 1ms
     #define  DEFAULT_FMINTERVAL    ((((6 * (FRAMEINTERVAL - 210)) / 7) << 16) | FRAMEINTERVAL)
@@ -847,26 +847,28 @@
         // turn on power for USB
         LPC_SC->PCONP        |= (1UL<<31);
         // Enable USB host clock, port selection and AHB clock
-        LPC_USB->USBClkCtrl |= CLOCK_MASK;
+        LPC_USB->OTGClkCtrl |= CLOCK_MASK;
         // Wait for clocks to become available
-        while ((LPC_USB->USBClkSt & CLOCK_MASK) != CLOCK_MASK)
+        while ((LPC_USB->OTGClkSt & CLOCK_MASK) != CLOCK_MASK)
             ;
         
         //    We are a Host
         LPC_USB->OTGStCtrl |= 1;
-        LPC_USB->USBClkCtrl &= ~PORTSEL_CLK_EN;                // we don't need port selection clock until we do OTG
+        LPC_USB->OTGClkCtrl &= ~OTG_CLK_EN;                // we don't need port selection clock until we do OTG
+        
+        // configure USB pins D+/D-
+        LPC_PINCON->PINSEL1 &= ~((3<<26)|(3<<28));              // Set PINSEL1 bits 26:29 to 0
+        LPC_PINCON->PINSEL1 |=    ((1<<26)|(1<<28));            // Set PINSEL1 bits 26 and 28 to 1
         
-        // configure USB pins
-        LPC_PINCON->PINSEL1 &= ~((3<<26)|(3<<28));    
-        LPC_PINCON->PINSEL1 |=    ((1<<26)|(1<<28));            // USB D+/D-
-            
-        LPC_PINCON->PINSEL3 &= ~((3 << 6) | (3 << 22));        // USB_PPWR, USB_OVRCR
-        LPC_PINCON->PINSEL3 |= ((2 << 6) | (2 << 22));
+        // USB_PPWR, USB_OVRCR    
+        LPC_PINCON->PINSEL3 &= ~((3 << 6) | (3 << 22));         // Set PINSEL3 bits 6,:7 and 22:23 to 0
+        LPC_PINCON->PINSEL3 |= ((2 << 6) | (2 << 22));          // Set PINSEL3 bits 7 and 23 to 1
         
-        LPC_PINCON->PINSEL4 &= ~(3 << 18);                    // USB_CONNECT
-        LPC_PINCON->PINSEL4 |= (1 << 18);
+        // USB_CONNECT
+        LPC_PINCON->PINSEL4 &= ~(3 << 18);                      // Set PINSEL4 bits 18:19 to 0
+        LPC_PINCON->PINSEL4 |= (1 << 18);                       // Set PINSEL4 bits 18 to 1
 
-        //    Reset OHCI block
+        //    Reset OHCI block 
         LPC_USB->HcControl         = 0;
         LPC_USB->HcControlHeadED = 0;
         LPC_USB->HcBulkHeadED     = 0;