اطلاعیه

Collapse
No announcement yet.

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

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

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

    با سلام
    من یه برنامه دارم که با پورت سریال دیتای کنترلی میفرسته با استفاده از پورتت سریال مثل یه ریموت کنترلر
    اما برنامه ای که نوشتم تا زمانی که دستور ارسال میشه میکرو کار میکنه
    چجور میتونم در زمانی که دستور سریالی نمیفرستم میکرو توی وقفه سریال نمونه و بتونه کار دیگه ای مثل چشمک زدن یه ال ای دی رو انجام بده و زمانی که فرمانی دریافت میکنه وقفه سریال فعال بشه؟
    کد:
    $regfile = "m8def.dat"
    $crystal = 3686400
    
    
    Config Portd.0 = Input
    Config Portb.0 = Output
    Config Portd.7 = Output
    Config Portd.6 = Output
    Config Portb.1 = Output
    Config Portd.5 = Output
    Config Portb.4 = Output
    Config Portb.3 = Output
    Config Portc = Input
    
    Dim J As String * 1
    Dim T As String * 4
    Dim Hh As String * 1
    Dim Pp As String * 1
    Dim Ch As String * 1
    Dim Uu As String * 1
    Dim Ddf As String * 1
    Dim Ddf1 As String * 1
    Dim Cha As String * 1
    Dim Utb As String * 4
    Dim Uf1 As String * 4
    Dim Caracter As String * 1
    
    Dim Z0 As Byte , Z1 As Byte , Z2 As Byte , Z3 As Byte , Z4 As Byte , Z5 As Byte , Z6 As Byte
    Dim W As Byte
    Dim Rr As Byte
    Dim Chb As Byte
    Dim E As Byte
    Dim Ut As Byte
    Dim Uf As Byte
    Dim Dip As Byte
    Config Watchdog = 16
    Config Serialin = Buffered , Size = 7
    $baud = 9600
    
    Enable Urxc
    
    Enable Interrupts
    
    
    
    Dip = Pinc
    Do
    Inputbin Z0 , Z1 , Z2 , Z3 , Z4 , Z5 , Z6
    
    Rr = Asc(z0)
    If Rr = 255 Then
    Set Portb.0
    W = Asc(z1)
    Ut = Asc(z3)
    Utb = Bin(ut)
    
    
    
    
    
    Uu = Mid(utb , 8 , 1)
    If W = Dip And Uu = "0" Then
    
    Uf = Asc(z2)
    Uf1 = Bin(uf)
    Ddf1 = Mid(uf1 , 6 , 1)
    
    
    If Ddf1 = "1" Then
    Lcd "pain"
    Set Portd.6
    Else
    Reset Portd.6
    End If
    
    
    
    
    Ddf = Mid(uf1 , 7 , 1)
    If Ddf = "1" Then
    Locate 1 , 6
    Lcd "chap"
    Set Portd.7
    Else
    Reset Portd.7
    
    End If
    
    
    End If
    
    Else
    
    Start Watchdog
    End If
    Loop
    
    End

    #2
    پاسخ : مشکل توقف میکرو در وقفه سریال

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


    کد:
    On Urxc lable_rx 
    Enable Urxc  
    Enable Interrupts 
    
    
    do
    loop
    end
    
    lable:
    
    
    return


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

    دیدگاه


      #3
      پاسخ : مشکل توقف میکرو در وقفه سریال

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

      دیدگاه


        #4
        پاسخ : مشکل توقف میکرو در وقفه سریال

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

        دیدگاه


          #5
          پاسخ : مشکل توقف میکرو در وقفه سریال

          اقا من با دستور بالا مشکل به مشکل میخورم چون یبار وقفه سریالو با دستور
          Config Serialin = Buffered , Size = 7
          فعال کردم دیگه ارور میده وقتی دستور On Urxc lable_rx رو میزنم میگه دوبار وقفه سریال تعریف شده
          چه کنیم

          دیدگاه


            #6
            پاسخ : مشکل توقف میکرو در وقفه سریال

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

            دیدگاه


              #7
              پاسخ : مشکل توقف میکرو در وقفه سریال

              این برنامه نمونه رو نوشتم اما بعد از چند بار دریافت میکرو هنگ میکنه و دیگه رفرش نمیکنه و بهم ریخته نشون میده
              کد:
               $regfile = "m8def.dat"
              $crystal = 8000000
              
              
              Dim Z10 As String * 7
              Dim Dip As Byte
              Dim Z0 As Byte , Z1 As Byte , Z2 As Byte , Z3 As Byte , Z4 As Byte , Z5 As Byte , Z6 As Byte
              Dim Ut As Byte
              Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.3 , _
              Db6 = Portb.2 , Db7 = Portb.1 , E = Portd.3 , Rs = Portd.2
              Cursor Off
              
              $baud = 9600
              Enable Urxc
              Enable Interrupts
              On Urxc Normal
              Dip = 0
              
              Dim I As Word
              Dim X As Word
              Dim Fif As Word
              Dim Dat As Word
              Dim Y As String * 2
              
               Cls
              Do
              Cls
              Locate 1 , 1
               Lcd "hello"
               Waitms 50
              Loop
              End
              Normal:
              
              
              Inputbin Z0 , Z1 , Z2 , Z3 , Z4 , Z5 , Z6
              
              
              Lowerline
              Y = Hex(z3)
              Lcd Y
              
              
              
              
              
              
               Return

              دیدگاه


                #8
                پاسخ : مشکل توقف میکرو در وقفه سریال

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

                دیدگاه

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