Music Player for ARCH-PRO

Dependencies:   GT20L16J1Y_font TinyJpgDec mbed

SeeedStudio Arch Pro + aitendo TFT-LCD w/Touch panel => .wav File Player
LPC1768 + aitendo TFT-LCD w/Touch panel => .wav File Player
http://goji2100.com/
/media/uploads/Goji/017s.png

Revision:
0:6fa19738f62e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mGTP/DEV/mcuf24.cpp	Mon Sep 08 16:07:05 2014 +0000
@@ -0,0 +1,158 @@
+// --------------------------------------------------------
+//  mcuf24.c (c) Copyright 2013-2014 Goji.
+// --------------------------------------------------------
+
+#include "mbed.h"
+#include "mainconf.h"
+
+#include "mGTP.h"
+
+#if defined(mcufriend24)
+//======================
+void TPC_Init(void)
+{
+    // ADC settings
+    LPC_SC->PCONP        |=  (BIT1(12));    // PCADC: A/D converter (ADC) power/clock enable
+    LPC_SC->PCLKSEL0     &= ~(BIT3(24));    // PCLK_ADC: PCLK_peripheral 00 = CCLK/4
+    LPC_ADC->ADCR         =  ( 0 <<  0)     // SEL: Channels select 0 = No selected 
+                           | (50 <<  8)     // CLKDIV: PCLK max ~= 25MHz, /50 = 500KHz
+                           | ( 0 << 16)     // BURST: 0 = software control 
+                           | ( 0 << 17)     // CLKS: not applicable
+                           | ( 1 << 21)     // PDN: 1 = operational
+                           | ( 0 << 24)     // START: 0 = no start
+                           | ( 0 << 27);    // EDGE: not applicable
+}
+
+
+/*
+    DigitalInOut U_D6(p22);     // X+ (D6)  p22 = P2.4
+    DigitalInOut U_D7(p21);     // Y- (D7)  p21 = P2.5
+    AnalogIn     U_A1(p16);     // Y+ (A1)  p16 = P0.24 TFT_WR
+    AnalogIn     U_A2(p17);     // X- (A2)  p17 = P0.25 TFT_RS
+ */
+
+int16_t get_pX(void)
+{
+    int16_t adcv;
+
+    TFT_STOP();
+
+    // Y+ P0.24 Output High
+//  LPC_PINCON->PINSEL1  &= ~(BIT3(16));    // Set pin Function P0.24 for GPIO(00)
+//  LPC_GPIO0->FIODIR    |=  (BIT1(24));    // Set pin Direction P0.24 for Output(1)
+    LPC_GPIO0->FIOSET     =  (BIT1(24));    // Set pin High(1)
+
+    // Y- P2.5 Output Low
+//  LPC_PINCON->PINSEL4  &= ~(BIT3(10));    // Set pin Function P2.5 for GPIO(00)
+//  LPC_GPIO2->FIODIR    |=  (BIT1( 5));    // Set pin Direction P2.5 for Output(1)
+    LPC_GPIO2->FIOCLR     =  (BIT1( 5));    // Set pin Low(0)
+
+    // X+ P2.4 Input mode
+//  LPC_PINCON->PINSEL4  &= ~(BIT3( 8));    // Set pin Function P2.4 for GPIO(00)
+    LPC_GPIO2->FIODIR    &= ~(BIT1( 4));    // Set pin Direction P2.4 for Input(0)
+//  LPC_PINCON->PINMODE4 &= ~(BIT3( 8));    // P2.4 pull-down(11)
+    LPC_PINCON->PINMODE4 |=  (BIT3( 8));    // ..
+
+    // X- P0.25 ADC mode
+    LPC_PINCON->PINSEL1  &= ~(BIT3(18));    // Set pin function P0.25 for AD0.2(01)
+    LPC_PINCON->PINSEL1  |=  (BIT1(18));    // ..
+//  LPC_PINCON->PINMODE1 &= ~(BIT3(18));    // P0.25 pull-down(11)
+    LPC_PINCON->PINMODE1 |=  (BIT3(18));    // ..
+
+    LPC_ADC->ADCR        &= ~(0xFF);        // ADC Channel Clear
+    LPC_ADC->ADCR        |=  (BIT1( 2));    // ADC Channel AD0.2[P0.25]
+    for (int w = 0; w < 100; ) w++;         // Wait for stable
+    LPC_ADC->ADCR        |=  (BIT1(24));    // ADC Start
+    while (!(LPC_ADC->ADGDR & BIT1(31)));   // Wait DONE bit
+    LPC_ADC->ADCR        &= ~(BIT7(24));    // ADC Stop
+
+    adcv = (LPC_ADC->ADGDR >> 4) & 0x0FFF;
+
+    // X+ P2.4 Output Low
+//  LPC_PINCON->PINSEL4  &= ~(BIT3( 8));    // Set pin Function P2.4 for GPIO(00)
+    LPC_GPIO2->FIODIR    |=  (BIT1( 4));    // Set pin Direction P2.4 for Output(1)
+//  LPC_GPIO2->FIOSET     =  (BIT1( 4));    // Set pin Low(0)
+
+    // X- P0.25 Output Low
+    LPC_PINCON->PINSEL1  &= ~(BIT3(18));    // Set pin function P0.25 for GPIO(00)
+    LPC_GPIO0->FIODIR    |=  (BIT1(25));    // Set pin Direction P0.25 for Output(1)
+//  LPC_GPIO0->FIOCLR     =  (BIT1(25));    // Set pin Low(0)
+
+    // Y+ P0.24 Output Low
+//  LPC_PINCON->PINSEL1  &= ~(BIT3(16));    // Set pin Function P0.24 for GPIO(00)
+//  LPC_GPIO0->FIODIR    |=  (BIT1(24));    // Set pin Direction P0.24 for Output(1)
+//  LPC_GPIO0->FIOCLR     =  (BIT1(24));    // Set pin Low(0)
+
+    // Y- P2.5 Output Low
+//  LPC_PINCON->PINSEL4  &= ~(BIT3(10));    // Set pin Function P2.5 for GPIO(00)
+//  LPC_GPIO2->FIODIR    |=  (BIT1( 5));    // Set pin Direction P2.5 for Output(1)
+//  LPC_GPIO2->FIOCLR     =  (BIT1( 5));    // Set pin Low(0)
+
+    TFT_RUN();
+    return(adcv);
+}
+
+int16_t get_pY(void)
+{
+    uint16_t adcv;
+
+    TFT_STOP();
+
+    // X+ P2.4 Output High
+//  LPC_PINCON->PINSEL4  &= ~(BIT3( 8));    // Set pin Function P2.4 for GPIO(00)
+//  LPC_GPIO2->FIODIR    |=  (BIT1( 4));    // Set pin Direction P2.4 for Output(1)
+    LPC_GPIO2->FIOSET     =  (BIT1( 4));    // Set pin zHigh(1)
+
+    // X- P0.25 Output Low
+//  LPC_PINCON->PINSEL1  &= ~(BIT3(18));    // Set pin Function P0.25 for GPIO(00)
+//  LPC_GPIO0->FIODIR    |=  (BIT1(25));    // Set pin Direction P0.25 for Output(1)
+    LPC_GPIO0->FIOCLR     =  (BIT1(25));    // Set pin Low(0)
+
+    // Y- P2.5 Input
+//  LPC_PINCON->PINSEL4  &= ~(BIT3(10));    // Set pin Function P2.5 for GPIO(00)
+    LPC_GPIO2->FIODIR    &= ~(BIT1( 5));    // Set pin Direction P2.5 for input(0)
+//  LPC_PINCON->PINMODE4 &= ~(BIT3(10));    // P2.5 pull-down(11)
+    LPC_PINCON->PINMODE4 |=  (BIT3(10));    // ..
+
+    // Y+ P0.24 ADC mode
+    LPC_PINCON->PINSEL1  &= ~(BIT3(16));    // Set pin function P0.24 for AD0.1(01)
+    LPC_PINCON->PINSEL1  |=  (BIT1(16));    // ..
+//  LPC_PINCON->PINMODE1 &= ~(BIT3(16));    // P0.24 pull-down(11)
+    LPC_PINCON->PINMODE1 |=  (BIT3(16));    // ..
+
+    LPC_ADC->ADCR        &= ~(0xFF);        // ADC Channel Clear
+    LPC_ADC->ADCR        |=  (BIT1( 1));    // ADC Channel AD0.1[P0.24]
+    for (int w = 0; w < 100; ) w++;         // Wait for stable
+    LPC_ADC->ADCR        |=  (BIT1(24));    // ADC Start
+    while (!(LPC_ADC->ADGDR & BIT1(31)));   // Wait DONE bit
+    LPC_ADC->ADCR        &= ~(BIT7(24));    // ADC Stop
+
+    // mcufriend
+    adcv = 0x1000 - ((LPC_ADC->ADGDR >> 4) & 0x0FFF);
+
+    // X+ P2.4 Output Low
+//  LPC_PINCON->PINSEL4  &= ~(BIT3( 8));    // Set pin Function P2.4 for GPIO(00)
+//  LPC_GPIO2->FIODIR    |=  (BIT1( 4));    // Set pin Direction P2.4 for Output(1)
+//  LPC_GPIO2->FIOSET     =  (BIT1( 4));    // Set pin Low(0)
+
+    // X- P0.25 Output Low
+//  LPC_PINCON->PINSEL1  &= ~(BIT3(18));    // Set pin function P0.25 for GPIO(00)
+//  LPC_GPIO0->FIODIR    |=  (BIT1(25));    // Set pin Direction P0.25 for Output(1)
+//  LPC_GPIO0->FIOCLR     =  (BIT1(25));    // Set pin Low(0)
+
+    // Y+ P0.24 Output Low
+    LPC_PINCON->PINSEL1  &= ~(BIT3(16));    // Set pin Function P0.24 for GPIO(00)
+    LPC_GPIO0->FIODIR    |=  (BIT1(24));    // Set pin Direction P0.24 for Output(1)
+//  LPC_GPIO0->FIOCLR     =  (BIT1(24));    // Set pin Low(0)
+
+    // Y- P2.5 Output Low
+//  LPC_PINCON->PINSEL4  &= ~(BIT3(10));    // Set pin Function P2.5 for GPIO(00)
+    LPC_GPIO2->FIODIR    |=  (BIT1( 5));    // Set pin Direction P2.5 for Output(1)
+//  LPC_GPIO2->FIOCLR     =  (BIT1( 5));    // Set pin Low(0)
+
+    TFT_RUN();
+    return((int16_t)adcv);
+}
+
+//====================
+#endif