اطلاعیه

Collapse
No announcement yet.

ارتباط usart

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

    ارتباط usart

    سلام خدمت اساتید محترم من میخوام دو تا atmega32را از
    طریق usart به هم متصل کنم به این صورت که کاراکتری رو در فرستنده وارد و همون رو از طریق گیرنده دریافت کنم
    ولی در برنامه مشکل دارم لطفا کمکم کنید

    #2
    پاسخ : ارتباط usart

    نوشته اصلی توسط soheilbinaei نمایش پست ها
    سلام خدمت اساتید محترم من میخوام دو تا atmega32را از
    طریق usart به هم متصل کنم به این صورت که کاراکتری رو در فرستنده وارد و همون رو از طریق گیرنده دریافت کنم
    ولی در برنامه مشکل دارم لطفا کمکم کنید
    سلام
    مشکلتون رو واضح بفرمایید چیه. اینطوری که نمیشه کمکی کرد.

    دیدگاه


      #3
      پاسخ : ارتباط usart

      من میخوام دو میکرو را از طریق پایه ها ی txdوrxd باهم ارتباط بدم به صورتی که یکی فرستنده ودیگری گیرنده باشه و گیرنده کاراکتر های فرستنده را دریافت و روی lcd نمایش بدهد موضوع اصلی اینجاست که من باید با چه دستوری این کار رو بکنم ؟
      کامپایلرم هم کدویژن است ۹

      دیدگاه


        #4
        پاسخ : ارتباط usart

        نوشته اصلی توسط soheilbinaei نمایش پست ها
        من میخوام دو میکرو را از طریق پایه ها ی txdوrxd باهم ارتباط بدم به صورتی که یکی فرستنده ودیگری گیرنده باشه و گیرنده کاراکتر های فرستنده را دریافت و روی lcd نمایش بدهد موضوع اصلی اینجاست که من باید با چه دستوری این کار رو بکنم ؟
        کامپایلرم هم کدویژن است ۹
        خوب از نظر سخت افزاری باید tx میکروکنترلر اول به rx میکروکنترلر دوم و tx میکروکنترلر دوم به rx میکروکنترلر اول متصل بشه و هر دو میکروکنترلر از یک زمین مشترک استفاده کنن. نرخ تبادل داده هم باید یکسان باشه.
        برای کار با UART در کدویژن شما دو راه دارید. یا کار کردن مستقیم با رجیسترها، یا استفاده از توابع آماده و ویزارد. برای استفاده از روش دوم، شما باید موقع ساخت پروژه و در قسمت کدویزارد، تنظیمات مربوط به واحد UART رو انجام بدید و داخل برنامه از توابع getchar، putchar و puts استفاده کنید. خوب از اسمشون معلومه که putchar برای ارسال یک کاراکتر یا یک بایت داده به کار میره، getchar برای دریافت یک کاراکتر یا یک بایت داده به کار میره و puts برای ارسال یک رشته متنی به کار میره. فقط یادتون باشه این توابع در مد 8 بیتی سریال قابل استفاده هستن.

        دیدگاه


          #5
          پاسخ : ارتباط usart

          نوشته اصلی توسط hossein.m98 نمایش پست ها
          خوب از نظر سخت افزاری باید tx میکروکنترلر اول به rx میکروکنترلر دوم و tx میکروکنترلر دوم به rx میکروکنترلر اول متصل بشه و هر دو میکروکنترلر از یک زمین مشترک استفاده کنن. نرخ تبادل داده هم باید یکسان باشه.
          برای کار با UART در کدویژن شما دو راه دارید. یا کار کردن مستقیم با رجیسترها، یا استفاده از توابع آماده و ویزارد. برای استفاده از روش دوم، شما باید موقع ساخت پروژه و در قسمت کدویزارد، تنظیمات مربوط به واحد UART رو انجام بدید و داخل برنامه از توابع getchar، putchar و puts استفاده کنید. خوب از اسمشون معلومه که putchar برای ارسال یک کاراکتر یا یک بایت داده به کار میره، getchar برای دریافت یک کاراکتر یا یک بایت داده به کار میره و puts برای ارسال یک رشته متنی به کار میره. فقط یادتون باشه این توابع در مد 8 بیتی سریال قابل استفاده هستن.
          یه سوال دیگه هم داشتم
          چرا موقعی که من کاراکتری رو با میکرو اول میفرستم توی میکرو دوم همون رو نشون میده و کاراکتر های دیگه ای رو نشون نمیده(منظورم کاراکتر های دیگه ای هست که میفرستم)

          دیدگاه


            #6
            پاسخ : ارتباط usart

            نوشته اصلی توسط soheilbinaei نمایش پست ها
            یه سوال دیگه هم داشتم
            چرا موقعی که من کاراکتری رو با میکرو اول میفرستم توی میکرو دوم همون رو نشون میده و کاراکتر های دیگه ای رو نشون نمیده(منظورم کاراکتر های دیگه ای هست که میفرستم)
            متوجه منظورتون نمیشم. واضح تر بفرمایید.

            دیدگاه


              #7
              پاسخ : ارتباط usart

              نوشته اصلی توسط hossein.m98 نمایش پست ها
              متوجه منظورتون نمیشم. واضح تر بفرمایید.
              من چگونه از تابع get char استفاده کنم

              دیدگاه


                #8
                پاسخ : ارتباط usart

                نوشته اصلی توسط soheilbinaei نمایش پست ها
                من چگونه از تابع get char استفاده کنم
                خیلی ساده:

                char c = getchar();

                دیدگاه


                  #9
                  پاسخ : ارتباط usart

                  نوشته اصلی توسط hossein.m98 نمایش پست ها
                  خیلی ساده:

                  char c = getchar();
                  ارور میده برنامه

                  دیدگاه


                    #10
                    پاسخ : ارتباط usart

                    نوشته اصلی توسط soheilbinaei نمایش پست ها
                    ارور میده برنامه
                    همیشه وقتی از ارور صحبت میکنید، متن ارور رو هم قرار بدید که بشه بررسی اش کرد!
                    فکر کنم اروری که میده به خاطر اضافه نکردن هدر stdio.h به پروژه باشه. این هدر رو اضافه کنید، احتمالا مشکل حل بشه.

                    دیدگاه


                      #11
                      پاسخ : ارتباط usart

                      نوشته اصلی توسط hossein.m98 نمایش پست ها
                      همیشه وقتی از ارور صحبت میکنید، متن ارور رو هم قرار بدید که بشه بررسی اش کرد!
                      فکر کنم اروری که میده به خاطر اضافه نکردن هدر stdio.h به پروژه باشه. این هدر رو اضافه کنید، احتمالا مشکل حل بشه.
                      در واقع من میخوام یه کاراکتر رو با میکرو اول ارسال کنم وبا دومی بگیرم و میکرو دومی در ازای کاراکتر های دریافتی ال ای دی ها رو روشن و خاموش کنه ولی نمیتونم خروجی getchar رو در شرط بگذارم لطفا تو کد نویسیش کمکم کنید

                      دیدگاه


                        #12
                        پاسخ : ارتباط usart

                        نوشته اصلی توسط soheilbinaei نمایش پست ها
                        در واقع من میخوام یه کاراکتر رو با میکرو اول ارسال کنم وبا دومی بگیرم و میکرو دومی در ازای کاراکتر های دریافتی ال ای دی ها رو روشن و خاموش کنه ولی نمیتونم خروجی getchar رو در شرط بگذارم لطفا تو کد نویسیش کمکم کنید
                        فرض بگیرید با دریافت کاراکتر N، یک LED که به پایه PA0 متصله باید روشن و با دریافت کاراکتر F باید خاموش بشه. داخل حلقه بی نهایت میشه از این کد استفاده کرد:

                        while(1)
                        {
                        char c = getchar();
                        if(c == 'N')
                        {
                        PORTA = 1;
                        }
                        else if(c == 'F')
                        {
                        PORTA = 0;
                        }
                        }

                        دیدگاه

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