ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 9 از 9
  1. #1
    2010/12/27
    varamin
    51
    12

    خارج شدن از وقفه پورت سریال

    سلام به همگی
    من پورت یرسال راه اندازی کردم، وقتی وقفه اتفاق میافته و برنامه های تحت وقفه اجرا میشه دیگه از وقفه خارج نمیشه و به Main برنمیگرده که مابقی برنامه اجرا بشه
    لطفا راهنمایی کنید که کجای کار اشکال داره

    کد:
    #include <lpc17xx.h> 
    #include <stdio.h>
    #include "lpc17xx_pinsel.h"
    #include "lpc17xx_gpio.h"
    #include "lpc17xx_uart.h"
    #include "lpc17xx_pwm.h"
    #include "lpc17xx_clkpwr.h"
    #include "debug_frmwrk.h"
    
    int u0 = 0;
    uint8_t input0;
    
    
    void Delay (uint32_t Time)
    {
      uint32_t i;
      
      i = 0;
      while (Time--) {
        for (i = 0; i < 5000; i++);
      }
    }
    
    void UART2_IRQHandler(void)
    {
    	input0 = UART_ReceiveByte(LPC_UART2);
    	GPIO_SetValue(2,0x00001000);
    	Delay (2000);
    	GPIO_ClearValue( 2,0x00018000 );
    	u0=1;
    }
    
    int main(void)
    {
    	unsigned char u0;
    	
    	PINSEL_CFG_Type PinCfg2;
    //*********************************************************UART2 Configuration structure variable
    	UART_CFG_Type UARTConfigStruct2;						
    //*********************************************************UART2 FIFO configuration Structure variable
    	UART_FIFO_CFG_Type UARTFIFOConfigStruct2;
    //*********************************************************Initialize UART2 Pin Connect : P0.10 , P0.11 ( pins 48 & 49 Of Micro )
    	PinCfg2.Funcnum = 1; 
    	PinCfg2.OpenDrain = 0;
    	PinCfg2.Pinmode = 0;
    	PinCfg2.Pinnum = 10;
    	PinCfg2.Portnum = 0;
    	PINSEL_ConfigPin(&PinCfg2);
    	PinCfg2.Pinnum = 11;
    	PINSEL_ConfigPin(&PinCfg2);
    	
    	UARTConfigStruct2.Baud_rate = 38400;
    	UARTConfigStruct2.Databits = UART_DATABIT_8;
    	UARTConfigStruct2.Parity = UART_PARITY_NONE;
    	UARTConfigStruct2.Stopbits = UART_STOPBIT_1;
    
    	CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCUART2, ENABLE);
    //*********************************************************Initialize UART2 peripheral with given to corresponding parameter
    	UART_Init(LPC_UART2,&UARTConfigStruct2);
    	UART_FIFOConfigStructInit(&UARTFIFOConfigStruct2);
    //*********************************************************Initialize FIFO for UART2 peripheral
    	UART_FIFOConfig(LPC_UART2, &UARTFIFOConfigStruct2);
    	UART_IntConfig(LPC_UART2, UART_INTCFG_RBR, ENABLE);
    //*********************************************************Enable Interrupt for UART2 channel
    	NVIC_EnableIRQ(UART2_IRQn);
    //*********************************************************Enable UART2 Transmit
    	UART_TxCmd(LPC_UART2, ENABLE);
    
    //*********************************************************
    	GPIO_SetDir(2 ,0x00001800 ,1 );
    
    	UARTPuts_(LPC_UART2, "In the name of God");
    
    	while (UART_CheckBusy(LPC_UART2));
    	UARTPuts_(LPC_UART2, "Enter a char:");
    
    		while (1)
    		{
    			if (u0==1)
    			{
    				GPIO_SetValue( 2,0x00000800 );
    				Delay (5000);
    				FIO_ClearValue( 2,0x00018000 );
    				u0 = 0;
    			}
      }
    }
    یار من یوسف، نیا اینجا کسی یعقوب نیست *** لحظه ای چشمانشان از دوریت مرطوب نیست
    ای گل زیبای من، از غربتت اشکی نریخت *** نازنین، اینجا خدا هم پیششان محبوب نیست
    گر چه در هر جمعه ای زیبا، دعایت میکنند *** بهترینم، این دعاها جنسشان مرغوب نیست

    اللّهم عجّل لولیک الفرج
  2. #2
    2012/10/06
    تهران خيابان دکتر شريعتي
    48
    2

    پاسخ : خارج شدن از وقفه پورت سریال

    سلام، دوست عزیز کد تست شده LPC1788 رو برات گذاشتم. خودت بررسی کن !


    کد:
    void UART0_IRQHandler(void) {
    	
    	ch = UART_ReceiveByte(UART_0);
    	if (ch == 0x0D){
    	  u0 = 1;
    		 str1[i]= 0;
    	}
    	else{
    	 str1[i]= ch;
    		UARTPuts(UART_0, "\n\r your char is : ");
    		UART_SendByte(UART_0, ch);
    	 i++;
    	}
    }
    
    int main()
    {
    UART_CFG_Type x;	
    	
    Delay_init();
    
    PINSEL_ConfigPin(0,2,1); // set P0.2 As UART0-TX
    PINSEL_ConfigPin(0,3,1);	// set P0.3 As UART0-RX
    
    UART_ConfigStructInit(&x); //Getting Default UART config.
    
    UART_Init(UART_0,&x); //initialize UART_0
    
    UART_TxCmd(UART_0,ENABLE); //Enbale transmission on UART TxD pin
    /* UART INTERRUPT */
    UART_IntConfig(UART_0, UART_INTCFG_RBR, ENABLE);
    NVIC_EnableIRQ(UART0_IRQn);
    
    while(1);
    return 0;
    }
  3. #3
    2010/12/27
    varamin
    51
    12

    پاسخ : خارج شدن از وقفه پورت سریال

    نقل قول نوشته اصلی توسط م.پورجبار
    سلام، دوست عزیز کد تست شده LPC1788 رو برات گذاشتم. خودت بررسی کن !


    کد:
    void UART0_IRQHandler(void) {
    	
    	ch = UART_ReceiveByte(UART_0);
    	if (ch == 0x0D){
    	  u0 = 1;
    		 str1[i]= 0;
    	}
    	else{
    	 str1[i]= ch;
    		UARTPuts(UART_0, "\n\r your char is : ");
    		UART_SendByte(UART_0, ch);
    	 i++;
    	}
    }
    
    int main()
    {
    UART_CFG_Type x;	
    	
    Delay_init();
    
    PINSEL_ConfigPin(0,2,1); // set P0.2 As UART0-TX
    PINSEL_ConfigPin(0,3,1);	// set P0.3 As UART0-RX
    
    UART_ConfigStructInit(&x); //Getting Default UART config.
    
    UART_Init(UART_0,&x); //initialize UART_0
    
    UART_TxCmd(UART_0,ENABLE); //Enbale transmission on UART TxD pin
    /* UART INTERRUPT */
    UART_IntConfig(UART_0, UART_INTCFG_RBR, ENABLE);
    NVIC_EnableIRQ(UART0_IRQn);
    
    while(1);
    return 0;
    }
    ممنون از راهنمایی
    من خودم کدی که نوشتم با چند سمپل مختلف مقایسه کردم و به نظر من مشکلی نداره ولی...
    من همه مدل برنامه دیباگ کردم، قطعا و یقیناً مشکل اصلی من این هست که وقتی برنامه وارد وقفه میشه و عملیات های خواسته انجام میده، توی مرحله آخر که باید مقدار u0 از صفر به یک تغییر بده این اتفاق نمیافته و به همین دلیل هم برنامه از وقفه خارج نمیشه!!!
    لطفا تو این زمینه راهنمایی کنید
    یار من یوسف، نیا اینجا کسی یعقوب نیست *** لحظه ای چشمانشان از دوریت مرطوب نیست
    ای گل زیبای من، از غربتت اشکی نریخت *** نازنین، اینجا خدا هم پیششان محبوب نیست
    گر چه در هر جمعه ای زیبا، دعایت میکنند *** بهترینم، این دعاها جنسشان مرغوب نیست

    اللّهم عجّل لولیک الفرج
  4. #4
    2011/05/02
    22
    1

    پاسخ : خارج شدن از وقفه پورت سریال

    سلام.

    شما باید flag مربوط به وقفه ی سریال رو در روتین وقفه مجدد بخوانید تا پاک بشه.
    iir = LPC_UARTx->IIR;

    به جای x نام پورت مورد استفاده رو بنویسید.
    It is what it is

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت


    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  5. #5
    2010/12/27
    varamin
    51
    12

    پاسخ : خارج شدن از وقفه پورت سریال

    نقل قول نوشته اصلی توسط sharin
    سلام.

    شما باید flag مربوط به وقفه ی سریال رو در روتین وقفه مجدد بخوانید تا پاک بشه.
    iir = LPC_UARTx->IIR;

    به جای x نام پورت مورد استفاده رو بنویسید.
    بله، این کار را هم انجام دادم ولی جواب نداد
    یار من یوسف، نیا اینجا کسی یعقوب نیست *** لحظه ای چشمانشان از دوریت مرطوب نیست
    ای گل زیبای من، از غربتت اشکی نریخت *** نازنین، اینجا خدا هم پیششان محبوب نیست
    گر چه در هر جمعه ای زیبا، دعایت میکنند *** بهترینم، این دعاها جنسشان مرغوب نیست

    اللّهم عجّل لولیک الفرج
  6. #6
    2012/10/06
    تهران خيابان دکتر شريعتي
    48
    2

    پاسخ : خارج شدن از وقفه پورت سریال

    من پیشنهاد میدم همت کنید و با پورت های دیگه uart هم تست کنید !
  7. #7
    2010/12/27
    varamin
    51
    12

    پاسخ : خارج شدن از وقفه پورت سریال

    نقل قول نوشته اصلی توسط م.پورجبار
    من پیشنهاد میدم همت کنید و با پورت های دیگه uart هم تست کنید !
    ممنون از پیشنهادتون
    از پورت های دیگه هم استفاده کردم ولی مشکل حل نشد ( یعنی مشکل از پورت نبود )
    برای اینکه دوستان دیگه ای که احیانا بعدا به این پست سر میزنن یه چیزی دستگیرشون بشه، کد اصلاح شده و بودن اشکال اینجا قرار میدم
    که البته باید از دوستم آقای "لطفعلی زاده" تشکر کنم بابت راهنمایی
    یار من یوسف، نیا اینجا کسی یعقوب نیست *** لحظه ای چشمانشان از دوریت مرطوب نیست
    ای گل زیبای من، از غربتت اشکی نریخت *** نازنین، اینجا خدا هم پیششان محبوب نیست
    گر چه در هر جمعه ای زیبا، دعایت میکنند *** بهترینم، این دعاها جنسشان مرغوب نیست

    اللّهم عجّل لولیک الفرج
  8. #8
    2010/12/27
    varamin
    51
    12

    پاسخ : خارج شدن از وقفه پورت سریال

    کد اصلاح شد
    البته این کد برای تست نوشته شده، به محض دریافت از پورت سریال؛ وقفه سریال فعال میشه و دو تا LED روشن میشه و بعد از خروج از وقفه دوباره LED ها خاموش میشن
    کد:
    #include <lpc17xx.h> 
    #include "stdio.h"
    #include "lpc17xx_pinsel.h"
    #include "lpc17xx_gpio.h"
    #include "lpc17xx_uart.h"
    #include "lpc17xx_clkpwr.h"
    #include "debug_frmwrk.h"
    
    int u0 = 0;
    uint8_t input0;
    
    
    void Delay (uint32_t Time)
    {
      uint32_t i;
      
      i = 0;
      while (Time--) {
        for (i = 0; i < 5000; i++);
      }
    }
    
    void UART2_IRQHandler(void)
    {
    		t=UARTGetChar(LPC_UART2);
    		GPIO_SetValue(2,0x00001000);
    		Delay (1000);
    		GPIO_SetValue(2,0x00000800);
    		Delay (1000);
    		u0 = 1;
    }
    
    int main(void)
    {
    
    //*********************************************************UART2 Configuration structure variable
    	PINSEL_CFG_Type PinCfg2;
    	UART_CFG_Type UARTConfigStruct2;
    	UART_FIFO_CFG_Type UARTFIFOConfigStruct2;
    //*********************************************************PWM 0 Configuration Set
    	PINSEL_CFG_Type PinCfg;
     	PWM_TIMERCFG_Type PWMCfgDat;
     	PWM_MATCHCFG_Type PWMMatchCfgDat;
    //*********************************************************Initialize UART2 Pin Connect : P0.10 , P0.11 ( pins 48 & 49 Of Micro )
    	PinCfg2.Funcnum = 1; 
    	PinCfg2.OpenDrain = 0;
    	PinCfg2.Pinmode = 0;
    	PinCfg2.Pinnum = 10;
    	PinCfg2.Portnum = 0;
    	PINSEL_ConfigPin(&PinCfg2);
    	PinCfg2.Pinnum = 11;
    	PINSEL_ConfigPin(&PinCfg2);
    	
    	UARTConfigStruct2.Baud_rate = 38400;
    	UARTConfigStruct2.Databits = UART_DATABIT_8;
    	UARTConfigStruct2.Parity = UART_PARITY_NONE;
    	UARTConfigStruct2.Stopbits = UART_STOPBIT_1;
    
    //*********************************************************Initialize PWM 0 pin connect : p1.18 ( pin 32 Of Micro )
    	PinCfg.Funcnum = 2;
    	PinCfg.OpenDrain = 0;
    	PinCfg.Pinmode = 0;
    	PinCfg.Portnum = 1;
    	PinCfg.Pinnum = 18;
    	PINSEL_ConfigPin(&PinCfg);
    
    	CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCUART2, ENABLE);
    //*********************************************************Initialize UART2 peripheral with given to corresponding parameter
    	UART_Init(LPC_UART2,&UARTConfigStruct2);
    	UART_FIFOConfigStructInit(&UARTFIFOConfigStruct2);
    //*********************************************************Initialize FIFO for UART2 peripheral
    	UART_FIFOConfig(LPC_UART2, &UARTFIFOConfigStruct2);
    	UART_IntConfig(LPC_UART2, UART_INTCFG_RBR, ENABLE);
    //*********************************************************Enable Interrupt for UART2 channel
    	NVIC_EnableIRQ(UART2_IRQn);
    //*********************************************************Enable UART2 Transmit
    	UART_TxCmd(LPC_UART2, ENABLE);
    
    	
    //*********************************************************
    
    
    	GPIO_SetDir(2 ,0x00001800 ,1 );
    
    	while (UART_CheckBusy(LPC_UART2));
    	UARTPuts_(LPC_UART2, "In The Name Of God");
    
    		while (1)
    		{
    			if (u0==1)
    			{
    				GPIO_ClearValue(2,0x00001000);
    				Delay(1000);
    				GPIO_ClearValue(2,0x00000800);
    				u0 = 0;
    			}
    		}
    }
    یار من یوسف، نیا اینجا کسی یعقوب نیست *** لحظه ای چشمانشان از دوریت مرطوب نیست
    ای گل زیبای من، از غربتت اشکی نریخت *** نازنین، اینجا خدا هم پیششان محبوب نیست
    گر چه در هر جمعه ای زیبا، دعایت میکنند *** بهترینم، این دعاها جنسشان مرغوب نیست

    اللّهم عجّل لولیک الفرج
  9. #9
    2011/08/19
    39
    2

    پاسخ : خارج شدن از وقفه پورت سریال

    توی وقفه از تاخیر استفاده نکن...

    بهترین کار این هست که توی وقفه تنها مقدار رسیده از پورت سریال را توی یه بافر قرار بدی و برای خودت یک فلگ را فعال کنی، بعد توی main چک کن اگر اون فلگ یک شده بود به این معنی هست که یه داده رسیده اول فلگ را صفر کن و بعد داده رسیده را پردازش کن و کارهای مورد نظرت را انجام بده...

    درون تابع وقفه ایت:

    کد:
    MyRXFlag = 1;
    buff[x] = DATE;
    درون تابع main

    کد:
    while(1)
    {
    while(MyRXFlag == 0);
    MyRXFlag = 0;
    پردازش داده و عملیات مورد نظر
    }
نمایش نتایج: از 1 به 9 از 9

موضوعات مشابه

  1. وقفه برای پورت سریال نرم افزاری
    توسط amirehsan در انجمن میکروکنترلرهای AVR
    پاسخ: 4
    آخرين نوشته: 2019/12/17, 18:21
  2. وقفه پورت سریال
    توسط italia2006 در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2013/01/04, 15:46
  3. وقفه پورت سریال
    توسط ahmad2000 در انجمن NXP
    پاسخ: 0
    آخرين نوشته: 2012/02/08, 11:28
  4. فعال سازی وقفه پورت سریال در VB
    توسط Meysamhl در انجمن برنامه نویسی و اینترفیس
    پاسخ: 6
    آخرين نوشته: 2011/08/11, 22:53
  5. پاسخ: 5
    آخرين نوشته: 2011/06/30, 16:16

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •