اطلاعیه

Collapse
No announcement yet.

استفاده از 2 پورت سریال میکرو به صورت همزمان

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

    استفاده از 2 پورت سریال میکرو به صورت همزمان

    هر میکروی avr ( مثلا atmega16 ) یک پورت سریال سخت افزاری داره و تعداد نامحدود پورت سریال نرم افزاری که با دستور open میشه تعریف کرد
    تابع inlkey هم به صورت مرتب دیتا را از روی پورت میخونه و توی یک متغییر از نوع بایت قرار میده
    تا اینجا هیچی
    من دوتا بادریت مختلف دارم ( یکی 300 یکی 115200 ) یعنی حداقل و حداکثر
    حداکثری را گذاشتم روی همون پایه های پیش فرض سخت افزار یعنی 15-14 میکرو و بادریت کمتر را روی پورت مجازی
    از پورت مجازی فقط اطلاعات میخونم و دیتائی روش نمیخوام بنویسم
    ولی از پورت اصلی هم خوندن دارم هم نوشتن.
    اطلاعات را میخواهم توی دو رشته جداگانه ذخیره کنم و بر اساس کلماتی که توش هست یه کاری انجام بدم.


    خلاصه :
    وقتی روی هر دو پورت به صورت همزمان کار دارم ( خوندن و نوشتن ) با توضیحات بالا چطوری کد بنویسم که که دیتایی از هیچکدوم از دست ندم ؟
    لطفا یک نمونه مثال برام بزارید.
    آن دم که مرا مي زده بر خاک سپاريد زير کفنم خمره اي از باده گذاريد
    تا در سفر دوزخ از اين باده بنوشم
    آنلحظه که با دوزخيان کنم ملاقات يک خمره شراب ارغوان برم به سوغات
    هرقدر که در خاک ننوشيدم از اين باده صافي ، بنشينم و با دوزخيان کنم تلافي

    #2
    پاسخ : استفاده از 2 پورت سریال میکرو به صورت همزمان

    زمانبندی پورت سخت افزاری توسط سخت افزار انجام میشه ولی زمانبندی پورت نرم افزاری توسط نرم افزار. بنابراین مهمه که زمانی که بیت شروع به گیرنده میرسه میکرو در حالتی باشه که inkey صدا زده شده باشه. ضمنا در طی مدت زمانی دریافت دیتا میکرو کار دیگه ای نمیتونه انجام بده. بنا براین اگر فرض کنیم در زمانی که یک بایت روی یک پین دریافت میشه اطلاعاتی روی پین دیگه ای بیاد اون اطلاعات از دست رفته هست. مشکل هم سرعت 300 باود نیست چون طول یک بیت در سرعت 300 برابر با 3333 میکرو ثانیه هست ولی در سرعت 115200 برابر با 8.6 میکرو ثانیه. بنا براین شاید بشه در بین دریافت اطلاعات از پین کم سرعت از پین سرعت بالا اطلاعات رو دریافت کرد ولی اینکار احتیاج به یک برنامه نویسی خیلی دقیق با زمانبندی دقیق تری داره. که محتملا بایستی به اسمبلی هم انجام بشه.

    دیدگاه


      #3
      پاسخ : استفاده از 2 پورت سریال میکرو به صورت همزمان

      فکر کنم گاوم را باید ببرم زایشگاه :mrgreen:

      اقا یه سوال دیگه ، شاید بتونم صورت مسئله را پاک کنم

      امکان این هست که روی یک رشته سیم RX میکرو از دو دستگاه مختلف( با بادریت یکسان البته و وقفه زمانی مثلا 1-2 ثانیه) دیتا بهش وارد بشه ؟ میتونه بخونه ؟ نیازی به گذاشتن مقاومتی ، خازی ، بافری ، چیزی هست ؟

      سوال 2 : آیا با اتمگا64 که ذاتا 2 تا سخت افزار سریال داره مشکلم به صورت عادی حل میشه ؟
      آن دم که مرا مي زده بر خاک سپاريد زير کفنم خمره اي از باده گذاريد
      تا در سفر دوزخ از اين باده بنوشم
      آنلحظه که با دوزخيان کنم ملاقات يک خمره شراب ارغوان برم به سوغات
      هرقدر که در خاک ننوشيدم از اين باده صافي ، بنشينم و با دوزخيان کنم تلافي

      دیدگاه


        #4
        پاسخ : استفاده از 2 پورت سریال میکرو به صورت همزمان

        سلام

        من یه زمانی یه مورد مشابه شما داشتم که این مدار ساده بهم جواب داد:



        تو مدار من تقریبا 15 ثانیه یه بار کانال ورودی دیتا باید عوض میشد

        با اینکه مدار جوابمو میداد ولی به خاطر پیشگیری از مشکلات آینده اونو کنار گذاشتم و از mega64 استفاده کردم
        چون یه کار استاندارده و الانم 2 ساله مدارم داره بخوبی و خوشی کار میکنه

        دیدگاه


          #5
          پاسخ : استفاده از 2 پورت سریال میکرو به صورت همزمان

          میتونین یک شرح از مدارتون بدین تا بشه یه فکر اساسی کرد؟ البته اگه اعتماد دارین و شرح دقیق مدار مشکلی ایجاد نمیکنه.

          دیدگاه


            #6
            پاسخ : استفاده از 2 پورت سریال میکرو به صورت همزمان

            نوشته اصلی توسط reza_agha
            میتونین یک شرح از مدارتون بدین تا بشه یه فکر اساسی کرد؟ البته اگه اعتماد دارین و شرح دقیق مدار مشکلی ایجاد نمیکنه.
            مدار خاصی نیست یک پورت برای GSM Modem و یک پورت برای GPS
            مشکلم را با سوئیچ کردن نرم افزاری و تقسیم کار حل کردم...
            چون دیتای gps تکراری دارم در عین حال دیتای gsm هم با at کامندها در هر زمان در دسترسم هستند تقریبا مشکلم توی این پروژِه حل شد ، یعنی یه مدت از کارکرد میکرو را گذاشتم برای مودم و یک مدت را برای جی پی اس ، و از متغییرهای عمومی استفاده کردم برای تصمیم گیری ها در داخل تایمرها.فعلا نصف شبیه منم و کامپیوتر و یه پاکت سیگار مارلبروفیلتر پلاس که به خودم امروز جایزه دادم :mrgreen:
            ببینم چی میشه.... تکمیل شد مطالب و جزئیات که یه روزی ممکنه بدرد کسی بخوره را میزارم تو سایت ( چون در هر حال پروژه اپن سورس باید تحویل بدم :NO: )
            آن دم که مرا مي زده بر خاک سپاريد زير کفنم خمره اي از باده گذاريد
            تا در سفر دوزخ از اين باده بنوشم
            آنلحظه که با دوزخيان کنم ملاقات يک خمره شراب ارغوان برم به سوغات
            هرقدر که در خاک ننوشيدم از اين باده صافي ، بنشينم و با دوزخيان کنم تلافي

            دیدگاه


              #7
              پاسخ : استفاده از 2 پورت سریال میکرو به صورت همزمان

              سلام.آقا من پروژه avlدارم اگه ممکنه بهم کمک کنید . -خیلی درگیرش شدم اما نتونستم برنامه ش بنویسم....
              مشکل من الگوریتم برنامه است....AVLهمون کنترل موقعیت اتوماتیک اتومبیل...اگه کمکم کنید واقعا ممنون میشم

              دیدگاه


                #8
                پاسخ : استفاده از 2 پورت سریال میکرو به صورت همزمان

                اینجا بحث راجع به چیز دیگه ای بود. یه تاپیک جدید باز کنین خیلی بهتره.

                دیدگاه

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