Cool danke.
Wenn ich das richtig verstanden habe müsste das in etwa wie folgt aussehen.
Code:
$regfile = "m2560def.dat"
$crystal = 14745600
$baud = 921600
Config Com3 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Enable Interrupts
Enable Urxc2
On Urxc2 Buf_write
Dim Base As Word
Dim Top As Word
Dim Wrpnt As Word
Dim Rdpnt As Word
Dim One_w As Byte
Dim One_r As Byte
Dim Buffer(260) As Byte
Buf_init:
Base = Varptr(buffer(1)) 'mem-adr von Buffer-base
Top = Base + 260 'mem adr von bufer top
Wrpnt = Base 'write pointer
Rdpnt = Base 'read pointer
Return
Do
'Main Programm
Loop
Buf_write:
One_w = Udr2 ' byte from UART
Out Wrpnt , One_w ' into buffer
Incr Wrpnt ' pointer + 1
If Wrpnt >= Top Then Wrpnt = Base ' wrap around
Return
Buf_read:
Disable Urxc2
If Rdpnt = Wrpnt Then
Enable Urxc2
One_r = 0 ' no data
Else
Enable Urxc2
One_r = Inp(rdpnt) ' read from pointer
Incr Rdpnt ' pointer + 1
If Rdpnt >= Top Then Rdpnt = Base ' wrap around
End If
Return
Mir schwebt grad noch eine Funktion in form des Ischarwaiting vor (bzw. ein FlagBit). Das sollte allerdings kein Problem sein.
Danke nochmal für deine Hilfe.
MfG
Lesezeichen