/** * \brief The main function will toggle between two images on * corresponding EPD depends on specified EPD size * * \note * EPD size: EPD_144 = 1.44 inch, EPD_200 = 2 inch, EPD_270 = 2.7 inch */ int main(void){ /** Initialize system clock and Xplained pro board */ sysclk_init(); irq_initialize_vectors(); cpu_irq_enable(); //sleepmgr_init(); // Optional board_init(); /** Initialize EPD hardware */ EPD_display_init(); for(;;) { /** User selects which EPD size to run demonstration by changing the * USE_EPD_Type in Atmel Studio Project properties under Symbols * The Image data arrays for each EPD size are defined at image_data.c */ #if(USE_EPD_Type==USE_EPD144) EPD_display_from_pointer(EPD_144,(uint8_t *)&image_array_144_2,(uint8_t *)&image_array_144_1); #elif(USE_EPD_Type==USE_EPD200) EPD_display_from_pointer(EPD_200,(uint8_t *)&image_array_200_2,(uint8_t *)&image_array_200_1); #elif(USE_EPD_Type==USE_EPD270) EPD_display_from_pointer(EPD_270,(uint8_t *)&image_array_270_2,(uint8_t *)&image_array_270_1); #endif /* The interval of two images alternatively change is 10 seconds */ delay_ms(10000); #if(USE_EPD_Type==USE_EPD144) EPD_display_from_pointer(EPD_144,(uint8_t *)&image_array_144_1,(uint8_t *)&image_array_144_2); #elif(USE_EPD_Type==USE_EPD200) EPD_display_from_pointer(EPD_200,(uint8_t *)&image_array_200_1,(uint8_t *)&image_array_200_2); #elif(USE_EPD_Type==USE_EPD270) EPD_display_from_pointer(EPD_270,(uint8_t *)&image_array_270_1,(uint8_t *)&image_array_270_2); #endif /* The interval of two images alternatively change is 10 seconds */ delay_ms(10000); } }
/** The main function will start toogling between two images on corresponding EPD * depends on specified EPD size or working with EPD Kit Tool */ int main(void) { /* Initialize system clock and TI LaunchPad board */ system_init(); /*flip image bytes*/ flip_image_bytes((uint8_t *)&image_array_270_1,(uint8_t *)&image_array_270_1); // flip_image_bytes((uint8_t *)&image_array_270_2,(uint8_t *)&image_array_270_2); /* Initialize EPD hardware */ EPD_display_init(); __enable_interrupt();//enable interrupts //__bis_SR_register(GIE); #if (defined EPD_KIT_TOOL_FUNCTIONS) /** if working with EPD Kit Tool ***************/ LED_init(); EPD_Kit_Tool_process_init(); for(;;) { EPD_Kit_tool_process_task(); } #else /* if showing two images alternatively ***************************************/ for(;;) { //puts("he");//TODO : remove debug /* User selects which EPD size to run demonstration by changing the * USE_EPD_Type in conf_EPD.h * The Image data arrays for each EPD size are predefined at image_data.c */ #if(USE_EPD_Type==EPD_144) EPD_display_from_pointer(EPD_144,(uint8_t *)&image_array_144_2,(uint8_t *)&image_array_144_1); #elif(USE_EPD_Type==EPD_200) EPD_display_from_pointer(EPD_200,(uint8_t *)&image_array_200_2,(uint8_t *)&image_array_200_1); #elif(USE_EPD_Type==EPD_270) /* Due to if loading two image arrays for 2.7", the code size will exceed the MSP430G2553 flash. * So the demo will load 1st image continuously.*/ #ifdef G2_Aurora_Ma EPD_display_from_pointer(EPD_270,(uint8_t *)&image_array_270_1,(uint8_t *)&image_array_270_1); #else EPD_display_from_pointer(EPD_270,image_array_270_1,image_array_270_1); #endif #elif(USE_EPD_Type==EPD_190) EPD_display_from_pointer(EPD_190,(uint8_t *)&image_array_190_2,(uint8_t *)&image_array_190_1); #elif(USE_EPD_Type==EPD_260) EPD_display_from_pointer(EPD_260,(uint8_t *)&image_array_260_2,(uint8_t *)&image_array_260_1); #endif /* The interval of two images alternatively change is 5 seconds */ delay_ms(5000); P2OUT |= BIT0; #if(USE_EPD_Type==EPD_144) EPD_display_from_pointer(EPD_144,(uint8_t *)&image_array_144_1,(uint8_t *)&image_array_144_2); #elif(USE_EPD_Type==EPD_200) EPD_display_from_pointer(EPD_200,(uint8_t *)&image_array_200_1,(uint8_t *)&image_array_200_2); #elif(USE_EPD_Type==EPD_270) /* Due to if loading two image arrays for 2.7", the code size will exceed the MSP430G2553 flash. * So the demo will load 1st image continuously.*/ #ifdef G2_Aurora_Ma EPD_display_from_pointer(EPD_270,(uint8_t *)&image_array_270_1,(uint8_t *)&image_array_270_1); #else // EPD_display_from_pointer(EPD_270,flipped_image_array_270_2,flipped_image_array_270_1); #endif #elif(USE_EPD_Type==EPD_190) EPD_display_from_pointer(EPD_190,(uint8_t *)&image_array_190_1,(uint8_t *)&image_array_190_2); #elif(USE_EPD_Type==EPD_260) EPD_display_from_pointer(EPD_260,(uint8_t *)&image_array_260_1,(uint8_t *)&image_array_260_2); #endif /* The interval of two images alternatively change is 5 seconds */ delay_ms(5000); P2OUT &= ~BIT0; } #endif }
// ***************************************************************************** // void SYSTEM_InitializeBoard(void) // ***************************************************************************** void SYSTEM_InitializeBoard(void) { // SPI initialization for Serial RAM const DRV_SPI_INIT_DATA SRAM_SPI_Init_Data = { 2, 3, 7, 1, SPI_BUS_MODE_1, 0}; // SPI initialization for EPD const DRV_SPI_INIT_DATA EPD_SPI_Init_Data = { 1, 3, 7, 1, SPI_BUS_MODE_1, 0}; // --------------------------------------------------------- // Make sure the display DO NOT flicker at start up // --------------------------------------------------------- DisplayBacklightConfig(); DisplayPowerConfig(); DisplayBacklightOff(); // --------------------------------------------------------- // ADC Explorer 16 Development Board Errata (work around 2) // RB15 should be output // --------------------------------------------------------- LATBbits.LATB15 = 0; TRISBbits.TRISB15 = 0; // --------------------------------------------------------- // EPD PicTail Plus Daughter Board 23K256 // SPI-RAM Device Chip Select pin // --------------------------------------------------------- MCHP_23K256_CS_TRIS = 0; MCHP_23K256_CS_LAT = 1; // --------------------------------------------------------- // EPD PicTail Plus Daughter // Board EPD Controller Device Chip Select pin // --------------------------------------------------------- DRV_EPD_SPI_CS_TRIS = 0; DRV_EPD_SPI_CS_LAT = 1; // --------------------------------------------------------- // SPI Port pins // --------------------------------------------------------- // spi-clock pin TRISFbits.TRISF6 = 0; // spi-output pin TRISFbits.TRISF8 = 0; // spi-intput pin TRISFbits.TRISF7 = 1; // initialize SPI driver DRV_RAM_23K256_Initialize((DRV_SPI_INIT_DATA*)&SRAM_SPI_Init_Data); // initialize EPD driver DRV_EPD_SPI_Initialize((DRV_SPI_INIT_DATA*)&EPD_SPI_Init_Data); // Initialize the e-paper (EPD) EPD_display_init(); // --------------------------------------------------------- // Initialize the Display Driver // --------------------------------------------------------- DRV_GFX_Initialize(); GFX_Initialize(); // Initialize the reference timer. SYSTEM_TickInit(); }