Production Test Program (PTP) for the LPC4088 Experiment Base Board

Dependencies:   EALib I2S LM75B SDFileSystem mbed

Committer:
embeddedartists
Date:
Mon Sep 08 11:34:53 2014 +0000
Revision:
3:7ef908e84ae1
Parent:
2:2f4b7535ceb3
Added audio test. Shortened RGB LED startup sequence and added message for user when uSD card not inserted to explain the long delay.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
embeddedartists 2:2f4b7535ceb3 1 /*
embeddedartists 2:2f4b7535ceb3 2 * Copyright 2013 Embedded Artists AB
embeddedartists 2:2f4b7535ceb3 3 *
embeddedartists 2:2f4b7535ceb3 4 * Licensed under the Apache License, Version 2.0 (the "License");
embeddedartists 2:2f4b7535ceb3 5 * you may not use this file except in compliance with the License.
embeddedartists 2:2f4b7535ceb3 6 * You may obtain a copy of the License at
embeddedartists 2:2f4b7535ceb3 7 *
embeddedartists 2:2f4b7535ceb3 8 * http://www.apache.org/licenses/LICENSE-2.0
embeddedartists 2:2f4b7535ceb3 9 *
embeddedartists 2:2f4b7535ceb3 10 * Unless required by applicable law or agreed to in writing, software
embeddedartists 2:2f4b7535ceb3 11 * distributed under the License is distributed on an "AS IS" BASIS,
embeddedartists 2:2f4b7535ceb3 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
embeddedartists 2:2f4b7535ceb3 13 * See the License for the specific language governing permissions and
embeddedartists 2:2f4b7535ceb3 14 * limitations under the License.
embeddedartists 2:2f4b7535ceb3 15 */
embeddedartists 2:2f4b7535ceb3 16
embeddedartists 2:2f4b7535ceb3 17 /******************************************************************************
embeddedartists 2:2f4b7535ceb3 18 * Includes
embeddedartists 2:2f4b7535ceb3 19 *****************************************************************************/
embeddedartists 2:2f4b7535ceb3 20
embeddedartists 2:2f4b7535ceb3 21 #include "mbed.h"
embeddedartists 2:2f4b7535ceb3 22 #include "TestRGBLed.h"
embeddedartists 2:2f4b7535ceb3 23
embeddedartists 2:2f4b7535ceb3 24 /******************************************************************************
embeddedartists 2:2f4b7535ceb3 25 * Defines and typedefs
embeddedartists 2:2f4b7535ceb3 26 *****************************************************************************/
embeddedartists 2:2f4b7535ceb3 27
embeddedartists 2:2f4b7535ceb3 28 #define LED_ON 0
embeddedartists 2:2f4b7535ceb3 29 #define LED_OFF 1
embeddedartists 2:2f4b7535ceb3 30
embeddedartists 2:2f4b7535ceb3 31 #define BUTTON_PRESSED 0
embeddedartists 2:2f4b7535ceb3 32 #define BUTTON_RELEASED 1
embeddedartists 2:2f4b7535ceb3 33
embeddedartists 2:2f4b7535ceb3 34 /******************************************************************************
embeddedartists 2:2f4b7535ceb3 35 * Public Functions
embeddedartists 2:2f4b7535ceb3 36 *****************************************************************************/
embeddedartists 2:2f4b7535ceb3 37
embeddedartists 2:2f4b7535ceb3 38 TestRGBLed::TestRGBLed(PinName red, PinName green, PinName blue, PinName button) :
embeddedartists 2:2f4b7535ceb3 39 _redPin(red), _greenPin(green), _bluePin(blue), _button(button) {
embeddedartists 2:2f4b7535ceb3 40
embeddedartists 2:2f4b7535ceb3 41 _button.mode(PullUp);
embeddedartists 2:2f4b7535ceb3 42 }
embeddedartists 2:2f4b7535ceb3 43
embeddedartists 2:2f4b7535ceb3 44 void TestRGBLed::showStartupPattern() {
embeddedartists 2:2f4b7535ceb3 45 // Have to create the DigitalOut instances here (as opposed to
embeddedartists 2:2f4b7535ceb3 46 // create them in the constructor) as some of the pins are shared
embeddedartists 2:2f4b7535ceb3 47 // with other functionality on the LPC4088 Experiment Base Board
embeddedartists 2:2f4b7535ceb3 48 DigitalOut ledRed(_redPin);
embeddedartists 2:2f4b7535ceb3 49 DigitalOut ledGreen(_greenPin);
embeddedartists 2:2f4b7535ceb3 50 DigitalOut ledBlue(_bluePin);
embeddedartists 2:2f4b7535ceb3 51
embeddedartists 2:2f4b7535ceb3 52 ledRed = LED_OFF;
embeddedartists 2:2f4b7535ceb3 53 ledGreen = LED_OFF;
embeddedartists 2:2f4b7535ceb3 54 ledBlue = LED_OFF;
embeddedartists 2:2f4b7535ceb3 55
embeddedartists 3:7ef908e84ae1 56 #if 1
embeddedartists 3:7ef908e84ae1 57 for (int i = 0; i < 2; i++) {
embeddedartists 3:7ef908e84ae1 58 ledRed = LED_ON;
embeddedartists 3:7ef908e84ae1 59 wait(0.1);
embeddedartists 3:7ef908e84ae1 60 ledRed = LED_OFF;
embeddedartists 3:7ef908e84ae1 61 ledGreen = LED_ON;
embeddedartists 3:7ef908e84ae1 62 wait(0.1);
embeddedartists 3:7ef908e84ae1 63 ledGreen = LED_OFF;
embeddedartists 3:7ef908e84ae1 64 ledBlue = LED_ON;
embeddedartists 3:7ef908e84ae1 65 wait(0.1);
embeddedartists 3:7ef908e84ae1 66 ledBlue = LED_OFF;
embeddedartists 3:7ef908e84ae1 67 }
embeddedartists 3:7ef908e84ae1 68 #else
embeddedartists 2:2f4b7535ceb3 69 for(int i=0; i<10; i++)
embeddedartists 2:2f4b7535ceb3 70 {
embeddedartists 2:2f4b7535ceb3 71 ledRed = LED_ON;
embeddedartists 2:2f4b7535ceb3 72 wait(0.05);
embeddedartists 2:2f4b7535ceb3 73 ledRed = LED_OFF;
embeddedartists 2:2f4b7535ceb3 74 wait(0.05);
embeddedartists 2:2f4b7535ceb3 75 }
embeddedartists 2:2f4b7535ceb3 76 wait(0.5);
embeddedartists 2:2f4b7535ceb3 77 for(int i=0; i<10; i++)
embeddedartists 2:2f4b7535ceb3 78 {
embeddedartists 2:2f4b7535ceb3 79 ledGreen = LED_ON;
embeddedartists 2:2f4b7535ceb3 80 wait(0.05);
embeddedartists 2:2f4b7535ceb3 81 ledGreen = LED_OFF;
embeddedartists 2:2f4b7535ceb3 82 wait(0.05);
embeddedartists 2:2f4b7535ceb3 83 }
embeddedartists 2:2f4b7535ceb3 84 wait(0.5);
embeddedartists 2:2f4b7535ceb3 85 for(int i=0; i<10; i++)
embeddedartists 2:2f4b7535ceb3 86 {
embeddedartists 2:2f4b7535ceb3 87 ledBlue = LED_ON;
embeddedartists 2:2f4b7535ceb3 88 wait(0.05);
embeddedartists 2:2f4b7535ceb3 89 ledBlue = LED_OFF;
embeddedartists 2:2f4b7535ceb3 90 wait(0.05);
embeddedartists 2:2f4b7535ceb3 91 }
embeddedartists 2:2f4b7535ceb3 92 wait(0.5);
embeddedartists 3:7ef908e84ae1 93 #endif
embeddedartists 2:2f4b7535ceb3 94 }
embeddedartists 2:2f4b7535ceb3 95
embeddedartists 2:2f4b7535ceb3 96 void TestRGBLed::showStatus(bool success) {
embeddedartists 2:2f4b7535ceb3 97 // Have to create the DigitalOut instances here (as opposed to
embeddedartists 2:2f4b7535ceb3 98 // create them in the constructor) as some of the pins are shared
embeddedartists 2:2f4b7535ceb3 99 // with other functionality on the LPC4088 Experiment Base Board
embeddedartists 2:2f4b7535ceb3 100 DigitalOut ledRed(_redPin);
embeddedartists 2:2f4b7535ceb3 101 DigitalOut ledGreen(_greenPin);
embeddedartists 2:2f4b7535ceb3 102 DigitalOut ledBlue(_bluePin);
embeddedartists 2:2f4b7535ceb3 103
embeddedartists 2:2f4b7535ceb3 104 ledRed = LED_OFF;
embeddedartists 2:2f4b7535ceb3 105 ledGreen = LED_OFF;
embeddedartists 2:2f4b7535ceb3 106 ledBlue = LED_OFF;
embeddedartists 2:2f4b7535ceb3 107 if (success) {
embeddedartists 2:2f4b7535ceb3 108 ledGreen = LED_ON;
embeddedartists 2:2f4b7535ceb3 109 } else {
embeddedartists 2:2f4b7535ceb3 110 ledRed = LED_ON;
embeddedartists 2:2f4b7535ceb3 111 }
embeddedartists 2:2f4b7535ceb3 112 }
embeddedartists 2:2f4b7535ceb3 113
embeddedartists 2:2f4b7535ceb3 114 void TestRGBLed::waitForButtonClick() {
embeddedartists 2:2f4b7535ceb3 115 // wait for button to be pressed
embeddedartists 2:2f4b7535ceb3 116 while(_button.read() == BUTTON_RELEASED);
embeddedartists 2:2f4b7535ceb3 117
embeddedartists 2:2f4b7535ceb3 118 // small delay to avoid contact bounce
embeddedartists 2:2f4b7535ceb3 119 wait_ms(40);
embeddedartists 2:2f4b7535ceb3 120
embeddedartists 2:2f4b7535ceb3 121 // wait for button to be released
embeddedartists 2:2f4b7535ceb3 122 while(_button.read() == BUTTON_PRESSED);
embeddedartists 2:2f4b7535ceb3 123 }
embeddedartists 2:2f4b7535ceb3 124
embeddedartists 2:2f4b7535ceb3 125 bool TestRGBLed::runTest() {
embeddedartists 2:2f4b7535ceb3 126 // Have to create the DigitalOut instances here (as opposed to
embeddedartists 2:2f4b7535ceb3 127 // create them in the constructor) as some of the pins are shared
embeddedartists 2:2f4b7535ceb3 128 // with other functionality on the LPC4088 Experiment Base Board
embeddedartists 2:2f4b7535ceb3 129 DigitalOut ledRed(_redPin);
embeddedartists 2:2f4b7535ceb3 130 DigitalOut ledGreen(_greenPin);
embeddedartists 2:2f4b7535ceb3 131 DigitalOut ledBlue(_bluePin);
embeddedartists 2:2f4b7535ceb3 132
embeddedartists 3:7ef908e84ae1 133 //printf("LED Tests: All off. Press button to continue\n");
embeddedartists 3:7ef908e84ae1 134 //ledRed = LED_OFF;
embeddedartists 3:7ef908e84ae1 135 //ledGreen = LED_OFF;
embeddedartists 3:7ef908e84ae1 136 //ledBlue = LED_OFF;
embeddedartists 3:7ef908e84ae1 137 //waitForButtonClick();
embeddedartists 2:2f4b7535ceb3 138
embeddedartists 2:2f4b7535ceb3 139 printf("LED Tests: RED on. Press button to continue\n");
embeddedartists 2:2f4b7535ceb3 140 ledRed = LED_ON;
embeddedartists 2:2f4b7535ceb3 141 ledGreen = LED_OFF;
embeddedartists 2:2f4b7535ceb3 142 ledBlue = LED_OFF;
embeddedartists 2:2f4b7535ceb3 143 waitForButtonClick();
embeddedartists 2:2f4b7535ceb3 144
embeddedartists 2:2f4b7535ceb3 145 printf("LED Tests: GREEN on. Press button to continue\n");
embeddedartists 2:2f4b7535ceb3 146 ledRed = LED_OFF;
embeddedartists 2:2f4b7535ceb3 147 ledGreen = LED_ON;
embeddedartists 2:2f4b7535ceb3 148 ledBlue = LED_OFF;
embeddedartists 2:2f4b7535ceb3 149 waitForButtonClick();
embeddedartists 2:2f4b7535ceb3 150
embeddedartists 2:2f4b7535ceb3 151 printf("LED Tests: BLUE on. Press button to continue\n");
embeddedartists 2:2f4b7535ceb3 152 ledRed = LED_OFF;
embeddedartists 2:2f4b7535ceb3 153 ledGreen = LED_OFF;
embeddedartists 2:2f4b7535ceb3 154 ledBlue = LED_ON;
embeddedartists 2:2f4b7535ceb3 155 waitForButtonClick();
embeddedartists 2:2f4b7535ceb3 156
embeddedartists 3:7ef908e84ae1 157 //printf("LED Tests: All on. Press button to continue\n");
embeddedartists 3:7ef908e84ae1 158 //ledRed = LED_ON;
embeddedartists 3:7ef908e84ae1 159 //ledGreen = LED_ON;
embeddedartists 3:7ef908e84ae1 160 //ledBlue = LED_ON;
embeddedartists 3:7ef908e84ae1 161 //waitForButtonClick();
embeddedartists 2:2f4b7535ceb3 162
embeddedartists 2:2f4b7535ceb3 163 // Turn them off again
embeddedartists 2:2f4b7535ceb3 164 ledRed = LED_OFF;
embeddedartists 2:2f4b7535ceb3 165 ledGreen = LED_OFF;
embeddedartists 2:2f4b7535ceb3 166 ledBlue = LED_OFF;
embeddedartists 2:2f4b7535ceb3 167
embeddedartists 2:2f4b7535ceb3 168 return true;
embeddedartists 2:2f4b7535ceb3 169 }
embeddedartists 2:2f4b7535ceb3 170
embeddedartists 2:2f4b7535ceb3 171