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

Committer:
Goji
Date:
Mon Sep 08 16:07:05 2014 +0000
Revision:
0:6fa19738f62e
Music Player for ARCH-PRO

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Goji 0:6fa19738f62e 1 // --------------------------------------------------------
Goji 0:6fa19738f62e 2 // mcuf24.c (c) Copyright 2013-2014 Goji.
Goji 0:6fa19738f62e 3 // --------------------------------------------------------
Goji 0:6fa19738f62e 4
Goji 0:6fa19738f62e 5 #include "mbed.h"
Goji 0:6fa19738f62e 6 #include "mainconf.h"
Goji 0:6fa19738f62e 7
Goji 0:6fa19738f62e 8 #include "mGTP.h"
Goji 0:6fa19738f62e 9
Goji 0:6fa19738f62e 10 #if defined(mcufriend24)
Goji 0:6fa19738f62e 11 //======================
Goji 0:6fa19738f62e 12 void TPC_Init(void)
Goji 0:6fa19738f62e 13 {
Goji 0:6fa19738f62e 14 // ADC settings
Goji 0:6fa19738f62e 15 LPC_SC->PCONP |= (BIT1(12)); // PCADC: A/D converter (ADC) power/clock enable
Goji 0:6fa19738f62e 16 LPC_SC->PCLKSEL0 &= ~(BIT3(24)); // PCLK_ADC: PCLK_peripheral 00 = CCLK/4
Goji 0:6fa19738f62e 17 LPC_ADC->ADCR = ( 0 << 0) // SEL: Channels select 0 = No selected
Goji 0:6fa19738f62e 18 | (50 << 8) // CLKDIV: PCLK max ~= 25MHz, /50 = 500KHz
Goji 0:6fa19738f62e 19 | ( 0 << 16) // BURST: 0 = software control
Goji 0:6fa19738f62e 20 | ( 0 << 17) // CLKS: not applicable
Goji 0:6fa19738f62e 21 | ( 1 << 21) // PDN: 1 = operational
Goji 0:6fa19738f62e 22 | ( 0 << 24) // START: 0 = no start
Goji 0:6fa19738f62e 23 | ( 0 << 27); // EDGE: not applicable
Goji 0:6fa19738f62e 24 }
Goji 0:6fa19738f62e 25
Goji 0:6fa19738f62e 26
Goji 0:6fa19738f62e 27 /*
Goji 0:6fa19738f62e 28 DigitalInOut U_D6(p22); // X+ (D6) p22 = P2.4
Goji 0:6fa19738f62e 29 DigitalInOut U_D7(p21); // Y- (D7) p21 = P2.5
Goji 0:6fa19738f62e 30 AnalogIn U_A1(p16); // Y+ (A1) p16 = P0.24 TFT_WR
Goji 0:6fa19738f62e 31 AnalogIn U_A2(p17); // X- (A2) p17 = P0.25 TFT_RS
Goji 0:6fa19738f62e 32 */
Goji 0:6fa19738f62e 33
Goji 0:6fa19738f62e 34 int16_t get_pX(void)
Goji 0:6fa19738f62e 35 {
Goji 0:6fa19738f62e 36 int16_t adcv;
Goji 0:6fa19738f62e 37
Goji 0:6fa19738f62e 38 TFT_STOP();
Goji 0:6fa19738f62e 39
Goji 0:6fa19738f62e 40 // Y+ P0.24 Output High
Goji 0:6fa19738f62e 41 // LPC_PINCON->PINSEL1 &= ~(BIT3(16)); // Set pin Function P0.24 for GPIO(00)
Goji 0:6fa19738f62e 42 // LPC_GPIO0->FIODIR |= (BIT1(24)); // Set pin Direction P0.24 for Output(1)
Goji 0:6fa19738f62e 43 LPC_GPIO0->FIOSET = (BIT1(24)); // Set pin High(1)
Goji 0:6fa19738f62e 44
Goji 0:6fa19738f62e 45 // Y- P2.5 Output Low
Goji 0:6fa19738f62e 46 // LPC_PINCON->PINSEL4 &= ~(BIT3(10)); // Set pin Function P2.5 for GPIO(00)
Goji 0:6fa19738f62e 47 // LPC_GPIO2->FIODIR |= (BIT1( 5)); // Set pin Direction P2.5 for Output(1)
Goji 0:6fa19738f62e 48 LPC_GPIO2->FIOCLR = (BIT1( 5)); // Set pin Low(0)
Goji 0:6fa19738f62e 49
Goji 0:6fa19738f62e 50 // X+ P2.4 Input mode
Goji 0:6fa19738f62e 51 // LPC_PINCON->PINSEL4 &= ~(BIT3( 8)); // Set pin Function P2.4 for GPIO(00)
Goji 0:6fa19738f62e 52 LPC_GPIO2->FIODIR &= ~(BIT1( 4)); // Set pin Direction P2.4 for Input(0)
Goji 0:6fa19738f62e 53 // LPC_PINCON->PINMODE4 &= ~(BIT3( 8)); // P2.4 pull-down(11)
Goji 0:6fa19738f62e 54 LPC_PINCON->PINMODE4 |= (BIT3( 8)); // ..
Goji 0:6fa19738f62e 55
Goji 0:6fa19738f62e 56 // X- P0.25 ADC mode
Goji 0:6fa19738f62e 57 LPC_PINCON->PINSEL1 &= ~(BIT3(18)); // Set pin function P0.25 for AD0.2(01)
Goji 0:6fa19738f62e 58 LPC_PINCON->PINSEL1 |= (BIT1(18)); // ..
Goji 0:6fa19738f62e 59 // LPC_PINCON->PINMODE1 &= ~(BIT3(18)); // P0.25 pull-down(11)
Goji 0:6fa19738f62e 60 LPC_PINCON->PINMODE1 |= (BIT3(18)); // ..
Goji 0:6fa19738f62e 61
Goji 0:6fa19738f62e 62 LPC_ADC->ADCR &= ~(0xFF); // ADC Channel Clear
Goji 0:6fa19738f62e 63 LPC_ADC->ADCR |= (BIT1( 2)); // ADC Channel AD0.2[P0.25]
Goji 0:6fa19738f62e 64 for (int w = 0; w < 100; ) w++; // Wait for stable
Goji 0:6fa19738f62e 65 LPC_ADC->ADCR |= (BIT1(24)); // ADC Start
Goji 0:6fa19738f62e 66 while (!(LPC_ADC->ADGDR & BIT1(31))); // Wait DONE bit
Goji 0:6fa19738f62e 67 LPC_ADC->ADCR &= ~(BIT7(24)); // ADC Stop
Goji 0:6fa19738f62e 68
Goji 0:6fa19738f62e 69 adcv = (LPC_ADC->ADGDR >> 4) & 0x0FFF;
Goji 0:6fa19738f62e 70
Goji 0:6fa19738f62e 71 // X+ P2.4 Output Low
Goji 0:6fa19738f62e 72 // LPC_PINCON->PINSEL4 &= ~(BIT3( 8)); // Set pin Function P2.4 for GPIO(00)
Goji 0:6fa19738f62e 73 LPC_GPIO2->FIODIR |= (BIT1( 4)); // Set pin Direction P2.4 for Output(1)
Goji 0:6fa19738f62e 74 // LPC_GPIO2->FIOSET = (BIT1( 4)); // Set pin Low(0)
Goji 0:6fa19738f62e 75
Goji 0:6fa19738f62e 76 // X- P0.25 Output Low
Goji 0:6fa19738f62e 77 LPC_PINCON->PINSEL1 &= ~(BIT3(18)); // Set pin function P0.25 for GPIO(00)
Goji 0:6fa19738f62e 78 LPC_GPIO0->FIODIR |= (BIT1(25)); // Set pin Direction P0.25 for Output(1)
Goji 0:6fa19738f62e 79 // LPC_GPIO0->FIOCLR = (BIT1(25)); // Set pin Low(0)
Goji 0:6fa19738f62e 80
Goji 0:6fa19738f62e 81 // Y+ P0.24 Output Low
Goji 0:6fa19738f62e 82 // LPC_PINCON->PINSEL1 &= ~(BIT3(16)); // Set pin Function P0.24 for GPIO(00)
Goji 0:6fa19738f62e 83 // LPC_GPIO0->FIODIR |= (BIT1(24)); // Set pin Direction P0.24 for Output(1)
Goji 0:6fa19738f62e 84 // LPC_GPIO0->FIOCLR = (BIT1(24)); // Set pin Low(0)
Goji 0:6fa19738f62e 85
Goji 0:6fa19738f62e 86 // Y- P2.5 Output Low
Goji 0:6fa19738f62e 87 // LPC_PINCON->PINSEL4 &= ~(BIT3(10)); // Set pin Function P2.5 for GPIO(00)
Goji 0:6fa19738f62e 88 // LPC_GPIO2->FIODIR |= (BIT1( 5)); // Set pin Direction P2.5 for Output(1)
Goji 0:6fa19738f62e 89 // LPC_GPIO2->FIOCLR = (BIT1( 5)); // Set pin Low(0)
Goji 0:6fa19738f62e 90
Goji 0:6fa19738f62e 91 TFT_RUN();
Goji 0:6fa19738f62e 92 return(adcv);
Goji 0:6fa19738f62e 93 }
Goji 0:6fa19738f62e 94
Goji 0:6fa19738f62e 95 int16_t get_pY(void)
Goji 0:6fa19738f62e 96 {
Goji 0:6fa19738f62e 97 uint16_t adcv;
Goji 0:6fa19738f62e 98
Goji 0:6fa19738f62e 99 TFT_STOP();
Goji 0:6fa19738f62e 100
Goji 0:6fa19738f62e 101 // X+ P2.4 Output High
Goji 0:6fa19738f62e 102 // LPC_PINCON->PINSEL4 &= ~(BIT3( 8)); // Set pin Function P2.4 for GPIO(00)
Goji 0:6fa19738f62e 103 // LPC_GPIO2->FIODIR |= (BIT1( 4)); // Set pin Direction P2.4 for Output(1)
Goji 0:6fa19738f62e 104 LPC_GPIO2->FIOSET = (BIT1( 4)); // Set pin zHigh(1)
Goji 0:6fa19738f62e 105
Goji 0:6fa19738f62e 106 // X- P0.25 Output Low
Goji 0:6fa19738f62e 107 // LPC_PINCON->PINSEL1 &= ~(BIT3(18)); // Set pin Function P0.25 for GPIO(00)
Goji 0:6fa19738f62e 108 // LPC_GPIO0->FIODIR |= (BIT1(25)); // Set pin Direction P0.25 for Output(1)
Goji 0:6fa19738f62e 109 LPC_GPIO0->FIOCLR = (BIT1(25)); // Set pin Low(0)
Goji 0:6fa19738f62e 110
Goji 0:6fa19738f62e 111 // Y- P2.5 Input
Goji 0:6fa19738f62e 112 // LPC_PINCON->PINSEL4 &= ~(BIT3(10)); // Set pin Function P2.5 for GPIO(00)
Goji 0:6fa19738f62e 113 LPC_GPIO2->FIODIR &= ~(BIT1( 5)); // Set pin Direction P2.5 for input(0)
Goji 0:6fa19738f62e 114 // LPC_PINCON->PINMODE4 &= ~(BIT3(10)); // P2.5 pull-down(11)
Goji 0:6fa19738f62e 115 LPC_PINCON->PINMODE4 |= (BIT3(10)); // ..
Goji 0:6fa19738f62e 116
Goji 0:6fa19738f62e 117 // Y+ P0.24 ADC mode
Goji 0:6fa19738f62e 118 LPC_PINCON->PINSEL1 &= ~(BIT3(16)); // Set pin function P0.24 for AD0.1(01)
Goji 0:6fa19738f62e 119 LPC_PINCON->PINSEL1 |= (BIT1(16)); // ..
Goji 0:6fa19738f62e 120 // LPC_PINCON->PINMODE1 &= ~(BIT3(16)); // P0.24 pull-down(11)
Goji 0:6fa19738f62e 121 LPC_PINCON->PINMODE1 |= (BIT3(16)); // ..
Goji 0:6fa19738f62e 122
Goji 0:6fa19738f62e 123 LPC_ADC->ADCR &= ~(0xFF); // ADC Channel Clear
Goji 0:6fa19738f62e 124 LPC_ADC->ADCR |= (BIT1( 1)); // ADC Channel AD0.1[P0.24]
Goji 0:6fa19738f62e 125 for (int w = 0; w < 100; ) w++; // Wait for stable
Goji 0:6fa19738f62e 126 LPC_ADC->ADCR |= (BIT1(24)); // ADC Start
Goji 0:6fa19738f62e 127 while (!(LPC_ADC->ADGDR & BIT1(31))); // Wait DONE bit
Goji 0:6fa19738f62e 128 LPC_ADC->ADCR &= ~(BIT7(24)); // ADC Stop
Goji 0:6fa19738f62e 129
Goji 0:6fa19738f62e 130 // mcufriend
Goji 0:6fa19738f62e 131 adcv = 0x1000 - ((LPC_ADC->ADGDR >> 4) & 0x0FFF);
Goji 0:6fa19738f62e 132
Goji 0:6fa19738f62e 133 // X+ P2.4 Output Low
Goji 0:6fa19738f62e 134 // LPC_PINCON->PINSEL4 &= ~(BIT3( 8)); // Set pin Function P2.4 for GPIO(00)
Goji 0:6fa19738f62e 135 // LPC_GPIO2->FIODIR |= (BIT1( 4)); // Set pin Direction P2.4 for Output(1)
Goji 0:6fa19738f62e 136 // LPC_GPIO2->FIOSET = (BIT1( 4)); // Set pin Low(0)
Goji 0:6fa19738f62e 137
Goji 0:6fa19738f62e 138 // X- P0.25 Output Low
Goji 0:6fa19738f62e 139 // LPC_PINCON->PINSEL1 &= ~(BIT3(18)); // Set pin function P0.25 for GPIO(00)
Goji 0:6fa19738f62e 140 // LPC_GPIO0->FIODIR |= (BIT1(25)); // Set pin Direction P0.25 for Output(1)
Goji 0:6fa19738f62e 141 // LPC_GPIO0->FIOCLR = (BIT1(25)); // Set pin Low(0)
Goji 0:6fa19738f62e 142
Goji 0:6fa19738f62e 143 // Y+ P0.24 Output Low
Goji 0:6fa19738f62e 144 LPC_PINCON->PINSEL1 &= ~(BIT3(16)); // Set pin Function P0.24 for GPIO(00)
Goji 0:6fa19738f62e 145 LPC_GPIO0->FIODIR |= (BIT1(24)); // Set pin Direction P0.24 for Output(1)
Goji 0:6fa19738f62e 146 // LPC_GPIO0->FIOCLR = (BIT1(24)); // Set pin Low(0)
Goji 0:6fa19738f62e 147
Goji 0:6fa19738f62e 148 // Y- P2.5 Output Low
Goji 0:6fa19738f62e 149 // LPC_PINCON->PINSEL4 &= ~(BIT3(10)); // Set pin Function P2.5 for GPIO(00)
Goji 0:6fa19738f62e 150 LPC_GPIO2->FIODIR |= (BIT1( 5)); // Set pin Direction P2.5 for Output(1)
Goji 0:6fa19738f62e 151 // LPC_GPIO2->FIOCLR = (BIT1( 5)); // Set pin Low(0)
Goji 0:6fa19738f62e 152
Goji 0:6fa19738f62e 153 TFT_RUN();
Goji 0:6fa19738f62e 154 return((int16_t)adcv);
Goji 0:6fa19738f62e 155 }
Goji 0:6fa19738f62e 156
Goji 0:6fa19738f62e 157 //====================
Goji 0:6fa19738f62e 158 #endif