Hallo Digitali,

also habe mal den Code etwas angepasst für den Atmega 16 kann sein das ich da noch einen fehler habe.

Master
$regfile = "m16def.dat"
$crystal = 1000000
$hwstack = 32
$swstack = 20
$framesize = 40
$baud = 9600

Dim A( As Byte
Dim B As Byte

Bl Alias Portd.1 'txd vom atmel verbunden mit max485 pin 4 (DI)
Rs485 Alias Portd.2 'INT0 vom atmel verbunden mit max485 pin 2,3 (RE,DE)

Bl = 1
Rs485 = 1

A(1) = 128 'ID
A(2) = 254 'ID
A(3) = 1 'Absender
A(4) = 2 'Empfaenger

Do
For B = 0 To 255
A(5) = B
A(6) = Crc8(a(1) , 5) 'Checksumme
Gosub Send_data
Waitms 250
Next B
Loop

End

Send_data:
Printbin A(1) ; 6
Return


Slave:
$regfile = "m16def.dat"
$crystal = 1000000
$hwstack = 32
$swstack = 20
$framesize = 40
$baud = 9600

' - - - Lcd - - -
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Porta.0 , Db5 = Porta.1 , Db6 = Porta.2 , Db7 = Porta.3 , E = Porta.5 , Rs = Porta.4 'Ausgänge zum LCD
Config Lcdbus = 4
Config Lcdmode = Port
' - - - - - - - - -

Rs485 Alias Portd.2 'INT0 vom atmel verbunden mit max485 pin 2,3 (RE,DE)
Enable Interrupts
Enable Urxc
On Urxc Isrlabel

Dim A As Bit
Dim B As Byte
Dim Zeiger As Byte
Dim Db1(6) As Byte
Dim Db2(6) As Byte

Bl Alias Portd.0 'RXD vom Atmel zu Max 486 Pin 1 RO
Bl = 1
A = 0
Zeiger = 1
Rs485 = 0

Cursor Off
Cls
Locate 1 , 1
Lcd "RS485 Empfaenger"

Do
If A = 1 Then
Locate 2 , 1
Lcd "Absender : " ; Db2(3) ; " "

Locate 2 , 1
Lcd "Empfaenger: " ; Db2(4) ; " "

Locate 2 , 1
Lcd "Datensatz : " ; Db2(5) ; " "

Locate 2 , 1
Lcd "Checksumme: " ; Db2(6) ; " "
A = 0
End If
Loop

End

Isrlabel:
Db1(zeiger) = Udr
If Zeiger = 6 Then
For B = 1 To 6
Db2(b) = Db1(b)
Db1(b) = 0
Next B
Zeiger = 1
A = 1
End If
If Db1(1) = 128 Then
Db2(1) = Db1(1)
Db1(1) = 0
Incr Zeiger
End If
If Db2(1) = 128 And Db1(2) = 254 Then Incr Zeiger
Return

Bekomme keine Daten vom Master.