سلام من برای بخشی از یه پروژه ربات نیاز به یه کنترل از راه دور داشتم که باید دو موتور 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 فقط واسه تست کردن تو محیط پروتئوس بوده و در عمل وجود نداره
$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 فقط واسه تست کردن تو محیط پروتئوس بوده و در عمل وجود نداره
هیشکی کمک نمیکنه؟