با عرض سلم و خسته نباشید .
دو تا مگا 8 دارم .
مگا 8 اولی با واسطه max232 به پورت سریال وصل هست و به درستی با پورت سریال ارتباط برقرار میکنه .
میکروی اول ، دستوراتی رو که از پورت سریال میگیره ، به میکروی بعدی ( مستقیم و یا با واسطه max485 ) انتقال میده .
برای اینکه بتونم پورت سریال جدید (به جز پایه 2 و 3 میکرو (RX , TX )) ایجاد کنم تا بتونم اطلاعات رو از میکروی اول به دومی برسونم و اطلاعات سنسور ها رو هم بگیرم ، دو تا پورت میکرو رو به عنوان com جدید تعریف کردم به این صورت :
و بعد هم خروجی این دو پایه رو مستقیما ( در اصل قراره با max485 وصل شه که برای چک کردن کارای فعلا اون رو حذف کردم ، )
اما اصلا دیتا به میکروی دوم منتقل نمیشه :
این نمونه کدهام هست :
این کد مستر هست که با ماکس232 به پورت سریال وصل شده :
و این هم کدهای اسلیو که به میکروی اول وصل میشه :
اینجا در میکروی دوم (اسلیو ) هیچ اتفاقی نمی افته و هیچ وقت Serial0bytereceived فراخوانی نمیشه ، لطفا راهنمایی بفرمایید .
با تشکر فراوان .
دو تا مگا 8 دارم .
مگا 8 اولی با واسطه max232 به پورت سریال وصل هست و به درستی با پورت سریال ارتباط برقرار میکنه .
میکروی اول ، دستوراتی رو که از پورت سریال میگیره ، به میکروی بعدی ( مستقیم و یا با واسطه max485 ) انتقال میده .
برای اینکه بتونم پورت سریال جدید (به جز پایه 2 و 3 میکرو (RX , TX )) ایجاد کنم تا بتونم اطلاعات رو از میکروی اول به دومی برسونم و اطلاعات سنسور ها رو هم بگیرم ، دو تا پورت میکرو رو به عنوان com جدید تعریف کردم به این صورت :
کد:
Open "comb.1:2400,8,n,1" For Output As #2 Open "comd.2:2400,8,n,1" For Input As #3
اما اصلا دیتا به میکروی دوم منتقل نمیشه :
این نمونه کدهام هست :
این کد مستر هست که با ماکس232 به پورت سریال وصل شده :
کد:
$regfile = "m8def.dat" $crystal = 1000000 $baud = 2400 '$sim Config Com1 = 2400 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0 Config Serialin = Buffered , Size = 20 , Bytematch = All Config Serialout = Normal Open "comb.1:2400,8,n,1" For Output As #2 Open "comb.2:2400,8,n,1" For Input As #3 Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc Rs485 Alias Portc.5 Enable Interrupts Dim S2 As String * 1 Dim Sensors As String * 20 Main: Rs485 = 1 Print "HELLLLlllllllllllllllllo" Do Loop End Serial0bytereceived: S2 = Inkey() Cls Select Case S2 Case "S" Rs485 = 1 Print #2 , S2 Rs485 = 0 Input #3 , Sensors Rs485 = 1 Print Sensors Case Else Rs485 = 1 Print #2 , S2 Print S2 End Select Return
کد:
$regfile = "m8def.dat" $crystal = 1000000 $baud = 2400 '$sim Config Com1 = 2400 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0 Config Serialin = Buffered , Size = 20 , Bytematch = All Config Serialout = Normal Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc Config Portb.5 = Output Config Portb.4 = Output Config Portb.3 = Output Config Portb.2 = Output Config Portb.1 = Output Config Portb.0 = Output Config Portd.7 = Output Config Portd.6 = Output Config Portc.5 = Output Motorj Alias Portb.5 Motora Alias Portb.4 Dbala Alias Portb.3 Dpayin Alias Portb.2 Dleft Alias Portb.1 Dright Alias Portb.0 Rs485 Alias Portc.5 Enable Interrupts Dim S2 As String * 1 Dim Sensors As String * 20 Rs485 = 0 Main: Do Loop End Serial0bytereceived: S2 = Inkey() Cls Select Case S2 Case "J" Motorj = 1 Motora = 0 Case "A" Motorj = 0 Motora = 1 Case "T" Motorj = 0 Motora = 0 Case "S" Rs485 = 1 Sensors = "S1" + Str(getadc(0)) + "S2" + Str(getadc(0)) Print Sensors Rs485 = 0 End Select Return
با تشکر فراوان .
دیدگاه