Mar. 14. 2018

Dependencies:   GraphicsFramework GR-PEACH_video LCD_shield_config AsciiFont R_BSP USBHost_custom

Committer:
dkato
Date:
Mon Jan 23 06:22:08 2017 +0000
Revision:
0:f5de229c9a00
Child:
5:49a61433290a
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkato 0:f5de229c9a00 1 #include "mbed.h"
dkato 0:f5de229c9a00 2 #include "DisplayBace.h"
dkato 0:f5de229c9a00 3 #include "rtos.h"
dkato 0:f5de229c9a00 4 #include "LCD_shield_config_4_3inch.h"
dkato 0:f5de229c9a00 5 #include "recognition_proc.h"
dkato 0:f5de229c9a00 6 #include "touch_proc.h"
dkato 0:f5de229c9a00 7
dkato 0:f5de229c9a00 8 static DisplayBase Display;
dkato 0:f5de229c9a00 9 static DigitalOut lcd_pwon(P7_15);
dkato 0:f5de229c9a00 10 static DigitalOut lcd_blon(P8_1);
dkato 0:f5de229c9a00 11 static PwmOut lcd_cntrst(P8_15);
dkato 0:f5de229c9a00 12 static Thread recognitionTask;
dkato 0:f5de229c9a00 13 static Thread touchTask;
dkato 0:f5de229c9a00 14
dkato 0:f5de229c9a00 15 /****** LCD ******/
dkato 0:f5de229c9a00 16 static void IntCallbackFunc_LoVsync(DisplayBase::int_type_t int_type) {
dkato 0:f5de229c9a00 17 /* Interrupt callback function for Vsync interruption */
dkato 0:f5de229c9a00 18 touch_lcd_int(int_type);
dkato 0:f5de229c9a00 19 }
dkato 0:f5de229c9a00 20
dkato 0:f5de229c9a00 21 static void Init_LCD_Display(void) {
dkato 0:f5de229c9a00 22 DisplayBase::graphics_error_t error;
dkato 0:f5de229c9a00 23 DisplayBase::lcd_config_t lcd_config;
dkato 0:f5de229c9a00 24 PinName lvds_pin[8] = {
dkato 0:f5de229c9a00 25 /* data pin */
dkato 0:f5de229c9a00 26 P5_7, P5_6, P5_5, P5_4, P5_3, P5_2, P5_1, P5_0
dkato 0:f5de229c9a00 27 };
dkato 0:f5de229c9a00 28
dkato 0:f5de229c9a00 29 lcd_pwon = 0;
dkato 0:f5de229c9a00 30 lcd_blon = 0;
dkato 0:f5de229c9a00 31 Thread::wait(100);
dkato 0:f5de229c9a00 32 lcd_pwon = 1;
dkato 0:f5de229c9a00 33 lcd_blon = 1;
dkato 0:f5de229c9a00 34
dkato 0:f5de229c9a00 35 Display.Graphics_Lvds_Port_Init(lvds_pin, 8);
dkato 0:f5de229c9a00 36
dkato 0:f5de229c9a00 37 /* Graphics initialization process */
dkato 0:f5de229c9a00 38 lcd_config = LcdCfgTbl_LCD_shield;
dkato 0:f5de229c9a00 39 error = Display.Graphics_init(&lcd_config);
dkato 0:f5de229c9a00 40 if (error != DisplayBase::GRAPHICS_OK) {
dkato 0:f5de229c9a00 41 printf("Line %d, error %d\n", __LINE__, error);
dkato 0:f5de229c9a00 42 mbed_die();
dkato 0:f5de229c9a00 43 }
dkato 0:f5de229c9a00 44
dkato 0:f5de229c9a00 45 /* Interrupt callback function setting (Vsync signal output from scaler 0) */
dkato 0:f5de229c9a00 46 error = Display.Graphics_Irq_Handler_Set(DisplayBase::INT_TYPE_S0_LO_VSYNC, 0, IntCallbackFunc_LoVsync);
dkato 0:f5de229c9a00 47 if (error != DisplayBase::GRAPHICS_OK) {
dkato 0:f5de229c9a00 48 printf("Line %d, error %d\n", __LINE__, error);
dkato 0:f5de229c9a00 49 mbed_die();
dkato 0:f5de229c9a00 50 }
dkato 0:f5de229c9a00 51 }
dkato 0:f5de229c9a00 52
dkato 0:f5de229c9a00 53 /****** main ******/
dkato 0:f5de229c9a00 54 int main(void) {
dkato 0:f5de229c9a00 55 /* Initialization of LCD */
dkato 0:f5de229c9a00 56 Init_LCD_Display();
dkato 0:f5de229c9a00 57
dkato 0:f5de229c9a00 58 /* Start recognition processing */
dkato 0:f5de229c9a00 59 recognitionTask.start(callback(recognition_task, &Display));
dkato 0:f5de229c9a00 60
dkato 0:f5de229c9a00 61 /* Start touch panel processing */
dkato 0:f5de229c9a00 62 touchTask.start(callback(touch_task, &Display));
dkato 0:f5de229c9a00 63
dkato 0:f5de229c9a00 64 /* Backlight on */
dkato 0:f5de229c9a00 65 Thread::wait(200);
dkato 0:f5de229c9a00 66 lcd_cntrst.write(1.0);
dkato 0:f5de229c9a00 67
dkato 0:f5de229c9a00 68 /* Wait for the threads to finish */
dkato 0:f5de229c9a00 69 recognitionTask.join();
dkato 0:f5de229c9a00 70 touchTask.join();
dkato 0:f5de229c9a00 71 }