اطلاعیه

Collapse
No announcement yet.

پورت سریال سخت افزاری

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

    پورت سریال سخت افزاری

    سلام به دوستان
    یه سوال داشتم و اونم اینه که میخواستم ببینم آیا میشه ورودی پورت سریال سخت افزاری(درواقع پایه ی rxd رو میگم) رو با دستوری بست؟؟ یعنی دیگه مقداری از بیرون نگیره ولی پورت سریال و پایه ی txd همچنان مقدار بفرسته؟؟؟؟
    دستوری در بسکام هست که این کارو انجام بده؟
    لطف میکنید اگه کمکم کنید.
    درواقع من از وقفه پورت سریال میخوام استفاده کنم ،وقتی که دریافت داده تمام میشه و میکرو به وقفه میره میخوام توی اون روتین وقفه دیگه پورت سریالم هیچ مقداری رو نگیره انگار که پایه ی rxd بتسته شده ، توی پورت سریال نرم افزاری میشد با دستور close#1 اینکارو کرد اما میخواستم ببینم برای پورت سریال نرم افزاری با چه دستوری میشه این کارو کرد؟؟؟؟؟؟؟؟؟
    منتظرم

    #2
    پاسخ : پورت سریال سخت افزاری

    نوشته اصلی توسط italia2006
    سلام به دوستان
    یه سوال داشتم و اونم اینه که میخواستم ببینم آیا میشه ورودی پورت سریال سخت افزاری(درواقع پایه ی rxd رو میگم) رو با دستوری بست؟؟ یعنی دیگه مقداری از بیرون نگیره ولی پورت سریال و پایه ی txd همچنان مقدار بفرسته؟؟؟؟
    دستوری در بسکام هست که این کارو انجام بده؟
    لطف میکنید اگه کمکم کنید.
    درواقع من از وقفه پورت سریال میخوام استفاده کنم ،وقتی که دریافت داده تمام میشه و میکرو به وقفه میره میخوام توی اون روتین وقفه دیگه پورت سریالم هیچ مقداری رو نگیره انگار که پایه ی rxd بتسته شده ، توی پورت سریال نرم افزاری میشد با دستور close#1 اینکارو کرد اما میخواستم ببینم برای پورت سریال نرم افزاری با چه دستوری میشه این کارو کرد؟؟؟؟؟؟؟؟؟
    منتظرم
    خب وقتی وارد روتین وقفه میشی وقفه غیر فعال میکنی دیگه هیچی داده بیاد بهش پاسخ داده نمیشه
    [glow=red,2,300]تاپيک هاي ايجاد شده[/glow]

    دیدگاه


      #3
      پاسخ : پورت سریال سخت افزاری

      سلام
      میدونم این کارو کردم
      اما نمیخوام با غیر فعال کردن وقفه باشه
      میخوام حتما خودم ورودی رو ببندم
      میشه این کارو کرد؟؟؟

      دیدگاه


        #4
        پاسخ : پورت سریال سخت افزاری

        درواقع اگه وقفه رو غیر فعال کنم باید اخر روتین فعالش کنم
        این مناسب نیست واسه برنامم چرا که در اخر روتین چندین بایت داده ارسال میشه به میکرو که اگه فعالش کنم وقفه رو دوباره که خارج میشه از روتین دوباره به وقفه میره

        دیدگاه


          #5
          پاسخ : پورت سریال سخت افزاری

          من بسکام بلد نیستم
          اما اگه یه نگاهی به این صفحه بندازید :
          http://www.electronics-base.com/index.php/avr-tutorials/uart/94-avr-serial-port-uart-register-usage
          مشاهده میکنید که در رجیستر USART Control and Status Register B – UCSRB بیتی هست به نام Bit 4 – RXEN: Receiver Enable که اگه توش 1 نوشته بشه دریافت فعال میشه و الا غیر فعاله

          Don't hesitate to ask any question ..

          دیدگاه


            #6
            پاسخ : پورت سریال سخت افزاری

            نوشته اصلی توسط italia2006
            درواقع اگه وقفه رو غیر فعال کنم باید اخر روتین فعالش کنم
            این مناسب نیست واسه برنامم چرا که در اخر روتین چندین بایت داده ارسال میشه به میکرو که اگه فعالش کنم وقفه رو دوباره که خارج میشه از روتین دوباره به وقفه میره
            لازم نیست وقفه عمومی غیرفعال کنی
            فقط وقفه RX غیر فعال کن
            برای ارسال مشکلی به وجود نمیاد. درضمن میشه داده بدون وقفه ارسال کرد. حتما نباید با وقفه TX ارسال بشه.
            تو میکرو یا کامپیوتر فرقی نداره. وقتی داده ای بیاد تو رجیستر قرار میگیره و با یه وقفه اعلام میکنه که داده جدید در دسترسه
            تو کامپیوتر اگه با VB کار کنی با دستور Close میای وقفه غیر فعال میکنی. تو میکرو هم باید همین کار کنی.
            بازم میگم وقفه RX نه وقفه عمومی.
            [glow=red,2,300]تاپيک هاي ايجاد شده[/glow]

            دیدگاه


              #7
              پاسخ : پورت سریال سخت افزاری

              سلام
              نه من همونطور که گفتم نمیخوام وقفه rx یا کلی رو غیر فعال کنم
              بلکه فقط میخوام دیگه rxd مقداری نگیره

              دیدگاه


                #8
                پاسخ : پورت سریال سخت افزاری

                نوشته اصلی توسط italia2006
                سلام
                نه من همونطور که گفتم نمیخوام وقفه rx یا کلی رو غیر فعال کنم
                بلکه فقط میخوام دیگه rxd مقداری نگیره
                تو ورودی یه گیت OR بزار هر وقت خواستی ببندی 1 کن
                [glow=red,2,300]تاپيک هاي ايجاد شده[/glow]

                دیدگاه


                  #9
                  پاسخ : پورت سریال سخت افزاری

                  سلام میشه مدارشو برام بکشی بفهمم چطوری
                  ممنون

                  دیدگاه


                    #10
                    پاسخ : پورت سریال سخت افزاری

                    ورودی بجای اینکه به پایه rx وصل کنی بده به ورودی OR و پایه دیگه OR هم به یه پایه از میکرو وصل کن و خروجی OR به پایه rx متصل کن
                    حالا هر وقت بخوای غیر فعال کنی کافیه اون پایه که ورودی OR وصل هست یک کنی در نتیجه خروجی OR یک میشه و دیگه مهم نیست که اون یکی ورودی چی باشه.

                    میشه بجای OR از هر گیت دیگه مثل AND هم استفاده کرد
                    [glow=red,2,300]تاپيک هاي ايجاد شده[/glow]

                    دیدگاه


                      #11
                      پاسخ : پورت سریال سخت افزاری

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

                      دیدگاه


                        #12
                        پاسخ : پورت سریال سخت افزاری

                        نوشته اصلی توسط italia2006
                        سلام ممنون
                        ولی مشکل من درواقع با این چیزا حل نمیشه
                        درواقع میکرو من باید یه بایت اطلاعات به یه ماژول دیگه بفرسته که اون ماژول هم در جواب چندین بایت رو به میکروم میفرسته حالا وقتی میکرو اطلاعات رو از ماژول دریافت میکنه چون وقفه دریافت پورت سریال فعاله میره به وقفه ولی مشکل اینجاست که وقتی روتین وقفه تموم میشه دوباره میره به وقفه
                        هر کاری بگید کردم سیم دریافتو حتی کندم موقعی که توی روتین هستش ولی باز هم نشد وقفه رو اگه توی روتین غیر فعال کنم و اخر روتین دوباره فعالش کنم دوباره همین مشکل درست میشه مگه اینکه کلا توی روتین غیر فعال کنم که فایده ای نداره
                        هر چی فک کردم فقط به یه نتیجه رسیدم و اون اینه که حتما چون چندین بایت دریافت میشه این چند بار روتین رو انجام میده
                        ولی با منطق میکرو سازگاری نداره چون وقتی میره به روتین وقفه کلی که غیر فعال میشه منم که وقفه ورودی رو غیر فعال میکنم حالا هر چی هم فرستاده بشه اهمیتی نداره بعد که از روتین خارج میشه دوباره چرا بر میگرده به روتین واقعا گیج شدم
                        کسی میدونه ممنون میشم مطرح کنه
                        منتظرم
                        شما مشکلتون نرم افزاری هست
                        لطفا برنامه اینجا قرار بدین
                        [glow=red,2,300]تاپيک هاي ايجاد شده[/glow]

                        دیدگاه


                          #13
                          پاسخ : پورت سریال سخت افزاری

                          $regfile = "m32def.dat"
                          $crystal = 8000000
                          $baud = 9600
                          Enable Interrupts
                          Enable Urxc
                          On Urxc Present

                          Do
                          Set Porta.3
                          Loop
                          End

                          Present:
                          Disable Urxc
                          PRINT "123"
                          WAIT 5
                          ENABLE URXC
                          RETURN
                          برنامه اینه
                          همونطور که میبینید اگه اول و اخر روتینم این کارو بکنم باز این روتین تکرار میشه
                          دارم کلافه میشم
                          تازه یه مشکل دیگه هم هست اینه که وقتی مقدار میفرسته به پورت سریال 123 رو کامل و درست میفرسته ولی کنارش یه%^از اینا نشون میده
                          چیکار باید بکنم؟؟؟!! :cry:

                          دیدگاه


                            #14
                            پاسخ : پورت سریال سخت افزاری

                            کسی با وقفه پورت سریال کار نکرده که بتونه بهم جواب بده
                            منتظر کمکتتون هستم

                            دیدگاه


                              #15
                              پاسخ : پورت سریال سخت افزاری

                              عزیز جان شما میتونید خیلی راحت با تغییر یک بیت در رجیسترهای USART به میکرو بگی که فقط ارسال داشته باشه و هیچ دریافتی چه با اینتراپت و چه بدون اینتراپت نداشته باشه.
                              مثلا در مگا 16 میتونید با صفر کردن بیت 4 از رجیستر UCSRB دریافت سریال رو کلا غیر فعال کنید.

                              دیدگاه

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