اطلاعیه

Collapse
No announcement yet.

انتقال دیتا از طریق rxd , txd بین دو میکرو با زبان بیسیک

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

    انتقال دیتا از طریق rxd , txd بین دو میکرو با زبان بیسیک

    با عرض سلام و ادب خدمت سروران گرامی
    حدود یک هفته هست که درگیر چند خط برنامه شدم و از هر روش و فرمانهایی استفاده میکنم جواب درست نمیگیرم.
    اصل موضوع :
    میخام عددی رو از یک میکرو به میکرو دیگه انتقال بدم
    ابتدا از طریق txd به rxd
    و در مرحله بعد از طریق hm-t و hm-r
    ولی در گام اول با استفاده از سیم دیتا ( word , string , byte ) رو منتقل کردم ، جواب درستی دریافت نکردم...
    اساتید گرامی لطفا راهنمایی کنید...!!!

    میکروی فرستنده:

    $regfile = "m8def.dat"
    $crystal = 1000000
    $baud = 600

    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , _
    Db7 = Portc.5 , E = Portc.0 , Rs = Portc.1
    Cursor Off


    Dim Q As Word
    q=0


    do

    incr q
    print q
    lcd q

    wait 1

    cls

    loop

    End



    میکروی گیرنده:


    $regfile = "m8def.dat" : $crystal = 1000000
    $baud = 600

    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , _
    Db7 = Portc.5 , E = Portc.0 , Rs = Portc.1
    Cursor Off

    Dim A As Word



    do

    a=waitkey()

    lcd a

    wait 1

    cls

    loop



    End

    #2
    پاسخ : انتقال دیتا از طریق rxd , txd بین دو میکرو با زبان بیسیک

    سلام دوست عزیز
    ب نظرم تاپیکه خیلی مفیدی میتونه باشه :job:
    منم متاسفانه از این موضوع نتیجه نگرفتم و هنوز دوس دارم روش کار کنم
    انشالله با کمک دوستان بتونیم به نتیجه برسونیمش
    در ضمن موضوعی که من فهمیدم اهمیت داره ، استفاده از کریستال خارجی برای میکرو هست.
    و البته تنظیم فیوز بیت های مربوطه
    خواهش میکنم از دوستان اگه کسی رو این موضوع کار کرده از کمک دریغ نکنه
    ممنون :smile:

    دیدگاه


      #3
      پاسخ : انتقال دیتا از طریق rxd , txd بین دو میکرو با زبان بیسیک

      سلام
      اینو تست کنید:
      کد:
      $regfile = "m8def.dat"
      $crystal = 1000000
      $baud =9600
      
      Config Lcd = 16 * 2
      Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , _
      Db7 = Portc.5 , E = Portc.0 , Rs = Portc.1
      Cursor Off
      
      
      Dim Q As byte
      
      
      
      do
      
      print "123"
      
      
      wait 1
      
      cls
      
      loop
      
      End

      کد:
      $regfile = "m8def.dat" : $crystal = 1000000
      $baud =9600
      
      Config Lcd = 16 * 2
      Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , _
      Db7 = Portc.5 , E = Portc.0 , Rs = Portc.1
      Cursor Off
      
      Dim A As byte
      
      
      
      do
      
      a=inkey()
      
      lcd a
      
      wait 1
      
      cls
      
      loop
      
      
      
      End
      اگر جواب گرفتید ادامه میدم تا به هدفتون برسید

      دیدگاه


        #4
        پاسخ : انتقال دیتا از طریق rxd , txd بین دو میکرو با زبان بیسیک

        ممنون مهندس
        من برنامم تقریبا مثل همین بود البته مقدار کریستال و baud فرق میکرد
        فردا تست میکنم و نتیجه رو میگم
        مرسی از پاسختون :rolleyes:

        فقط یه چیزی
        نیازی به کریستال خارجی نیست؟؟؟

        دیدگاه


          #5
          پاسخ : انتقال دیتا از طریق rxd , txd بین دو میکرو با زبان بیسیک

          نوشته اصلی توسط saeed khakdan
          ممنون مهندس
          من برنامم تقریبا مثل همین بود البته مقدار کریستال و baud فرق میکرد
          فردا تست میکنم و نتیجه رو میگم
          مرسی از پاسختون :rolleyes:

          فقط یه چیزی
          نیازی به کریستال خارجی نیست؟؟؟
          خواهش میکنم
          من بیشتر از ۱۰ تا پروژه که به tx وrx میکرو نیاز بوده با اکثر ماژولها تست کردم و اصول اولیه برنامه این بوده.
          نه نیازی نیست

          دیدگاه


            #6
            پاسخ : انتقال دیتا از طریق rxd , txd بین دو میکرو با ز&#1

            با تشکر از آقای مومنی و آقای خاکدان
            البته رشته تحصیلی من مکانیک بوده و به دلیل علاقه فراوان به رشته جذاب الکترونیک ، در مبحث avr ها وارد شدم . تا الان دو تا پروژه انجام دادم اولین پروژه من قفل رمز 6 رقمی بوده که الان در حال بهره بردای هست و بخوبی جواب داده. و دومی هم شمارنده مولتی پلکس سه رقمی رو به بالا و رو به پایین برای سون سگمنت...
            انشالله دستورات آقای مومنی رو هم ، فردا تست میکنم و جواب رو خدمتون عرض میکنم.
            امیدوارم این آموزش نتیجه مطلوبی برای همه ی دوستان داشته باشه... :job:

            دیدگاه


              #7
              پاسخ : پاسخ : انتقال دیتا از طریق rxd , txd بین دو میکرو با ز

              نوشته اصلی توسط seramo
              با تشکر از آقای مومنی و آقای خاکدان
              البته رشته تحصیلی من مکانیک بوده و به دلیل علاقه فراوان به رشته جذاب الکترونیک ، در مبحث avr ها وارد شدم . تا الان دو تا پروژه انجام دادم اولین پروژه من قفل رمز 6 رقمی بوده که الان در حال بهره بردای هست و بخوبی جواب داده. و دومی هم شمارنده مولتی پلکس سه رقمی رو به بالا و رو به پایین برای سون سگمنت...
              انشالله دستورات آقای مومنی رو هم ، فردا تست میکنم و جواب رو خدمتون عرض میکنم.
              امیدوارم این آموزش نتیجه مطلوبی برای همه ی دوستان داشته باشه... :job:
              خواهش میکنم
              اگر خواستید میتونید در گروه واتس اپ بچه های الکترونیک عضو بشید و اموزش برنامه نویسی و طراحی و... از صفر یاد بگیرید.
              انشاالله که جواب مبده.

              دیدگاه


                #8
                پاسخ : انتقال دیتا از طریق rxd , txd بین دو میکرو با زبان بیسیک

                با پرتئوس آزمایش کردم . بجای عدد "123" ، عدد 193 نمایش داده میشه.
                اما بر روی بردبورد عدد 10 نمایش داده میشه.
                آیا تنظیم فیوزبیتها میتونه نقش داشته باشه...؟!!

                دیدگاه


                  #9
                  پاسخ : انتقال دیتا از طریق rxd , txd بین دو میکرو با زبان بیسیک

                  شما باید از وقفه سریال استفاده کنید

                  قسمت فرقی نمیکنه
                  اینم کد گیرنده

                  کد:
                  $regfile = "m8def.dat" : $crystal = 1000000
                  $baud =9600
                  
                  Config Lcd = 16 * 2
                  Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , _
                  Db7 = Portc.5 , E = Portc.0 , Rs = Portc.1
                  Cursor Off
                  
                  
                  Enable Interrupts
                  Enable Urxc
                  On Urxc Abcd
                  
                  Dim A As byte
                  
                  
                  
                  do
                  
                  Lcd A ; " "
                  
                  loop
                  
                  End
                  
                  Abcd:
                  A = Waitkey()
                  Return

                  دیدگاه


                    #10
                    پاسخ : انتقال دیتا از طریق rxd , txd بین دو میکرو با زبان بیسیک

                    سلام اگه قراره فقط اعداد رو بفرستید از کد printbin برای فرستادن و inputbin برای دریافت اون عدد استفاده کنید

                    دیدگاه


                      #11
                      پاسخ : انتقال دیتا از طریق rxd , txd بین دو میکرو با زبان بیسیک

                      من با این تو پروتئوس جواب گرفتم
                      اینم کد
                      کد:
                      $regfile = "m8def.dat"
                      $crystal = 1000000
                      $baud =9600
                      
                      Config Lcd = 16 * 2
                      Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , _
                      Db7 = Portc.5 , E = Portc.0 , Rs = Portc.1
                      Cursor Off
                      Dim Q As Byte
                      Q = 0
                      do
                      Q = Q + 1
                      Printbin Q
                      Lcd Q
                      Wait 1
                      Cls
                      Loop
                      End
                      ================================================
                      $Regfile = "m8def.dat"
                      $crystal = 1000000
                      $baud =9600
                      
                      Config Lcd = 16 * 2
                      Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , _
                      Db7 = Portc.5 , E = Portc.0 , Rs = Portc.1
                      Cursor Off
                      Dim A As Byte
                      Do
                      Inputbin A
                      Lcd A
                      Wait 1
                      Cls
                      Loop
                      End
                      با تشکر من با این تو پروتئوس جواب گرفتم از 123 شروع میکنه یکی اضافه میکنه بهش
                      seramo جان من پروگرمرم دست دوستمه
                      یه لطفی کن تو عمل ببین جواب میده یا نه :rolleyes:

                      دیدگاه


                        #12
                        پاسخ : انتقال دیتا از طریق rxd , txd بین دو میکرو با زبان بیسیک

                        انشاالله فردا عصر تست میکنم
                        آقای غفار زاده در مورد استفاده از وقفه صحبت کردند...برنامه ایشون رو هم تست میکنم.
                        بالاخره میبایست یک راه اصولی داشته باشه که بشه بدونه درد سر در پروژه ها استفاده کرد.... :eek:

                        دیدگاه


                          #13
                          پاسخ : انتقال دیتا از طریق rxd , txd بین دو میکرو با زبان بیسیک

                          نوشته اصلی توسط seramo
                          انشاالله فردا عصر تست میکنم
                          آقای غفار زاده در مورد استفاده از وقفه صحبت کردند...برنامه ایشون رو هم تست میکنم.
                          بالاخره میبایست یک راه اصولی داشته باشه که بشه بدونه درد سر در پروژه ها استفاده کرد.... :eek:
                          وقفه اصولیترین روش هست
                          چون گیرنده در هر زمانی آمادگی دریافت اطلاعات رو داره و کاری نداره که فرستنده در چه زمانی ارسال اطلاعات انجام میدهد

                          دیدگاه


                            #14
                            پاسخ : انتقال دیتا از طریق rxd , txd بین دو میکرو با زبان بیسیک

                            نوشته اصلی توسط اشکان غفارزاده
                            شما باید از وقفه سریال استفاده کنید...
                            جناب غفار زاده عزیز؛ من یک سوال در مورد وقفه سریال Urxc در بسکام داشتم که با اجازه شما بهتر دیدم همینجا بپرسم.

                            اگر در حالت عادی بخواهیم ارتباط سریال را برای میکرو تعریف کنیم، مثلا می توانیم از دستوری مانند زیر استفاده کنیم:

                            Config Serialin = Buffered , Size = 250

                            که با آن می توانیم بر حسب نیاز، سایز بافر ایجاد شده روی SRAM را تعیین کنیم. اما زمانیکه ISR وقفه سخت افزاری سریال Urxc را تعریف کنیم، دیگر قادر نیستیم سایز بافر را به دلخواه تنظیم کنیم. این موضوع برای من درد سر ساز شده است. مثلا با افزایش تدریجی حجم برنامه و درگیر شدن فضای بیشتری از حافظه SRAM، متن پیامکی که توسط ماژول SIM900 دریافت و به میکرو ارسال می شود، به صورت ناقص تر دریافت می شود. در حقیقت با افزایش حجم برنامه تا 80Kb، حالا دیگه فقط 2 تا از کاراکترهای متن پیامک دریافت می شوند (به اضافه کدهای ناخواسته). آیا راه حلی برای این مشکل وجود دارد؟

                            دیدگاه


                              #15
                              پاسخ : انتقال دیتا از طریق rxd , txd بین دو میکرو با زبان بیسیک

                              نتایج آزمایشات رو خدمت سروران عزیزم عرض میکنم :
                              همونطوری که آقای خاکدان و آقا سعید فرمودند ؛ از طریق دستورات printbin برای ارسال عدد ؛ و دستورات ( inputbin یا a=waitkey() ویا a=inkey() ) جهت دریافت ؛ موفق شدم عدد و رشته رو بر روی lcd نمایش بدم.

                              کدها:



                              فرستنده:

                              $regfile = "m8def.dat"
                              $crystal = 1000000
                              $baud =9600

                              Config Lcd = 16 * 2
                              Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , _
                              Db7 = Portc.5 , E = Portc.0 , Rs = Portc.1
                              Cursor Off


                              Dim Q As byte , z as String * 5

                              q=0
                              z = "ref1:"
                              do
                              incr Q
                              printbin z
                              'wait 1
                              printbin q

                              locate 1,2 :lcd z
                              locate 2,2 : lcd q

                              cls

                              loop

                              End



                              گیرنده:

                              $regfile = "m8def.dat" : $crystal = 1000000
                              $baud =9600

                              Config Lcd = 16 * 2
                              Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , _
                              Db7 = Portc.5 , E = Portc.0 , Rs = Portc.1
                              Cursor Off

                              Dim A As byte , z as String * 5



                              do

                              inputbin z

                              a=waitkey()

                              locate 1,2 : lcd z
                              locate 2,2 : lcd a

                              wait 1

                              cls

                              loop



                              End





                              گیرنده با استفاده از وقفه که آقا اشکان غفارزاده عزیز راهنمایی فرمودند:


                              $regfile = "m8def.dat" : $crystal = 1000000
                              $baud =9600

                              Config Lcd = 16 * 2
                              Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , _
                              Db7 = Portc.5 , E = Portc.0 , Rs = Portc.1
                              Cursor Off


                              Enable Interrupts
                              Enable Urxc
                              On Urxc Abcd

                              Dim A As byte , z as String * 5



                              do
                              cls
                              locate 1,2 : lcd z
                              locate 2,2 : lcd a

                              wait 1

                              loop

                              End

                              Abcd:
                              inputbin z

                              inputbin a
                              Return




                              تا اینجای آموزش به سلامتی طی شد ... امیدوارم برای دیگر عزیزانی که به مشکل برخوردن هم مفید بوده باشه و ثوابش هم به اساتید بزگوار برسه...!!!
                              و اما بعد ، میرسه به انتقال از طریق hm-t و hm-r
                              البته با ماژول هایی که در اختیار دارم تست میکنم و نتیجه رو خدمتون عرض میکنم...

                              دیدگاه

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