اطلاعیه

Collapse
No announcement yet.

emwin روی برد اموزشی.حتما امتحان کنید

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    emwin روی برد اموزشی.حتما امتحان کنید

    سلام.دوستان اینم پروژه emwin برای برد اموزشی.بریزید رو برد حالش رو ببرید. تشکر یادت نشه
    پیوست شد

    فایلهای مربوط به تاچ رو از پیوست بگیرید و به پروژه اضافه کنید





    پروژه کامل emWin به صورت مولتی تسک با سیستم عامل RTX را از پیوست دریافت کنید.مشکل ارور ها حل شد.فقط یک ارور در فایل RTX_LIB
    در خط 52 وجود دارد که بجای کامه ای که میگه تعریف نشده عدد 4 رو بگدارید.علتش رو اگه کسی میدونه بگه
    فایل های پیوست شده

    #2
    پاسخ : بوت شدن emwin روی برد اموزشی.حتما امتحان کنید

    احسنت ! آفرین!
    اگه میشه لطف کنین و قدم به قدم کارایی که باید انجام داد رو توضیح بدین خیلی خیلی عالی میشه!
    بنده که سراپا مشتاقم!
    ممنون!!!! :job: :job: :job:
    در انتظار تو چشمم سپید گشت و غمی نیست
    اگر قبول تو افتد، فدای چشم سیاهت

    http://upload7.ir/images/83524254953910725183.gif

    دیدگاه


      #3
      پاسخ : بوت شدن emwin روی برد اموزشی.حتما امتحان کنید

      جواب گرفتی؟اموزش قدم به قدم emwin در سایت همسایه هست و دوباره توضیح دادنش کار بیهوده ای است.شما میتونید از اونجا پیگیری کنید

      دیدگاه


        #4
        پاسخ : بوت شدن emwin روی برد اموزشی.حتما امتحان کنید

        کسی از دوستان تاچ emwin رو راه انداخته؟البته با برد اموزشی که از adc میکرو استفاده شده

        دیدگاه


          #5
          پاسخ : emwin روی برد اموزشی.حتما امتحان کنید

          دارم روش کار میکنم!!!
          اگه میشه چندتا عکس از نتیجه کارتون بذارین!!!
          در انتظار تو چشمم سپید گشت و غمی نیست
          اگر قبول تو افتد، فدای چشم سیاهت

          http://upload7.ir/images/83524254953910725183.gif

          دیدگاه


            #6
            پاسخ : emwin روی برد اموزشی.حتما امتحان کنید

            aks nemikhad.kar kardan ham nemikhad amade hast age bord amozeshi dari faghat kafi berizish ro bord

            دیدگاه


              #7
              پاسخ : emwin روی برد اموزشی.حتما امتحان کنید

              سلام
              واقعا محشره تاحالا کسی این کار رو نکرده بود. واقعا قدردانی میکنم از شما دوست عزیز و کوشا
              توابع emWin روی این کار میکنه؟
              من میخاهم با تاچ کنترلر تاچ ال سی دی رو راه بندازم.خود میکرو واقعا ADC ضعیفی داره و با ADS راه اندازی دقیقتر و سریعتر میشه.
              کسی برنامه نمونه برای این کنترلر نداره؟
              [glow=red,2,300]برنامه هاي آموزشي تست شده براي NXP LPC1768 با توابع CMSIS[/glow]
              http://www.eca.ir/forum2/index.php?topic=76623.0

              دیدگاه


                #8
                پاسخ : emwin روی برد اموزشی.حتما امتحان کنید

                خواهش میکنم.تاچ رو وقت نکردم راه بندازم ولی روال کارش رو بلدم باید چکار کرد ولی چون با adc میکرو هست و تاچ خیلی ضعیفی هست رقبتی به این کار نداشتم.تمام توابع emwin رو میتونی اجرا کنی.میتونی با اون برنامه داخل خودش پنجره های جدید بسازی و اجرا کنی.

                دیدگاه


                  #9
                  پاسخ : emwin روی برد اموزشی.حتما امتحان کنید

                  کد:
                  void GUI_TOUCH_X_ActivateY(void) {	 //X+ H
                  	
                  		PINSEL_ConfigPin (0, 24, 0);	    //X+ pinsel ->GPIO
                  		LPC_GPIO0->DIR |= (1 << 24);				 //X = Gpio ->DIR
                  		LPC_GPIO0->SET |= (1 << 24);				 //X = gpio  ->set
                  	 //****************************************************//	
                  	
                  	
                   	//X- L
                  	 PINSEL_ConfigPin(0, 22, 0);
                  		LPC_GPIO0->DIR |= (1 << 22);				 //X = Gpio ->DIR				 
                  		LPC_GPIO0->CLR |= (1 << 22);				 
                  	 //****************************************************//
                  	
                  	
                  	 //Y- HZ
                  	 PINSEL_ConfigPin(0, 23, 0);
                  		LPC_GPIO0->DIR &= ~(1 << 23);
                  	 PINSEL_SetPinMode(0,23,0); 
                  	 
                  	 //******************************************************//
                  }
                  
                  void GUI_TOUCH_X_ActivateX(void) {
                  		//Y + set high as simple GPIO
                  		PINSEL_ConfigPin(0, 25, 0);	     //y+ pinsel ->GPIO
                  		LPC_GPIO0->DIR |= (1 << 25);				 //y = Gpio ->output
                  		LPC_GPIO0->SET |= (1 << 25);				 //y = gpio ->high
                  		
                  		 //Y- set low as simple GPIO 
                  		 PINSEL_ConfigPin(0, 23, 0);				 //y- pinsel ->GPIO
                  		 LPC_GPIO0->DIR |= (1 << 23);				 //y = Gpio ->output				 
                  		 LPC_GPIO0->CLR |= (1 << 23);			  //y = gpio ->clear 
                  		
                  		//X- HZ
                  		PINSEL_ConfigPin(0, 22, 0);
                  		LPC_GPIO0->DIR &= ~(1 << 22);
                  		PINSEL_SetPinMode(0,22,0); 
                  
                  }
                  
                  int GUI_TOUCH_X_MeasureX(void) {	
                  int ADC=0,count=0;
                  //	GUI_TOUCH_X_ActivateX();	
                     LPC_IOCON->P0_25 =1;      //select Y+ as an analong input
                  		 LPC_SC->PCONP  |= (1<<12);  //adc Power enable set PCADC
                  		 LPC_ADC->CR   = (1 <<2);  //select Chanle CH2 
                  		 LPC_ADC->CR   |= (500<<8);  //select ADC Clock here we set it 400Khz			149
                  		 LPC_ADC->CR   |= (1 <<21);		//set ADC in opration mode 
                  	
                  	for(count=0;count<ADC_AVRG;count++){
                  		 LPC_ADC->CR|= (1<<24);          //start ADC conversion   
                  		 while ((LPC_ADC->GDR &(1<<31))==0);      //wait untilconversion done		 
                  		 ADC +=((unsigned int )(LPC_ADC->GDR>>4)&0x0fff); 		
                  	}
                  
                   return ADC/ADC_AVRG;//
                  }
                  
                  int GUI_TOUCH_X_MeasureY(void) {
                  	
                  int ADC=0,count=0;	
                  //GUI_PID_STATE TouchState;
                  	//GUI_TOUCH_X_ActivateY();
                  	  LPC_IOCON->P0_24 =1;      //select Y+ as an analong input
                  		 LPC_SC->PCONP  |= (1<<12);  //adc Power enable set PCADC
                  		 LPC_ADC->CR   = (1 <<1);  //select Chanle CH1 
                  		 LPC_ADC->CR   |= (500<<8);  //select ADC Clock here we set it 400Khz  149
                  		 LPC_ADC->CR   |= (1 <<21);		//set ADC in opration mode 
                  
                  	for(count=0;count<ADC_AVRG;count++){
                  	  LPC_ADC->CR   |= (1<<24);          //start ADC conversion
                  		 while ((LPC_ADC->GDR &(1<<31))==0);      //wait untilconversion done		 
                  		 ADC +=((unsigned int )(LPC_ADC->GDR>>4)&0x0fff);
                  	}  
                  	
                   return ADC/ADC_AVRG;
                  }
                  فانکشن GUI_TOUCH_Exec(); باید در اینتراپت تایمر یا سیس تیک فراخونی بشه .

                  البته کد برای 1788 هست ولی بعید میدونم تفاوتی باشه .بازم خودتون بررسی کنید .
                  از جمله ی رفتگان این راه دراز
                  باز آمده ای کو که به ما گوید راز
                  هان بر سر این دو راهه از روی نیاز
                  چیزی نگذاری که نمی آیی باز

                  دیدگاه


                    #10
                    پاسخ : emwin روی برد اموزشی.حتما امتحان کنید

                    من با cmsis نوشتم ولی هنوز راه نیوفتاده.البته من از وقفه تایمر void SysTick_Handler(void) { استفاده کردم.میشه یا تایمر جدا گانه بیارم
                    کد:
                    void GUI_TOUCH_X_ActivateX(void) {
                     
                     PINSEL_CFG_Type PinCfg;
                     /*
                     * Init Y- pin as GPIO
                     */
                     PinCfg.Funcnum =  PINSEL_FUNC_0;
                     PinCfg.OpenDrain = PINSEL_PINMODE_NORMAL;
                     PinCfg.Pinmode =  PINSEL_PINMODE_TRISTATE;
                     PinCfg.Pinnum = _TCH_PIN_Yy;
                     PinCfg.Portnum = _TCH_PORT;
                     PINSEL_ConfigPin(&PinCfg);
                     /*
                     * Init Y+ pin as GPIO
                     */
                     PinCfg.Funcnum =  PINSEL_FUNC_0;
                     PinCfg.OpenDrain = PINSEL_PINMODE_NORMAL;
                     PinCfg.Pinmode =  PINSEL_PINMODE_TRISTATE;
                     PinCfg.Pinnum = _TCH_PIN_YY;
                     PinCfg.Portnum = _TCH_PORT;
                     PINSEL_ConfigPin(&PinCfg);
                     
                     GPIO_SetDir(0,0x02800000,1); // y+ , Y- 
                     GPIO_SetValue(0,0x02000000); // y+
                     GPIO_ClearValue(0,0x00800000);// y-
                    
                    }
                    
                    int GUI_TOUCH_X_MeasureY(void) {
                     PINSEL_CFG_Type PinCfg;
                     uint32_t adc_value;
                     
                     /*
                     * Init ADC pin connect
                     */
                     PinCfg.Funcnum =  PINSEL_FUNC_1;
                     PinCfg.OpenDrain = PINSEL_PINMODE_NORMAL;
                     PinCfg.Pinmode =  PINSEL_PINMODE_TRISTATE;
                     PinCfg.Pinnum =  _ADC_PORT_X;
                     PinCfg.Portnum =  _TCH_PORT;
                     PINSEL_ConfigPin(&PinCfg);
                     /*
                     * Match Pin As GPIO With Tristate
                     */
                     PinCfg.Funcnum =  PINSEL_FUNC_0;
                     PinCfg.OpenDrain = PINSEL_PINMODE_NORMAL;
                     PinCfg.Pinmode =  PINSEL_PINMODE_TRISTATE;
                     PinCfg.Pinnum = _TCH_PIN_Xx;
                     PinCfg.Portnum = _TCH_PORT;
                     PINSEL_ConfigPin(&PinCfg);
                     GPIO_SetDir(_TCH_PORT,0x01000000,0); 
                     
                     /* Configuration for ADC :
                     * ADC conversion rate = 200Khz
                     */
                     ADC_Init(LPC_ADC,_ADC_RATE );
                     ADC_IntConfig(LPC_ADC,_ADC_INT,DISABLE);
                               /* Make sure nobody else uses ADC */
                     ADC_ChannelCmd(LPC_ADC,_ADC_CHANNEL_Y,DISABLE);
                     ADC_ChannelCmd(LPC_ADC,_ADC_CHANNEL_X,ENABLE);
                     
                     GUI_X_Delay(5);
                     // Start conversion
                     ADC_StartCmd(LPC_ADC,ADC_START_NOW);
                     //Wait conversion complete
                     while (!(ADC_ChannelGetStatus(LPC_ADC,_ADC_CHANNEL_X,ADC_DATA_DONE)));
                     adc_value = ADC_ChannelGetData(LPC_ADC,_ADC_CHANNEL_X);
                    	       /* Release ADC */
                     // return (240*(3505-adc_value))/2955;
                     adc_value = adc_value>>2 ;
                     return adc_value ;
                    }
                    
                    int GUI_TOUCH_X_MeasureX(void) {
                     PINSEL_CFG_Type PinCfg;
                     uint32_t adc_value;
                     
                     /*
                     * Init ADC pin connect
                      */
                     PinCfg.Funcnum =  PINSEL_FUNC_1;
                     PinCfg.OpenDrain = PINSEL_PINMODE_NORMAL;
                     PinCfg.Pinmode =  PINSEL_PINMODE_TRISTATE;
                     PinCfg.Pinnum =  _ADC_PORT_Y;
                     PinCfg.Portnum =  _TCH_PORT;
                     PINSEL_ConfigPin(&PinCfg);
                     
                      /*
                     * Match Pin As GPIO With Tristate
                     */
                     PinCfg.Funcnum =  PINSEL_FUNC_0;
                     PinCfg.OpenDrain = PINSEL_PINMODE_NORMAL;
                     PinCfg.Pinmode =  PINSEL_PINMODE_TRISTATE;
                     PinCfg.Pinnum =  _TCH_PIN_Yy;
                     PinCfg.Portnum =  _TCH_PORT;
                     PINSEL_ConfigPin(&PinCfg);
                     GPIO_SetDir(_TCH_PORT,0x00800000,0); 
                     
                     /* Configuration for ADC :
                     * ADC conversion rate = 200Khz
                     */
                     ADC_Init(LPC_ADC, _ADC_RATE);
                     ADC_IntConfig(LPC_ADC,_ADC_INT,DISABLE);
                             /* Make sure nobody else uses ADC */
                     ADC_ChannelCmd(LPC_ADC,_ADC_CHANNEL_X,DISABLE);
                     ADC_ChannelCmd(LPC_ADC,_ADC_CHANNEL_Y,ENABLE);
                     
                     GUI_X_Delay(5);
                     // Start conversion
                     ADC_StartCmd(LPC_ADC,ADC_START_NOW);
                     //Wait conversion complete
                     while (!(ADC_ChannelGetStatus(LPC_ADC,_ADC_CHANNEL_Y,ADC_DATA_DONE)));
                     adc_value = ADC_ChannelGetData(LPC_ADC,_ADC_CHANNEL_Y);
                           /* Release ADC */
                    
                     adc_value = adc_value>>2 ;
                     return adc_value ;
                    }
                    
                    
                    void Touch_Scan(void) {
                     while (1){
                      GUI_TOUCH_Exec();
                      GUI_X_Delay(30);
                     }
                    }

                    دیدگاه


                      #11
                      پاسخ : emwin روی برد اموزشی.حتما امتحان کنید

                      کدی که گزاشتم خودم نوشتم و بدون مشکل کار میکنه
                      از جمله ی رفتگان این راه دراز
                      باز آمده ای کو که به ما گوید راز
                      هان بر سر این دو راهه از روی نیاز
                      چیزی نگذاری که نمی آیی باز

                      دیدگاه


                        #12
                        پاسخ : emwin روی برد اموزشی.حتما امتحان کنید

                        لطفا در این مورد توضیح بده.مشکل من روی این قسمت هست.شما یا چه وقفه ای این تابع رو صدا میزنید
                        فانکشن GUI_TOUCH_Exec(); باید در اینتراپت تایمر یا سیس تیک فراخونی بشه .
                        وقتی GUI_TOUCH_Exec رو میزارام تو اینتراپت تصویر ال سی دی قطع میشه.

                        دیدگاه


                          #13
                          پاسخ : emwin روی برد اموزشی.حتما امتحان کنید

                          نوشته اصلی توسط arvin2009
                          لطفا در این مورد توضیح بده.مشکل من روی این قسمت هست.شما یا چه وقفه ای این تابع رو صدا میزنید
                          فانکشن GUI_TOUCH_Exec(); باید در اینتراپت تایمر یا سیس تیک فراخونی بشه .
                          وقتی GUI_TOUCH_Exec رو میزارام تو اینتراپت تصویر ال سی دی قطع میشه.
                          داخل سیس تیک کالش کن .
                          سیس تیک رو مناسب تنظیم کن .

                          من این ماکرو رو برای تنظیم سیس تیک نوشتم

                          کد:
                           #define Period(X)			((X*SystemCoreClock)/1000)
                           #define ms						*1
                          در اینیشیال این رو بزار
                          کد:
                          	 if(SysTick_Config(Period(2 ms)))
                          		{
                          			Buzer_on;
                          			while(1);
                          		}
                          و در سیس تیک این
                          کد:
                           if (TouchCnt == TOUCH_TIMER_INTERVAL ) 
                          		 GUI_TOUCH_Exec();
                              TouchCnt = 0;	 
                            } else {
                            TouchCnt++;
                           }
                          از جمله ی رفتگان این راه دراز
                          باز آمده ای کو که به ما گوید راز
                          هان بر سر این دو راهه از روی نیاز
                          چیزی نگذاری که نمی آیی باز

                          دیدگاه


                            #14
                            پاسخ : emwin روی برد اموزشی.حتما امتحان کنید

                            تاچ با روش اول راه اندازی شد.روش دوم خیلی بد بود و موس پرش داشت.فقط یکم سرعت رفرش lcd پایین امده که دیگه نمیشه کاریش کرد.از adc داخلی همن قدر هم انتظار نمیرفت. :applause:

                            دیدگاه


                              #15
                              پاسخ : emwin روی برد اموزشی.حتما امتحان کنید

                              سلام
                              دلم نیامد اپلود نکنم و دوستان دیگه تمام راه های که من رفتم رو تکرار کنند.پوشه رو باز کنید و تمام فایلها رو جز main در پوشه کانفیگ بریزید و هر سه فایل رو به پروزه بالا اد کنید.منو رو هم در پوشه System قرار بدید یا اینکه تمام کد ها رو کپی بگیرید و در فایل main پیست کنید و از تاچ و موس لذت ببرید.موفق باشید

                              از این لینک دانلود کنید
                              http://up.persianscript.ir/uploads/4431-touch-eca.rar

                              دیدگاه

                              لطفا صبر کنید...
                              X