اطلاعیه

Collapse
No announcement yet.

کمک درباره استفاده از دو USART در ATMEGA64

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

    کمک درباره استفاده از دو USART در ATMEGA64

    درباره کار کردن با دو کانال USART در ATMEGA64 آیا نکته ای وجود دارد؟من یک کانال را به ارتباط با یک ماژول RFID و کانال دیگر را نیز به HM-TR برای ارسال و دریافت اطلاعات بی سیم اختصاص دادم.ماژول RFID باید اطلاعات خود را به صورت وقفه گیرنده دریافت کند و در سرویس روتین وقفه اش باید یک سری پردازش انجام شود و در نهایت توسط USART دیگر به مرکز اطلاعات ارسال شود.RFID را به USART0 و HM-TR را به USART1 وصل کرده ام.در ابتدا با مشترک بودن میزان باودریت هیچکدام کار نمی کرد و برای آن باودریت کانال ها را با هم متفاوت گذاشتم(سوال!!!) هنوز با این کار نتوانستم خروجی مطلوب را بگیرم.آیا کسی می تواند راهنمایی کند؟

    #2
    پاسخ : کمک درباره استفاده از دو USART در ATMEGA64

    روی hm-tr وقفه گیرنده داری یا فقط در حالت فرستنده ازش استفاده میکنی :rolleyes:
    من کانال 2 رو راه انداختم
    اگه 2 تا هم زمان وقفه داشته باشی باید به فکر تداخل وقفه هم باشی
    [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

    دیدگاه


      #3
      پاسخ : کمک درباره استفاده از دو USART در ATMEGA64

      USART0 فقط برای RFID استفاده می شود و هر زمان که مرکز داده بخواهد باید ایستگاه های RFID داده های ذخیره شده در MMC شان را در قالب اطلاعات سریال برای مرکز بفرستند.در کل احتیاج به دو وقفه USART هست یکی USART0 و یکی USART1 .البته فعلا در مرحله تست و عیب یابی هستم تا از صحت ارسال و دریافت در زمانی که USART0 به عنوان گیرنده با وقفه و uSART1 برای ارتباط معمولی uSART است مطمئن شوم.یکبار کار می کند اما کانال دیگر قطع است.نمی توانم از صحت تبادل داده در USART0 مطمئن شوم(مثلا برای تست صحت در سرویس روتین USART0 یک putchar تعریف کردم که به محض ورود داده از وقفه کانال صفر ، 20 بار کاراکتر a را از طریق USART1 بفرستد.)

      دیدگاه


        #4
        پاسخ : کمک درباره استفاده از دو USART در ATMEGA64

        خوب الان چه کمکی از دست من بر میاد در خدمتم
        از لحاظ سخت افزاری میشکل ندارین فقط باید اصول برنامه نویسی رو رعایت کنید تا وقفه ها با هم تداخل نکنه
        توی روتین وقفه دستورات سنگین ننویسید استک هارو زیاد کنید تا میکرو بتونه سر برگ های روتین وقفه رو ذخیره کنه
        اگه توی وقفه یوزارت 2 مشکلی دارین من نمونه برنامه شو نوشتم بزارم ؟
        البته با ابیسکام
        زبان برنامه نویسی شما ؟؟
        [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

        دیدگاه


          #5
          پاسخ : کمک درباره استفاده از دو USART در ATMEGA64

          من با زبان C و نرم افزار codevision کار می کنم.آیا امکان تداخل سیگنال های سریال در USART0 و USART1 وقتی باودریت یکسان دارند وجود دارد؟آیا برای استفاده از 2 USART تنظیم خاصی از جمله فرکانس کلاک یا استفاده از کریستال خارجی لازم است؟همان طور که در دیتاشیت HM-TR آنده است ، این ماژول داده ها را به صورت بسته های 32 بایتی می فرستد.سوالم این است که وقتی بسته های من دارای بایت های کمتری است امکان دارد این ماژول تا پر شدن هر 32 بایتش صبر کند و به این ترتیب اشکال در امر تبادل بوجود آورد؟آیا تنظیم پهنای باند برای این ماژول باری از مشکلات را کم می کند یا نه؟

          دیدگاه


            #6
            پاسخ : کمک درباره استفاده از دو USART در ATMEGA64

            شما برای کار با هر دو پورت سریال بصورت وقفه یا سرکشی؛ باود یکسان یا متفاوت، هیچ مشکلی نداری. اما با توجه به اینکه یکی از ماژولهات تعداد زیادی داده رو با هم ارسال میکنه شما بایستی بافر اون پورت رو بیشتر از مقدار بحرانی 32 قرار بدی .

            // USART0 Receiver buffer
            #define RX_BUFFER_SIZE0 32

            اگه با کدویژن کار میکنی موقع ایجاد برنامه با کدویزارد خودش مقدار اونو از شما میخواد که بهتره رو 64 بایت تنظیم بشه(بعدا هم میتونی تنظیم کنی) . این بافر در واقع یه صف حلقوی (ring queue ) هست بقول بچه های کامپیوتری، که خودش داده های دریافتی رو تا موقع خوندنشون با توابع getchar, getchar1 نگه میداره.
            به این نکته هم توجه داشته باش که کدی که توسط کامپایلر برات درس میکنه اگه توش این بافر پر بشه ، یه فلگ رو 1 میکنه و تعدادی از داده ها از بین میرن

            if (++rx_counter0 == RX_BUFFER_SIZE0)
            {
            rx_counter0=0;
            rx_buffer_overflow0=1;
            };

            دیدگاه


              #7
              پاسخ : کمک درباره استفاده از دو USART در ATMEGA64

              سلام خسته نباشید ببخشید مزاحم شدم بابت مگا 64 سوال داشتم من نمیتونم بهش وودی یوزارتمو معرفی کنم من دوتا ماژول دارم که از طریق پورت سریال باید به میکر وصل بشن اگه ممکنه نمونه برنامه بسکام واسم اپ کنید تا ببینم مثلا چجوری بهش بگم برای ماژول سیم 900 از یوزارت 1 و واسه وای فای از یوزارت 0 استفاده کن ممنون میشم کمکم کنید بدجوری گیرم

              دیدگاه


                #8
                پاسخ : کمک درباره استفاده از دو USART در ATMEGA64

                برا اینکه مشکلی نداشته باشی اون پورت یا اینترفیسی که اطلاعاتش بیشتر برات مهمه رو اون پورت وقفه رو فعال کن ولی اون یکی دیگه رو با روش polling بخون..چون مدیریت وقفه تو avr ها خیلی ضعیفه حتی ضعیف تر از8051 مگه اینکه از xmega استفاده کنی

                دیدگاه


                  #9
                  پاسخ : کمک درباره استفاده از دو USART در ATMEGA64

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

                  دیدگاه


                    #10
                    پاسخ : کمک درباره استفاده از دو USART در ATMEGA64

                    نوشته اصلی توسط حامد رحیمی نمایش پست ها
                    خوب الان چه کمکی از دست من بر میاد در خدمتم
                    از لحاظ سخت افزاری میشکل ندارین فقط باید اصول برنامه نویسی رو رعایت کنید تا وقفه ها با هم تداخل نکنه
                    توی روتین وقفه دستورات سنگین ننویسید استک هارو زیاد کنید تا میکرو بتونه سر برگ های روتین وقفه رو ذخیره کنه
                    اگه توی وقفه یوزارت 2 مشکلی دارین من نمونه برنامه شو نوشتم بزارم ؟
                    البته با ابیسکام
                    زبان برنامه نویسی شما ؟؟
                    با سلام اگر لطف کنید نمونه برنامه بسکام کار با دو پورت سریال همزمان رو بذارید ممنون میشم
                    من توی وقفه ها و روتینش مشکل دارم و به کل گیج شدم

                    دیدگاه


                      #11
                      پاسخ : کمک درباره استفاده از دو USART در ATMEGA64

                      نوشته اصلی توسط حامد رحیمی نمایش پست ها
                      روی hm-tr وقفه گیرنده داری یا فقط در حالت فرستنده ازش استفاده میکنی :rolleyes:
                      من کانال 2 رو راه انداختم
                      اگه 2 تا هم زمان وقفه داشته باشی باید به فکر تداخل وقفه هم باشی
                      سلام میشه یک مثال ساده با استفاده از دو سریال بگید؟
                      هر اقدام بزرگی ابتدا محال به نظر میرسد

                      دیدگاه

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