Example for the LPC4088 QSB Base Board

Dependencies:   EALib mbed

Committer:
embeddedartists
Date:
Wed Apr 09 09:46:04 2014 +0000
Revision:
1:6131a78e7e97
Parent:
0:7dd43900b657
Updated to latest version of EALib

Who changed what in which revision?

UserRevisionLine numberNew contents of line
embeddedartists 0:7dd43900b657 1 /******************************************************************************
embeddedartists 0:7dd43900b657 2 * Includes
embeddedartists 0:7dd43900b657 3 *****************************************************************************/
embeddedartists 0:7dd43900b657 4
embeddedartists 0:7dd43900b657 5 #include "mbed.h"
embeddedartists 0:7dd43900b657 6
embeddedartists 0:7dd43900b657 7 #include "LcdController.h"
embeddedartists 0:7dd43900b657 8 #include "EaLcdBoard.h"
embeddedartists 0:7dd43900b657 9 #include "sdram.h"
embeddedartists 0:7dd43900b657 10
embeddedartists 0:7dd43900b657 11 #include "GlobeDemo.h"
embeddedartists 0:7dd43900b657 12
embeddedartists 0:7dd43900b657 13
embeddedartists 0:7dd43900b657 14 /******************************************************************************
embeddedartists 0:7dd43900b657 15 * Typedefs and defines
embeddedartists 0:7dd43900b657 16 *****************************************************************************/
embeddedartists 0:7dd43900b657 17
embeddedartists 0:7dd43900b657 18 #define RESET_FLAG \
embeddedartists 0:7dd43900b657 19 do { \
embeddedartists 0:7dd43900b657 20 if (abortTest) { \
embeddedartists 0:7dd43900b657 21 abortTest = false; \
embeddedartists 0:7dd43900b657 22 wait(0.04); \
embeddedartists 0:7dd43900b657 23 } \
embeddedartists 0:7dd43900b657 24 } while(false)
embeddedartists 0:7dd43900b657 25
embeddedartists 0:7dd43900b657 26 /******************************************************************************
embeddedartists 0:7dd43900b657 27 * Local variables
embeddedartists 0:7dd43900b657 28 *****************************************************************************/
embeddedartists 0:7dd43900b657 29
embeddedartists 0:7dd43900b657 30 static InterruptIn buttonInterrupt(P2_10);
embeddedartists 0:7dd43900b657 31 static DigitalOut led(LED1);
embeddedartists 0:7dd43900b657 32
embeddedartists 0:7dd43900b657 33 /******************************************************************************
embeddedartists 0:7dd43900b657 34 * Global variables
embeddedartists 0:7dd43900b657 35 *****************************************************************************/
embeddedartists 0:7dd43900b657 36
embeddedartists 0:7dd43900b657 37 EaLcdBoard lcdBoard(P0_27, P0_28);
embeddedartists 0:7dd43900b657 38 bool abortTest = false;
embeddedartists 0:7dd43900b657 39
embeddedartists 0:7dd43900b657 40 /******************************************************************************
embeddedartists 0:7dd43900b657 41 * Interrupt functions
embeddedartists 0:7dd43900b657 42 *****************************************************************************/
embeddedartists 0:7dd43900b657 43
embeddedartists 0:7dd43900b657 44 void trigger() {
embeddedartists 0:7dd43900b657 45 abortTest = true;
embeddedartists 0:7dd43900b657 46 }
embeddedartists 0:7dd43900b657 47
embeddedartists 0:7dd43900b657 48 /******************************************************************************
embeddedartists 0:7dd43900b657 49 * Main
embeddedartists 0:7dd43900b657 50 *****************************************************************************/
embeddedartists 0:7dd43900b657 51
embeddedartists 0:7dd43900b657 52 int main (void) {
embeddedartists 0:7dd43900b657 53
embeddedartists 0:7dd43900b657 54 EaLcdBoard::Result result;
embeddedartists 0:7dd43900b657 55 LcdController::Config lcdCfg;
embeddedartists 0:7dd43900b657 56 uint32_t frameBuf1 = (uint32_t) SDRAM_BASE;
embeddedartists 0:7dd43900b657 57
embeddedartists 0:7dd43900b657 58 printf("EA LCD Board 3D Globe Demo\n");
embeddedartists 0:7dd43900b657 59
embeddedartists 0:7dd43900b657 60 // Listen for button presses
embeddedartists 0:7dd43900b657 61 buttonInterrupt.mode(PullUp);
embeddedartists 0:7dd43900b657 62 buttonInterrupt.fall(&trigger);
embeddedartists 0:7dd43900b657 63
embeddedartists 0:7dd43900b657 64 do {
embeddedartists 0:7dd43900b657 65 // framebuffer is put in SDRAM
embeddedartists 0:7dd43900b657 66 if (sdram_init() == 1) {
embeddedartists 0:7dd43900b657 67 printf("Failed to initialize SDRAM\n");
embeddedartists 0:7dd43900b657 68 break;
embeddedartists 0:7dd43900b657 69 }
embeddedartists 0:7dd43900b657 70
embeddedartists 0:7dd43900b657 71 result = lcdBoard.open(NULL, NULL);
embeddedartists 0:7dd43900b657 72 if (result != EaLcdBoard::Ok) {
embeddedartists 0:7dd43900b657 73 printf("Failed to open display: %d\n", result);
embeddedartists 0:7dd43900b657 74 break;
embeddedartists 0:7dd43900b657 75 }
embeddedartists 0:7dd43900b657 76
embeddedartists 0:7dd43900b657 77 result = lcdBoard.setFrameBuffer(frameBuf1);
embeddedartists 0:7dd43900b657 78 if (result != EaLcdBoard::Ok) {
embeddedartists 0:7dd43900b657 79 printf("Failed to activate frameBuffer: %d\n", result);
embeddedartists 0:7dd43900b657 80 break;
embeddedartists 0:7dd43900b657 81 }
embeddedartists 0:7dd43900b657 82
embeddedartists 0:7dd43900b657 83 result = lcdBoard.getLcdConfig(&lcdCfg);
embeddedartists 0:7dd43900b657 84 if (result != EaLcdBoard::Ok) {
embeddedartists 0:7dd43900b657 85 printf("Failed to get LCD configuration: %d\n", result);
embeddedartists 0:7dd43900b657 86 break;
embeddedartists 0:7dd43900b657 87 }
embeddedartists 0:7dd43900b657 88
embeddedartists 0:7dd43900b657 89 // Prepare 3 consequtive framebuffers (2 will be used for background buffers)
embeddedartists 0:7dd43900b657 90 memset((void*)frameBuf1, 0x0, lcdCfg.width*lcdCfg.height*2 *3);
embeddedartists 0:7dd43900b657 91
embeddedartists 0:7dd43900b657 92 GlobeDemo globeDemo((uint8_t *)frameBuf1, lcdCfg.width, lcdCfg.height);
embeddedartists 0:7dd43900b657 93 while (1) {
embeddedartists 0:7dd43900b657 94 globeDemo.run(400, 30);
embeddedartists 0:7dd43900b657 95 RESET_FLAG;
embeddedartists 0:7dd43900b657 96 }
embeddedartists 0:7dd43900b657 97 } while(0);
embeddedartists 0:7dd43900b657 98
embeddedartists 0:7dd43900b657 99 // Blink to indicate error
embeddedartists 0:7dd43900b657 100 while (1) {
embeddedartists 0:7dd43900b657 101 led = 0;
embeddedartists 0:7dd43900b657 102 wait(0.2);
embeddedartists 0:7dd43900b657 103 led = 1;
embeddedartists 0:7dd43900b657 104 wait(0.2);
embeddedartists 0:7dd43900b657 105 }
embeddedartists 0:7dd43900b657 106 }