اطلاعیه

Collapse
No announcement yet.

مشکل عجیب ارتباط سریال!

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

    مشکل عجیب ارتباط سریال!

    سلام من برای بخشی از یه پروژه ربات نیاز به یه کنترل از راه دور داشتم که باید دو موتور 100W رو به صورت جپگرد و راستگرد کنترل کنم در عین حال باید پروژه ارزون تموم میشد. پس یه جفت ماژول مدولاتور و دمدولاتور ASK رو به یه جفت Atiny13A متصل کردم و چون این قطعه سخت افزار Uart نداره از Uart نرم افزاری استفاده کرم. فرکانس کلاک 9.6MHz و Baud rate رو 4800 در نظر گرفتم حالا وقتی با رایانه پیام سریال رو از گیرنده میخونم با کمی نویز پیام رو دریافت میکنم اما مشکل اینجاست که میکرو کنترلر گیرنده به ندرت به پیام واکنش نشون میده. کسی میتونه راهنماییم کنه؟
    برنامه ی فرستنده تو بسکام:
    $regfile = "attiny13a.dat"
    $crystal = 9600000
    $hwstack = 20
    $swstack = 20
    $framesize = 16

    Ddrb = &B00100
    Portb = &B11111
    Dim Dta As Byte
    Dim Order As Byte

    Declare Sub Change

    Main:

    Dta.0 = Not Pinb.0
    Dta.1 = Not Pinb.1
    Dta.2 = Not Pinb.3
    Dta.3 = Not Pinb.4

    Call Change

    Open "comb.2:4800,8,n,1" For Output As #1
    Print #1 , Order
    Close #1

    Waitms 1


    Goto Main
    End

    Sub Change:
    Select Case Dta:
    Case 0 : Order = 9 'stop
    Case 1 : Order = 3 'forward
    Case 2 : Order = 1 'left
    Case 4 : Order = 4 'right
    Case 8 : Order = 2 'reverse
    Case 3 : Order = 8 'forward left
    Case 10 : Order = 5 'reverse left
    Case 12 : Order = 6 'reverse right
    Case 5 : Order = 7 'forward left
    End Select
    End Sub

    گیرنده:

    $regfile = "attiny13a.dat"
    $crystal = 9600000
    Config Watchdog = 64

    M1 Alias Portb.0 'spin steerwheel
    M1d Alias Portb.4 'steerwheel left=0 right=1
    M2 Alias Portb.2 'move
    M2d Alias Portb.1 'reverse=1 forward=0

    Dim Dta As Byte
    Dim Lastdta As Byte

    Ddrb = &B10111
    Portb = 0

    Declare Sub Tostop
    Start Watchdog

    Main:

    Open "comb.3:4800,8,n,1" For Input As #1
    Reset Watchdog
    Input #1 , Dta
    Reset Watchdog

    If Lastdta <> Dta Then
    Select Case Dta:

    Case 1 : Gosub Tostop ' LEFT
    M1 = 1
    Lastdta = 1

    Case 2 : Gosub Tostop 'reverse
    M2d = 1
    Waitms 10
    M2 = 1
    Lastdta = 2

    Case 3 : Gosub Tostop 'forward
    M2 = 1
    Lastdta = 3

    Case 4 : Gosub Tostop 'right
    M1d = 1
    Waitms 10
    M1 = 1
    Lastdta = 4

    Case 5 : Gosub Tostop 'Reverse left
    M1 = 1
    M2d = 1
    Waitms 10
    M2 = 1
    Lastdta = 5

    Case 6 : Gosub Tostop 'reverse right
    M1d = 1
    M2d = 1
    Waitms 10
    M1 = 1
    M2 = 1
    Lastdta = 6

    Case 7 : Gosub Tostop 'forward right
    M1d = 1
    Waitms 10
    M2 = 1
    M1 = 1
    Lastdta = 7

    Case 8 : Gosub Tostop 'forward left
    M1 = 1
    M2 = 1
    Lastdta = 8

    Case 9 : Gosub Tostop ' stop all
    Lastdta = 9

    End Select
    Reset Watchdog
    Waitms 40
    Reset Watchdog
    Waitms 40
    Reset Watchdog
    Waitms 21
    End If


    Goto Main

    Sub Tostop:
    Reset Watchdog
    M1 = 0
    M2 = 0
    Waitms 10
    M1d = 0
    M2d = 0
    Waitms 10
    End Sub

    اینم شماتیک:


    البته اون ارتباط سیمی بین Tx و Rx فقط واسه تست کردن تو محیط پروتئوس بوده و در عمل وجود نداره

    هیشکی کمک نمیکنه؟
    جدیدترین ویرایش توسط اشکان غفارزاده; ۰۲:۱۴ ۱۳۹۵/۰۴/۰۱.
    من آن آشفته ماشینم که تایر زیر تن دارم
    و از اسرار بازارم همان قدر زیر و بم دارم
    چنان خسته شدم از گردش چرخان چرخانم
    که امروزه تمنای دویدن بر دو پا دارم
لطفا صبر کنید...
X