Test

Dependencies:   MemoryLCD mbed

Committer:
vijaydew
Date:
Mon May 18 00:49:57 2015 +0000
Revision:
0:bbf506cfcdd9
test

Who changed what in which revision?

UserRevisionLine numberNew 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 }