اطلاعیه

Collapse
No announcement yet.

اتصال atmega8 به پورت سریال و انتقال اطلاعات به atmega8 بعدی

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

    اتصال atmega8 به پورت سریال و انتقال اطلاعات به atmega8 بعدی

    با عرض سلم و خسته نباشید .
    دو تا مگا 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
    و بعد هم خروجی این دو پایه رو مستقیما ( در اصل قراره با max485 وصل شه که برای چک کردن کارای فعلا اون رو حذف کردم ، )
    اما اصلا دیتا به میکروی دوم منتقل نمیشه :
    این نمونه کدهام هست :
    این کد مستر هست که با ماکس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
    اینجا در میکروی دوم (اسلیو ) هیچ اتفاقی نمی افته و هیچ وقت Serial0bytereceived فراخوانی نمیشه ، لطفا راهنمایی بفرمایید .
    با تشکر فراوان .


    #2
    پاسخ : اتصال atmega8 به پورت سریال و انتقال اطلاعات به atmega8 بعدی

    سلام
    لطفا راهنمایی کنید .
    ممنون

    دیدگاه

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