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/
mGTP/DEV/mcuf24.cpp@0:6fa19738f62e, 2014-09-08 (annotated)
- 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?
User | Revision | Line number | New 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 |