VIJAYKUMAR JATTI
/
memLCD-Demo
Test
main.cpp@0:bbf506cfcdd9, 2015-05-18 (annotated)
- Committer:
- vijaydew
- Date:
- Mon May 18 00:49:57 2015 +0000
- Revision:
- 0:bbf506cfcdd9
test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
vijaydew | 0:bbf506cfcdd9 | 1 | #include "LS013B7DH03.h" |
vijaydew | 0:bbf506cfcdd9 | 2 | #include "mbed_logo.h" |
vijaydew | 0:bbf506cfcdd9 | 3 | /******************** Define I/O *****************************/ |
vijaydew | 0:bbf506cfcdd9 | 4 | DigitalOut myled(LED1); |
vijaydew | 0:bbf506cfcdd9 | 5 | |
vijaydew | 0:bbf506cfcdd9 | 6 | #if defined(TARGET_EFM32ZG_STK3200) |
vijaydew | 0:bbf506cfcdd9 | 7 | #define SCK_PIN PC15 |
vijaydew | 0:bbf506cfcdd9 | 8 | #define MOSI_PIN PD7 |
vijaydew | 0:bbf506cfcdd9 | 9 | #define CS_PIN PE11 |
vijaydew | 0:bbf506cfcdd9 | 10 | #define EXTCOM_PIN PE10 |
vijaydew | 0:bbf506cfcdd9 | 11 | #define DISP_PIN PA10 |
vijaydew | 0:bbf506cfcdd9 | 12 | #define DISPSEL_PIN PA8 |
vijaydew | 0:bbf506cfcdd9 | 13 | #elif defined (TARGET_EFM32HG_STK3400) |
vijaydew | 0:bbf506cfcdd9 | 14 | #define SCK_PIN PE12 |
vijaydew | 0:bbf506cfcdd9 | 15 | #define MOSI_PIN PE10 |
vijaydew | 0:bbf506cfcdd9 | 16 | #define CS_PIN PA10 |
vijaydew | 0:bbf506cfcdd9 | 17 | #define EXTCOM_PIN PF3 |
vijaydew | 0:bbf506cfcdd9 | 18 | #define DISP_PIN PA8 |
vijaydew | 0:bbf506cfcdd9 | 19 | #define DISPSEL_PIN NC |
vijaydew | 0:bbf506cfcdd9 | 20 | #else |
vijaydew | 0:bbf506cfcdd9 | 21 | #error "undefined pinout" |
vijaydew | 0:bbf506cfcdd9 | 22 | #endif |
vijaydew | 0:bbf506cfcdd9 | 23 | |
vijaydew | 0:bbf506cfcdd9 | 24 | DigitalOut CS(CS_PIN); |
vijaydew | 0:bbf506cfcdd9 | 25 | DigitalOut EXTCOM(EXTCOM_PIN); |
vijaydew | 0:bbf506cfcdd9 | 26 | DigitalOut DISP(DISP_PIN); |
vijaydew | 0:bbf506cfcdd9 | 27 | DigitalOut DISP_SEL(DISPSEL_PIN); |
vijaydew | 0:bbf506cfcdd9 | 28 | |
vijaydew | 0:bbf506cfcdd9 | 29 | SPI displaySPI(MOSI_PIN, NC, SCK_PIN); |
vijaydew | 0:bbf506cfcdd9 | 30 | silabs::LS013B7DH03 display(&displaySPI, &CS, &EXTCOM); |
vijaydew | 0:bbf506cfcdd9 | 31 | |
vijaydew | 0:bbf506cfcdd9 | 32 | /******************** Define Timers *****************************/ |
vijaydew | 0:bbf506cfcdd9 | 33 | |
vijaydew | 0:bbf506cfcdd9 | 34 | LowPowerTicker timeKeeping; |
vijaydew | 0:bbf506cfcdd9 | 35 | |
vijaydew | 0:bbf506cfcdd9 | 36 | /***************** Define global variables **********************/ |
vijaydew | 0:bbf506cfcdd9 | 37 | #define INIT_SECONDS 17600 |
vijaydew | 0:bbf506cfcdd9 | 38 | |
vijaydew | 0:bbf506cfcdd9 | 39 | volatile uint32_t prevSeconds = INIT_SECONDS, seconds = INIT_SECONDS; |
vijaydew | 0:bbf506cfcdd9 | 40 | volatile bool refreshed = false; |
vijaydew | 0:bbf506cfcdd9 | 41 | |
vijaydew | 0:bbf506cfcdd9 | 42 | /***************** Define callback handlers *********************/ |
vijaydew | 0:bbf506cfcdd9 | 43 | void secondsCallback(void); |
vijaydew | 0:bbf506cfcdd9 | 44 | void refreshCallback(void); |
vijaydew | 0:bbf506cfcdd9 | 45 | |
vijaydew | 0:bbf506cfcdd9 | 46 | void secondsCallback(void) { |
vijaydew | 0:bbf506cfcdd9 | 47 | seconds++; |
vijaydew | 0:bbf506cfcdd9 | 48 | } |
vijaydew | 0:bbf506cfcdd9 | 49 | |
vijaydew | 0:bbf506cfcdd9 | 50 | /** |
vijaydew | 0:bbf506cfcdd9 | 51 | * Callback for refresh completion |
vijaydew | 0:bbf506cfcdd9 | 52 | */ |
vijaydew | 0:bbf506cfcdd9 | 53 | void refreshCallback(void) { |
vijaydew | 0:bbf506cfcdd9 | 54 | refreshed = true; |
vijaydew | 0:bbf506cfcdd9 | 55 | } |
vijaydew | 0:bbf506cfcdd9 | 56 | |
vijaydew | 0:bbf506cfcdd9 | 57 | /*************************** MAIN *******************************/ |
vijaydew | 0:bbf506cfcdd9 | 58 | int main() { |
vijaydew | 0:bbf506cfcdd9 | 59 | // Enable the LCD |
vijaydew | 0:bbf506cfcdd9 | 60 | DISP_SEL = 1; |
vijaydew | 0:bbf506cfcdd9 | 61 | DISP = 1; |
vijaydew | 0:bbf506cfcdd9 | 62 | |
vijaydew | 0:bbf506cfcdd9 | 63 | // Start generating the 1Hz call for keeping time |
vijaydew | 0:bbf506cfcdd9 | 64 | timeKeeping.attach(&secondsCallback, 1.0f); |
vijaydew | 0:bbf506cfcdd9 | 65 | |
vijaydew | 0:bbf506cfcdd9 | 66 | // Reset the LCD to a blank state. (All white) |
vijaydew | 0:bbf506cfcdd9 | 67 | refreshed = false; |
vijaydew | 0:bbf506cfcdd9 | 68 | display.clearImmediate(refreshCallback); |
vijaydew | 0:bbf506cfcdd9 | 69 | while(refreshed == false) sleep(); |
vijaydew | 0:bbf506cfcdd9 | 70 | |
vijaydew | 0:bbf506cfcdd9 | 71 | printf("Initialization done! \n"); |
vijaydew | 0:bbf506cfcdd9 | 72 | |
vijaydew | 0:bbf506cfcdd9 | 73 | // Apply mbed logo bitmap to the pixel buffer |
vijaydew | 0:bbf506cfcdd9 | 74 | display.showBMP((uint8_t*)mbed_enabled_logo, 128, 128, 0, 0); |
vijaydew | 0:bbf506cfcdd9 | 75 | display.printf("I like MBED!"); |
vijaydew | 0:bbf506cfcdd9 | 76 | |
vijaydew | 0:bbf506cfcdd9 | 77 | // Push update to the display |
vijaydew | 0:bbf506cfcdd9 | 78 | refreshed = false; |
vijaydew | 0:bbf506cfcdd9 | 79 | display.update(refreshCallback); |
vijaydew | 0:bbf506cfcdd9 | 80 | |
vijaydew | 0:bbf506cfcdd9 | 81 | // Sleep while doing the transmit |
vijaydew | 0:bbf506cfcdd9 | 82 | while(refreshed == false) sleep(); |
vijaydew | 0:bbf506cfcdd9 | 83 | |
vijaydew | 0:bbf506cfcdd9 | 84 | // Go into clock mode |
vijaydew | 0:bbf506cfcdd9 | 85 | while(1) { |
vijaydew | 0:bbf506cfcdd9 | 86 | sleep(); |
vijaydew | 0:bbf506cfcdd9 | 87 | |
vijaydew | 0:bbf506cfcdd9 | 88 | // In clock mode, only update once per second |
vijaydew | 0:bbf506cfcdd9 | 89 | if(prevSeconds != seconds) { |
vijaydew | 0:bbf506cfcdd9 | 90 | display.locate(4,15); |
vijaydew | 0:bbf506cfcdd9 | 91 | display.printf("%02d:%02d:%02d", (seconds / 1200) % 24, (seconds / 60) % 60, seconds % 60); |
vijaydew | 0:bbf506cfcdd9 | 92 | if(refreshed == true) { |
vijaydew | 0:bbf506cfcdd9 | 93 | prevSeconds = seconds; |
vijaydew | 0:bbf506cfcdd9 | 94 | refreshed = false; |
vijaydew | 0:bbf506cfcdd9 | 95 | display.update(refreshCallback); |
vijaydew | 0:bbf506cfcdd9 | 96 | } |
vijaydew | 0:bbf506cfcdd9 | 97 | } |
vijaydew | 0:bbf506cfcdd9 | 98 | } |
vijaydew | 0:bbf506cfcdd9 | 99 | } |