اطلاعیه

Collapse
No announcement yet.

راه اندازی uart با interrupt برای رشته

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

    راه اندازی uart با interrupt برای رشته

    سلام
    من برنامه راه اندازی uart با interrupt برای کاراکتر رو دارم و درست کار می کنه، برنامه رو برای رشته که تغییر میدم دیگه کار نمیکنه...
    برنامه مربوط به کاراکتر :
    کد:
     #include <LPC17xx.h>
    #include "uart.h"
    
    int u0=0, l=0;
    char input;
    
    void UART0_IRQHandler(){
    	input = UَART0_GetChar();
    	u0=1;
    	return;
    }
    	
    int main(){
    	UART0_Init();
    	
    	LPC_UART0->IER = 0x01; //interrupt
    	NVIC_SetPriority(UART0_IRQn,0);
    	NVIC_EnableIRQ(UART0_IRQn);
    	
    	while(1){		
    		if(u0==1){
       UART0_SendByte(input);			
    			u0=0;
      }			
    	}
    }
    ولی وقتی دستورات مربوط به رشته رو می نویسم هیچ رشته ای نمی گیره!
    اینم برمامه مربوط به رشته:
    کد:
    #include <LPC17xx.h>
    
    #include "uart.h"
    
    int u0=0, l=0;
    unsigned char input[20];
    char temp;
    
    void UART0_IRQHandler(){	
    	 l=0 ;
    		temp = U0_GetChar();
    		if(temp==0x0D){
    			u0=1;
    			input[l]=0;
    			return;
    		}
    		else{
      input[l] = temp ;
    		l++ ;
    		}
    }
    	
    int main(){
    	UART0_Init();
    	
    	LPC_UART0->IER = 0x01; //interrupt
    	NVIC_SetPriority(UART0_IRQn,0);
    	NVIC_EnableIRQ(UART0_IRQn);
    	
    	while(1){		
    		if(u0==1){		
    			UART0_SendString(input);
    			u0=0;
      }			
    	}
    }
    کسی اگه با یه همچین برنامه ای جواب گرفته ممنون میشم کمک کنه و مشکل رو بگه :biggrin:

    #2
    پاسخ : راه اندازی uart با interrupt برای رشته

    تابع U0_GetChar همون UART0_GetChar هست....... :biggrin:

    دیدگاه


      #3
      پاسخ : راه اندازی uart با interrupt برای رشته

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

      دیدگاه


        #4
        پاسخ : راه اندازی uart با interrupt برای رشته

        مشکل من حل شده...
        فقط اشتباه کارم این بود که متغیر L رو توی تابع UART0_IRQHandler() صفر می کردم!!
        در اصل باید در حلقه ی while و در( if (u0==1 زمانی که u0=0 می شود، متغیر L هم باید صفر شود :smile:

        دیدگاه

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