اطلاعیه

Collapse
No announcement yet.

طریقه استفاده از USART در XMEGA

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

    #16
    مشکل در یوزارت با studio

    کد:
    		  PORTC_DIRSET = PIN3_bm; // TXD0
    		  USARTC0_CTRLA = 0;
    		  USARTC0_CTRLC=USART_CMODE_ASYNCHRONOUS_gc| USART_PMODE_DISABLED_gc|USART_CHSIZE_8BIT_gc;
    		  USARTC0_BAUDCTRLB = 0x00;
    		  USARTC0_BAUDCTRLA=0x5f; //Baud Rate = 9600
    		  USARTC0_CTRLB=USART_TXEN_bm;
    		  
    	while(1)	 
    	{	
    		while (1)
    		{
    			 while( !(USARTC0_STATUS & USART_DREIF_bm));	//wait for data register empty
    			 USARTC0_DATA=e;
    			 _delay_ms(1000);		
    		}
    سلام
    این کد رو برای راه اندازی یوزارت به کار بردم اما چیزی ارسال نمیکنه
    آیا کد اشکالی داره؟

    اینم سمت گیرنده که از مگا 8 استفاده شده و با بسکام برنامه ی ساده ای برای اون نوشتم
    کریستال سمت فرستنده 14745600
    و در سمت گیرنده 11059200


    دیدگاه


      #17
      پاسخ : مشکل در یوزارت با studio

      کد:
      $regfile = "m8adef.dat"
      $crystal = 11059200
      $hwstack = 82
      $swstack = 82
      $framesize = 82
      $baud = 9600
      
      Config Serialin = Buffered , Size = 255
      Enable Interrupts
      
      
      Dim A As Byte
      
      Do
      If Ischarwaiting() = 1 Then
      A = Inkey()
      Lcd A
      Waitms 500
      Cls
      Clear Serialin
      End If
      Loop

      دیدگاه


        #18
        پاسخ : مشکل در یوزارت با studio

        سلام.

        اپلیکیشن نوت AVR1307 شامل یک کتابخانه بسیار کاربردی برای راه اندازی USART است که کار با آن هم بسیار ساده است. اگر با این کتابخانه کار کنید فکر نمی کنم به مشکلی بر بخورید. البته به نظر من اول برنامه سمت بسکام را با نرم افزار پروتئوس تست کنید.

        دیدگاه


          #19
          پاسخ : مشکل در یوزارت با studio

          نوشته اصلی توسط Rezash86
          اما چیزی ارسال نمیکنه
          در مرحله اول پین TXD در فرستنده و RXD در گیرنده را با اسیلوسکوپ مشاهده کنید و در صورت وجود سیگنال، صحت کدهای تنظیم کلاک در سمت XMEGA و تنظیمات فیوزبیت در سمت گیرنده را بررسی کنید.
          اوژن: به معنای افکننده و شکست دهنده است
          دانایی، توانایی است-Knowledge is POWER
          برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
          وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
          قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
          اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
          ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

          دیدگاه


            #20
            پاسخ : پاسخ : مشکل در یوزارت با studio

            نوشته اصلی توسط طراح
            در مرحله اول پین TXD در فرستنده و RXD در گیرنده را با اسیلوسکوپ مشاهده کنید و در صورت وجود سیگنال، صحت کدهای تنظیم کلاک در سمت XMEGA و تنظیمات فیوزبیت در سمت گیرنده را بررسی کنید.
            ممنون استاد گرامی
            بنده عادت داشتم در پروژه هایی که ارتباط 485 داشتم ابتدا پایه rx و tx را قبل از آی سی مربوطه(ورودی max 485) تست میکردم
            در صورت اطمینان از کارکرد صحیح بعد از آی سی(خروجی max 485) را تست میکردم .
            به توصیه دوستان از adm485 استفاده کردم
            تفاوت این دو آی سی، این مشکل را ایجاد کرد
            دلیل را نمیدانم اما این متد تست با adm485 هرگز پاسخ نداد
            خوشبختانه با تست عملکرد مدار، از خروجی آی سی adm485،متوجه کارکرد صحیح شدم.

            دیدگاه


              #21
              پاسخ : طریقه استفاده از USART در XMEGA

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

              کد:
              $regfile= "xm64a3udef.dat"
              $crystal= 14745600
              $hwstack = 512
              $swstack = 256
              $framesize = 256
              
              $lib "xmega.lib"
              $external _xmegafix_clear
              $external _xmegafix_rol_r1014
              
              
              Config Osc = Enabled , Pllosc = Disabled , Extosc = Enabled , 32khzosc = Disabled , Range = 12mhz_16mhz , Startup = Xtal_16kclk
              Config Sysclock = External , Prescalea = 1 , Prescalebc = 1_1
              
              dim l as byte
              
              config com7=9600 , mode = Asynchroneous , Parity = none , Stopbits = 1 , Databits = 8
              Open "COM7:" For Binary As #7
              
              Config Portf.3 = Output ' TX pin output
              Config Portf.2 = Input
              
              Config Priority = Static , Vector = Application , Lo = Enabled
              
              
              config PORTA= output
              config portb = OUTPUT
              
              On Usartf0_rxc Rxc_isr
              Enable Usartf0_rxc , Lo
              Enable Interrupts
              
              do
              
              loop
              
              
              Rxc_isr:
              porta=255
              l=inkey(#7)
              Return

              دیدگاه


                #22
                پاسخ : طریقه استفاده از USART در XMEGA

                در ضمن این کد رو با سی هم نوشتم اما جواب نگرفتم ..سخت افزارو چک کردم درسته
                کد:
                #include <avr/io.h>
                #include <util/delay.h>
                
                
                
                char usart_get(void)
                {
                	while(!(USARTF0_STATUS & USART_RXCIF_bm))
                	{
                		CCP=CCP_IOREG_gc;
                		WDT_CTRL=WDT_ENABLE_bm|WDT_PER_2KCLK_gc|WDT_CEN_bm;
                	}
                	return USARTF0_DATA;
                }
                
                
                
                int main(void)
                {
                	OSC_XOSCCTRL=OSC_FRQRANGE_12TO16_gc|OSC_XOSCSEL_XTAL_16KCLK_gc|OSC_XOSCPWR_bm;
                	OSC_CTRL|=OSC_XOSCEN_bm;
                	while(!(OSC_STATUS&OSC_XOSCRDY_bm));
                	CCP=CCP_IOREG_gc;
                	CLK_CTRL=CLK_SCLKSEL_XOSC_gc;
                	
                	unsigned char a=0;
                
                USARTF0_CTRLA=0x00;//////////////////////////////config for uart
                	USARTF0_CTRLB=USART_RXEN_bm;
                	USARTF0_CTRLC=USART_CMODE_ASYNCHRONOUS_gc|USART_PMODE_DISABLED_gc|USART_CHSIZE_8BIT_gc;
                	USARTF0_BAUDCTRLB=0;
                	USARTF0_BAUDCTRLA=95;
                	
                	CCP=CCP_IOREG_gc;
                	WDT_CTRL=WDT_ENABLE_bm|WDT_PER_2KCLK_gc|WDT_CEN_bm;
                	
                  while(1)
                  {
                		
                		CCP=CCP_IOREG_gc;
                		WDT_CTRL=WDT_ENABLE_bm|WDT_PER_2KCLK_gc|WDT_CEN_bm;
                		
                		a=usart_get();
                		
                		if (a==49)
                		{
                			PORTA_OUT=PIN0_bm|PIN1_bm|PIN2_bm|PIN3_bm|PIN4_bm|PIN5_bm|PIN6_bm|PIN7_bm;
                		}
                		
                		if (a==50)
                		{
                			PORTB_OUT=PIN0_bm|PIN1_bm|PIN2_bm|PIN3_bm|PIN4_bm|PIN5_bm|PIN6_bm|PIN7_bm;
                		}
                		
                		if (a==51)
                		{
                			PORTC_OUTSET=PIN0_bm|PIN1_bm|PIN2_bm|PIN3_bm|PIN4_bm|PIN5_bm|PIN6_bm|PIN7_bm;
                		}
                		
                		if (a==52)
                		{
                			PORTD_OUTSET=PIN0_bm|PIN1_bm|PIN2_bm|PIN3_bm|PIN4_bm|PIN5_bm|PIN6_bm|PIN7_bm;
                		}
                			     
                  }
                }
                سپاسگذارم

                دیدگاه


                  #23
                  پاسخ : طریقه استفاده از USART در XMEGA

                  توضیح نداده اید که چه منظوری از نوشتن کد دارید که انجام نمی شود؟
                  اوژن: به معنای افکننده و شکست دهنده است
                  دانایی، توانایی است-Knowledge is POWER
                  برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                  وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                  قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                  اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                  ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                  دیدگاه


                    #24
                    پاسخ : طریقه استفاده از USART در XMEGA

                    با تشکر
                    صرفا دریافت یک عدد
                    در بسکام موضوع حل شد
                    اما در سی هنوز مشکل پا برجاست...

                    دیدگاه


                      #25
                      پاسخ : طریقه استفاده از USART در XMEGA

                      برنامه ارسال رو هم میزاشتید.
                      دریافتو هم با وقفه انجام بدید بهتره
                      http://www.eca.ir/forum2/index.php/topic,10159.0.html
                      Engineering is the art of making what you want from things you can get.
                      اموزش DSP ...........................
                      http://www.eca.ir/forum2/index.php?topic=29824.0
                      http://www.eca.ir/forum2/index.php?topic=32324.0

                      دیدگاه


                        #26
                        پاسخ : طریقه استفاده از USART در XMEGA

                        میشه یک کتابخانه کاربردی و آسان برای استفاده از یوزارت معرفی نمائید تا مشکل من بطورکلی حل شود.
                        مثلا روش استفاده از asf در بخش یوزارت به چه صورت است?
                        سپاسگذارم

                        دیدگاه


                          #27
                          پاسخ : طریقه استفاده از USART در XMEGA

                          استفاده از ASF باعث پیچیدگی بیشتر در کد می شود و شخصا استفاده از آن را برای XMEGA توصیه نمی کنم. در کد موجود در لینک زیر برای رد و بدل کردن یک بایت با کامپیوتر به شکل ساده ای عمل شده و بررسی کنید که آیا پاسخگوی سوال شما هست یا نه:

                          knowledgeplus.ir/userfiles/PC_Temp_0.rar
                          اوژن: به معنای افکننده و شکست دهنده است
                          دانایی، توانایی است-Knowledge is POWER
                          برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                          وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                          قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                          اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                          ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                          دیدگاه


                            #28
                            پاسخ : طریقه استفاده از USART در XMEGA

                            با تشکر از شما
                            این کد فقط مربوط به بخش ارسال بایت میباشد
                            مشکل بنده در دریافت و ارسال کراکتر است
                            برای گام بهگام پیش رفتن کد بالا را برای دریافت یک بایت از کامپیوتر نوشتم تا پس از آن به سراغ کراکتر بروم
                            دقیقا با همین کد و با یوزارت سی جواب گرفتم
                            امابا یوزارت اف نه!!

                            دیدگاه


                              #29
                              پاسخ : طریقه استفاده از USART در XMEGA

                              در کدی که به عنوان دریافت نوشته اید، یک بخش زائد در مقداردهی دائمی به رجیستر WDT_CTRL وجود دارد که اگر منظور از آن ریست کردن watchdog timer است، روش آن به این ترتیب نیست. جدای از این مورد اگر کدی روی PORTC جواب می دهد، در صورت عدم وجود مشکل سخت افزاری باید روی سایر پورت ها هم جواب بدهد.
                              اوژن: به معنای افکننده و شکست دهنده است
                              دانایی، توانایی است-Knowledge is POWER
                              برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                              وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                              قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                              اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                              ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                              دیدگاه


                                #30
                                پاسخ : طریقه استفاده از USART در XMEGA

                                قصد بنده از کد مربوطه ریست کردن واچ داگ است
                                با مطالعه ای که از دیتا شیت داشتم به این نتیجه رسیده بودم
                                خوب با بسکام کار کردن میشود نتیجه اش همین
                                شما مشکلی در کد بالا میبینید؟
                                سخت افزار مورد استفاده atxmega64a3u میباشد
                                تنها موردی که شک داشتم وجود دو یوزارت صفر در یک پورت است که این هم با بررسی دیتا شیت و با توجه به اینکه تنها یک یوزارت در پورت f وجود دارد رد است..

                                دیدگاه

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