اطلاعیه

Collapse
No announcement yet.

usart

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

    usart

    سلام

    چرا توی دریافت ff داریم ؟
    با سرعت بالا تر هم خطا داره ؟

    http://www.xum.ir/images/2014/04/03/2014-04-03013837.png


    برنامه
    کد:
    #include <ATMEL/IOAT91SAM7S64.H>
    void wait ();
    void end ();
    void main ()
    {
     AT91C_BASE_CKGR->CKGR_MOR=0XF01;
     AT91C_BASE_CKGR->CKGR_PLLR=0X2903FFC;
     AT91C_BASE_PMC->PMC_MCKR=0X3;
     AT91C_BASE_PMC->PMC_SCER=0X1;
     
    AT91C_BASE_PIOA->PIO_PDR=(1<<21|1<<22);
    AT91C_BASE_PMC->PMC_PCER= (1<<7);
    
    AT91C_BASE_US1->US_CR=(1<<6);
    AT91C_BASE_US1->US_MR=0XD0;
    AT91C_BASE_US1->US_BRGR=0X27;
    while(3)
    {
    wait();
    wait();
    wait();
    wait();
    wait();
    wait();
    wait();
    wait();
    wait();
    wait();
    AT91C_BASE_US1->US_THR=0X41;
    wait();
    AT91C_BASE_US1->US_THR=0X54;
    }
    }
    
    
    void end ()
    {
     while (2)
     {
     }
    }
    
    
    void wait ()
    {
     unsigned int a;
     for(a=0;a<100000;a++);
    }

    #2
    پاسخ : دریافت usart

    این برنامه چیه؟
    از کجا آوردی؟
    توی انجمن برنامه ها و هدرهای خوبی برای راه اندازی USART هست. اونا رو چرا تست نمیکنی؟
    زندگی یعنی امید و حرکت
    کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
    سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
    برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
    به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

    دیدگاه


      #3
      پاسخ : دریافت usart

      برای دریافت همزمانی (وقتی چیری به میکرو ارسال شد همون موقع بخونتش) چطوریه ؟
      بعد اگه ما یه متغیر 32 بیتی رو بخونیم بخوایم بفرستیمش با usart چطوری باید 4 تا 8 بیتی درست کنیم ؟

      دیدگاه


        #4
        پاسخ : دریافت usart

        نوشته اصلی توسط erfan m
        برای دریافت همزمانی (وقتی چیری به میکرو ارسال شد همون موقع بخونتش) چطوریه ؟
        بعد اگه ما یه متغیر 32 بیتی رو بخونیم بخوایم بفرستیمش با usart چطوری باید 4 تا 8 بیتی درست کنیم ؟
        باید اینتراپت وقفه رو فعال کنی تا وقتی چیزی اومد بری تو وقفه و هر چی اومده رو بخونی
        بله باید 4 تا 8 تایی کنی
        زندگی یعنی امید و حرکت
        کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
        سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
        برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
        به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

        دیدگاه


          #5
          پاسخ : دریافت usart

          چطوری 8 بیت کنم ؟
          باید اینتراپت وقفه رو فعال کنی تا وقتی چیزی اومد بری تو وقفه و هر چی اومده رو بخونی
          ماکه فقط ریجستر داریم توی avr برچسب می نوشتیم می رفت به برچسبه

          بعد چرا توی کتاب مرجع کامل میکروکنترولرهای arm سری at91 از زبان سی چیزی نگفته :cry2:

          دیدگاه


            #6
            پاسخ : دریافت usart

            نوشته اصلی توسط erfan m
            چطوری 8 بیت کنم ؟
            ماکه فقط ریجستر داریم توی avr برچسب می نوشتیم می رفت به برچسبه

            بعد چرا توی کتاب مرجع کامل میکروکنترولرهای arm سری at91 از زبان سی چیزی نگفته :cry2:
            خب مگه نمیگی داده ای داری که 32 بیت هست؟
            8 تا 8تا جداش کن. مثلا a یک عدد 32 بیتی هست و میخایم توی b1,b2,b3,b4 بریزیم
            کد:
            b1 = a & 0x000000FF;
            b2 = (a & 0x0000FF00) >> 8
            b2 = (a & 0x00FF0000) >> 16
            b2 = (a & 0xFF000000) >> 24
            و اما وقفه. ساختار وقفه در ARM خیلی متفاوته به نسبت AVR چون ی واحد سراری داره برا کنترل وقفه و توی هر قسمت (مثلا USART) هم ی رجیستر داره برای فعال سازی
            چقدر آرم کار کردی؟
            زندگی یعنی امید و حرکت
            کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
            سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
            برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
            به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

            دیدگاه


              #7
              پاسخ : دریافت usart

              هیچی arm :mrgreen:


              توابع c رو از کجا یاد بگیر مثلا & نمی دونم چیه ؟ مجله pwm هم کامل نیست

              دیدگاه


                #8
                پاسخ : دریافت usart

                نوشته اصلی توسط erfan m
                هیچی arm :mrgreen:


                توابع c رو از کجا یاد بگیر مثلا & نمی دونم چیه ؟ مجله pwm هم کامل نیست
                خب
                ببین برای توابع سیی برو فصل اول متاب جعفرنژاد قوی رو بخون تمام اینا اومده.
                محض دونستنت & میاد بیت به بیت عمل AND رو اجرا میکنه
                از کتاب جعفرنژاد شروع کن تا به بقیش برسیم
                زندگی یعنی امید و حرکت
                کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
                سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
                برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
                به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

                دیدگاه


                  #9
                  پاسخ : دریافت usart

                  مشکل اول حل شد دیگه FF نمیاد مشکل این بود بیت توازن میفرستاد بعد گیرنده هم بیت توازن نمی گرفت غیر فعالش کردم

                  کتابه رو هم خریدم اکثر جاهاش IAR
                  برای اینکه بیشتر اشنا بشم می خوام یه پروژه انجام بدم که انگیزه باشه انجام بدم

                  دیدگاه


                    #10
                    پاسخ : پاسخ : دریافت usart

                    نوشته اصلی توسط erfan m
                    مشکل اول حل شد دیگه FF نمیاد مشکل این بود بیت توازن میفرستاد بعد گیرنده هم بیت توازن نمی گرفت غیر فعالش کردم

                    کتابه رو هم خریدم اکثر جاهاش IAR
                    برای اینکه بیشتر اشنا بشم می خوام یه پروژه انجام بدم که انگیزه باشه انجام بدم
                    کتاب جعفر نژاد تو اینترنت هم بود(pdf). ولی خب خوبه از نویسنده هم حمایت میشه اینجوری :smile:
                    باید تنیمات گیرنده و فرستنده یکی باشه. یعنی بیت توازن و بیت استاپ و ... همه باید عین هم باشن
                    زندگی یعنی امید و حرکت
                    کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
                    سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
                    برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
                    به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

                    دیدگاه


                      #11
                      پاسخ : دریافت usart

                      بیت استارت 1 یا 0
                      استپ ؟

                      می خواستم با ARM یه AT بفرستم برای ماژول که فرستام ماژول چیزی نفرستاد بعد گفتم بزار ببینم AVR چی میفرسته که یه Carriage return و Line feed که میشه 0D منم فرستادم بعد توی دریافت با ترمینال کامپیوتر از میکرو بازم خطا داشت تاخیر بین A و T بیشتر کردم درست (باید حرف به حرف که بین هر حروف یه عالمه تاخیره بفرستم تا درست دریافت بشه ) توی اسیالسکوپ پرتتوس با AVR دیتا رو پست سر هم میفرسته بین حروف ها هیچ تاخیری نیست
                      با ARM ریجستر THR وقتی می نویسیم همون موقع ارسال نمیشه ؟ شاید ارسال نمی شه وقتی نصفش ارسال شد ما دوباره ریجستر رو با عدد جدید رفرش می کنم ارسال میشه ؟ به خاطر همینه که تاخیر رو زیاد می کنم درست میشه ؟؟؟

                      بعد وقتی خروجی AVR رو وصل کردم به اوسالسکوپ دیتاش با باینری کاراکتر فرق دار مثلا من AT فرستادم که A =01000001
                      T= 10000100
                      ولی اون چیز دیگه ای فرستاده



                      ولی با ترمینال پرتتوس همون AT .


                      کد:
                      #include <ATMEL/IOAT91SAM7S64.H>
                      
                      void dely ();
                      void wait ();
                      void main (){
                      AT91C_BASE_CKGR->CKGR_MOR = 0xF01;
                      AT91C_BASE_CKGR->CKGR_PLLR = 0x2903FFC; 
                      AT91C_BASE_PMC->PMC_MCKR = 0x3;
                      AT91C_BASE_PMC->PMC_SCER = 0x1; 
                       AT91C_BASE_PMC->PMC_PCER=(1<<AT91C_ID_US1);
                      AT91C_BASE_PIOA->PIO_PDR=(1<<21|1<<22);
                      AT91C_BASE_PIOA->PIO_ASR=(1<<21|1<<22);
                      AT91C_BASE_PIOA->PIO_MDER=(1<<21|1<<22);
                      AT91C_BASE_US1->US_CR=(1<<6);
                      AT91C_BASE_US1->US_MR=0X2D0;//0X1C0410;
                      AT91C_BASE_US1->US_BRGR=0X27;
                      while(1){
                      
                      AT91C_BASE_US1->US_THR=0X41;
                      wait();
                      AT91C_BASE_US1->US_THR=0X54;
                      wait();
                       AT91C_BASE_US1->US_THR=0X0D;
                       wait();
                       AT91C_BASE_US1->US_THR=0X0A;
                       dely();
                      }
                      }
                      
                      void dely (){
                       unsigned int h;
                       for (h=0;h<100000000;h++);
                      }
                      void wait (){
                       unsigned int a;
                       for (a=0;a<500000;a++);
                      }
                      wait تاخیر بین هر کاراکتر هست !!

                      دیدگاه

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