اطلاعیه

Collapse
No announcement yet.

هنگ میکرو با دستور input bin یا input

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

    هنگ میکرو با دستور input bin یا input

    سلام
    دوستان در حال راه اندازی ماژول hm-trpهستم ولی مشکلی وجود داره...به محض اینکه برنامه به دستور inputbin یه inputیاserinیه اصلا هر دستوری که برای ورودی از پورت سریال تعریف میکنیم میکرو هنگ میکنه و جم نمیخوره تا دستورو پا کنم...حتی ماژول رو نیز در آوردم ولی مشکل پابرجاست وجالب اینه که با دستور ارسال مشکلی ندارم

    #2
    پاسخ : هنگ میکرو با دستور input bin یا input

    با تست هایی که انجام دادم این دستور منتظر میمون تا دیتا بیاد بعد میره خط بعدی من نمیخوام اینطوری رفتار کنه میخوام جوری باشه که در صورت عدم وجود دیتا بره خط بعد

    دیدگاه


      #3
      پاسخ : هنگ میکرو با دستور input bin یا input

      درود

      از دستور inkey استفاده کن ... ولی باید این رو بگذارید توی یه حلقه ای که تند تند چک کنه ببینه داده ای رسیده یا خیر ...

      موفق باشید
      [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
      معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
      معرفی نرم افزار Codewizard PWM
      با من بیشتر آشنا شوید

      دیدگاه


        #4
        پاسخ : هنگ میکرو با دستور input bin یا input

        سلام
        از اونجا که من TWI رو با بسکام راه انداختم ، الان فقط عدد میفرسته ، بخوام رشته بفرستم باید چیکارکنم؟؟
        یه سوال دیگه :
        با یوزارت بخوام رشته بفرستم و دریافت کنم ، دستور ارسال و دریافت رشته تو بسکام چیه؟؟
        با راه اندازی خود یوزارت هم مشکلی ندارم ....
        ممنون میشم کمکم کنین....
        تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
        علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

        دیدگاه


          #5
          پاسخ : هنگ میکرو با دستور input bin یا input

          سلام
          نوشته اصلی توسط pars_paya
          از اونجا که من TWI رو با بسکام راه انداختم ، الان فقط عدد میفرسته ، بخوام رشته بفرستم باید چیکارکنم؟؟
          همونطور که قبلا هم گفتم من زیاد بیسیک بلد نیستم ...
          دوستانی که بیسیک بلد هستند کمک کنند ...

          نوشته اصلی توسط pars_paya
          با یوزارت بخوام رشته بفرستم و دریافت کنم ، دستور ارسال و دریافت رشته تو بسکام چیه؟؟
          با راه اندازی خود یوزارت هم مشکلی ندارم ....
          حدس میزنم با دستور Print باشه ...

          موفق باشید
          [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
          معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
          معرفی نرم افزار Codewizard PWM
          با من بیشتر آشنا شوید

          دیدگاه


            #6
            پاسخ : هنگ میکرو با دستور input bin یا input

            دنبال یه جفت دستور send & reseve میگردم که باهاش رشته ارسال کنم .....
            تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
            علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

            دیدگاه


              #7
              پاسخ : هنگ میکرو با دستور input bin یا input

              نوشته اصلی توسط سامان اسدی
              درود

              از دستور inkey استفاده کن ... ولی باید این رو بگذارید توی یه حلقه ای که تند تند چک کنه ببینه داده ای رسیده یا خیر ...

              موفق باشید
              با سلام
              دستور inkey خطای زیادی داشت ومن اومدم با همون inputbin خواندن رو انجام دادم منتها با استفاده از وقفه سریال و رفتن به زیر برنامه
              برنامه رو میزارم لطف کنید اگه مشکلی داشت از لحاظ برنامه بهم بگیدگتشکر
              فرستنده:
              کد:
              $regfile = "m8adef.dat"
              '$crystal = 8000000                     'Const Min_time = 48
              '$crystal = 16000000                     'Const Min_time = 95
              $crystal = 11059200
               $baud = 9600                       'Const Min_time = 66
              '-------------------------------------------------------------------------------
              
              Config Pinb.0 = Input                    'DHT22 Data
              Config Timer0 = Timer , Prescale = 8
               Config Portd.4 = Output
                Config Lcd = 16 * 2
              Config Lcdpin = Pin , Db4 = Pinb.1 , Db5 = Pinb.2 , Db6 = Pinb.3 , Db7 = Pinb.4 , E = Pinb.5 , Rs = Pind.2
              Cursor Off
              '.-------------------------------------------------------------------------------
              'Const Min_time = 95
              'Const Min_time = 48
              Const Min_time = 66
              '-------------------------------------------------------------------------------
              Dim B As Single
              Dim B1 As Byte
              Dim E As Single
              Dim E1 As Byte
              Dim Count As Byte
              Dim Signaltime(43) As Byte
              Dim Humidityw As Word
              Dim Temperaturew As Word
              Dim Humsens_chksum As Byte
              Dim Hum1 As String * 4
              Dim Temp1 As String * 4
              Dim Humiditys As String * 16
              Dim Temperatures As String * 16
               Dim Code As Byte
               Dim A As Byte
              Dim Strstring As String * 14
              Dim Ib As Byte
               Cls
               Lcd "meysam"
              Portd.4 = 1
                Waitms 1000
                Portd.4 = 0
                Waitms 1000
               Code = 150
              '-------------------------------------------------------------------------------
              Declare Sub Read_timings
              Declare Sub Humtemp_values
              
              Declare Function Compare_chksum(byval Hsens_humidity As Word , _
              Byval Hsens_temperature As Word , Byval Hsens_chksum As Byte) As Byte
              
              Do
               Call Humtemp_values
              
                Humiditys = Str(humidityw)
                Temperatures = Str(temperaturew)
              Hum1 = Format(humiditys , "00.0")
              Temp1 = Format(temperatures , "00.0")
              
              B = Val(temp1)
              B1 = Int(b)
              E = Val(hum1)
              E1 = Int(e)
              Locate 1 , 1
              Lcd B1
              Locate 2 , 1
              Lcd E1
              
              
                Toggle Portd.4
              
              Printbin Code
              Printbin B1
              printbin E1
              
              
              
              Loop
              
              End
              '-------------------------------------------------------------------------------
              
              Sub Read_timings
              Waitms 1000
              
              
              
              
                Count = 1
              
                Config Pinb.0 = Output : Portb.0 = 0           ' request data
                Waitms 20                        ' wait 20 ms
                Config Pinb.0 = Input                  ' wait for data, receive data
              
                While Count < 43                     'collect 42 timings / signals
              
                 Bitwait Pinb.0 , Set                 'signal goes high > start timer
                 Start Timer0
                 Bitwait Pinb.0 , Reset                'signal goes low > stop timer
                 Stop Timer0
                 Signaltime(count) = Tcnt0               'store number of ticks per signal in Signaltime byte
              
                 Tcnt0 = 0
                 Incr Count
              
               Wend
              
              
              End Sub
              
              '############################################## Humidity and temperature values
              
              Sub Humtemp_values
              
                Local X As Byte
              
                Humidityw = 0
                Temperaturew = 0
                Humsens_chksum = 0
              
                Call Read_timings
              
                For Count = 3 To 42                   ' skip first two
              
                 Select Case Count
              
                   Case 3 To 18
                    X = 18 - Count
                    If Signaltime(count) > Min_time Then Toggle Humidityw.x
              
                   Case 19 To 34
                    X = 34 - Count
                    If Signaltime(count) > Min_time Then Toggle Temperaturew.x
              
                   Case 34 To 42
                    X = 42 - Count
                    If Signaltime(count) > Min_time Then Toggle Humsens_chksum.x
              
                 End Select
              
               Next
              
              End Sub
              
              '######################### Calculate Checksum and compare with trasnmitted value
              
              
              Function Compare_chksum(byval Hsens_humidity As Word , Byval Hsens_temperature As Word , Byval Hsens_chksum As Byte) As Byte
              
                Local Chksum As Byte
              
                Chksum = Low(hsens_humidity ) + High(hsens_humidity )
                Chksum = Chksum + Low(hsens_temperature)
                Chksum = Chksum + High(hsens_temperature)
              
                If Chksum = Hsens_chksum Then
                 Compare_chksum = 1
                Else
                 Compare_chksum = 0
                End If
              
              End Function
              گیرنده:
              کد:
              
              
              
              $regfile = "m32def.dat"
              $crystal = 11095200
              $hwstack = 40
              $swstack = 16
              $framesize = 32
              $baud=9600
              Config Portb.7 = Output
              Dim Code As Byte
              Dim A As Word
              Dim B As Single
              Dim B1 As Byte
              Dim E As Single
              Dim E1 As Byte
              Dim T1 As Byte
              
              Dim H1 As Byte
              Dim T2 As String * 16
              Dim H2 As String * 16
              Enable Interrupts
              Enable Urxc
              On Urxc Reci
              
              Config Lcd = 16 * 2
              Config Lcdpin = Pin , Db4 = Pinc.3 , Db5 = Pinc.2 , Db6 = Pinc.1 , Db7 = Pinc.0 , E = Pinc.4 , Rs = Pinc.5
              Cursor Off
              Deflcdchar 0 , 14 , 10 , 14 , 32 , 32 , 32 , 32 , 32
              Portb.7 = 1
              Waitms 1000
              A = 0
              Cls
              Do
              Incr A
              
               Locate 1 , 1
               Lcd "T1="
              Lcd T1
              Lcd Chr(0)
              Lcd "c"
               Locate 2 , 1
              Lcd "H1="
              Lcd H1
              Lcd " "
              Lcd "%"
              Lcd " "
              
              
              
              
              Locate 2 , 10
              Lcd A
              Loop
              
              End
              Reci:
              Inputbin Code
              If Code = 150 Then
              Inputbin T1
              Inputbin H1
               End If
               Toggle Portb.7
              Return

              دیدگاه


                #8
                پاسخ : هنگ میکرو با دستور input bin یا input

                نوشته اصلی توسط pars_paya
                سلام
                از اونجا که من TWI رو با بسکام راه انداختم ، الان فقط عدد میفرسته ، بخوام رشته بفرستم باید چیکارکنم؟؟
                یه سوال دیگه :
                با یوزارت بخوام رشته بفرستم و دریافت کنم ، دستور ارسال و دریافت رشته تو بسکام چیه؟؟
                با راه اندازی خود یوزارت هم مشکلی ندارم ....
                ممنون میشم کمکم کنین....
                با سلام
                من رشته رو با printbinمیفرستم ومشکی تابحال نداشته

                دیدگاه


                  #9
                  پاسخ : هنگ میکرو با دستور input bin یا input

                  سلام
                  با چه دستوری دریافتش میکنین؟؟
                  تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
                  علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

                  دیدگاه


                    #10
                    پاسخ : هنگ میکرو با دستور input bin یا input

                    نوشته اصلی توسط pars_paya
                    سلام
                    با چه دستوری دریافتش میکنین؟؟
                    سلام با inputbin

                    دیدگاه


                      #11
                      پاسخ : هنگ میکرو با دستور input bin یا input

                      میشه یه لطفی کنید و یه نمونه برنامه بذارین؟؟
                      تشکر
                      تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
                      علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

                      دیدگاه


                        #12
                        پاسخ : هنگ میکرو با دستور input bin یا input

                        نوشته اصلی توسط pars_paya
                        میشه یه لطفی کنید و یه نمونه برنامه بذارین؟؟
                        تشکر
                        برنامه رو بالا گذاشتم,هم فرستنده وهم گیرنده,بدون خطا انجام میده

                        دیدگاه


                          #13
                          پاسخ : هنگ میکرو با دستور input bin یا input

                          مشکل اینجاست که مقدار کریستال انخابی واسه میکرو 16 مگ هست ....
                          در اینصورت خطا خیلی زیاد میشه ...
                          یه راهی واسه درست کار کردنش میخوام ...(با 16 مگ)
                          تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
                          علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

                          دیدگاه


                            #14
                            پاسخ : هنگ میکرو با دستور input bin یا input

                            با سلام
                            ممکنه برای پاسخ کمی دیر باشه اماا نکاتی هست که حتما باید عرض بشه
                            در روال دریافت اطلاعات بانرم افزار بسکام باید به دو نکته دقت فراوانی بشه
                            اولا باید از سه دستور زیر برای تعیین حافظه های استک به صورت های سخت افزاری و نرم افزاری استفاده کرد
                            کد:
                            $hwstack = 82
                            $swstack = 82
                            $framesize = 82
                            هر کدام از این سه دستور برای یک کاربرد خاص تعیین شده و البته فرمول ساده ای داره که در تاپیکی کامل اون رو توضیح دادم
                            دقت بفرمایید که در صورت ننوشتن این دستورات بسکام اونها رو به صورت پیش فرض و با مقدار کمی تعیین میکنه
                            بنابر این اگر حافظه استک شما در اثر پرش به روتین وقفه پر بشه ، حافظه استک پر و میکرو ریست میشه (گاهی هنگ)
                            بنابراین باید مقدار دهی مناسب انجام بگیره
                            دوما:
                            به تجربه عرض میکنم در نرم افزار بسکام و بالاخص در ارتباط یوزارت ، به هیچ عنوان،به هیچ عنوان از پرش به روتین وقفه استفاده نفرمایید
                            نه اینکه کار نکنه و یا اینکه ایرادی داشته باشه
                            اما بنده به تجربه از کارکرد اون دل خوشی ندارم
                            راه حل:
                            استفاده از دستور زیر و اون هم در حلقه اصلی
                            کد:
                            Config Serialin = Buffered , Size = 200
                            و در حلقه اصلی

                            کد:
                            If Ischarwaiting() = 1 Then
                            با این دستور هیچ گاه میکرو هنگ نمیکنه و ایرادی در توابع مختلف دریافتی در بسکام نخواهید دید
                            inkey
                            inputbin
                            waitkey
                            و ...
                            تمامی این دستورات در صورت استفادده درست از روتین وقفه به درستی کار میکنند و مشکلی ندارند
                            در ضمن دوستان سعی کنن به راهنمای بسکام مراجعه کنند و متن این دستورات رو بخونن
                            راهنمای بسکام واقعا کامل و جامع است

                            دیدگاه

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