the sub below reads RFID card number from RDM6300 module, and displays the number on OLED display, I used this code with arduino and leonardo with no errors, i made some modifications to run it on ESP32S, when I use ArrayCopy or ArrayCopy2 I get the error below
I used this simple loop to copy the array, and it worked OK, I don't know is that a bug or my code needs modifications?
RandomAccessFile version: 1.91
load:0x40078000,len:8896
load:0x40080400,len:5816
entry 0x400806ac
Guru Meditation Error: Core 1 panic'ed (InstrFetchProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x03394639 PS : 0x00060930 A0 : 0x800d2bb6 A1 : 0x3ffc8c10
A2 : 0x3ffc4f44 A3 : 0x3ffba4b8 A4 : 0x8008ea60 A5 : 0x3ffc8b30
A6 : 0x00000000 A7 : 0x3ffc6d20 A8 : 0x800d2b69 A9 : 0x3ffc8bd0
A10 : 0x3ffc4fbc A11 : 0x3ffc4efc A12 : 0x00000022 A13 : 0x00000001
A14 : 0x3ffc8bd8 A15 : 0x3ffc8be0 SAR : 0x0000000a EXCCAUSE: 0x00000014
EXCVADDR: 0x03394638 LBEG : 0x4000c2e0 LEND : 0x4000c2f6 LCOUNT : 0x00000000
Backtrace: 0x03394639:0x3ffc8c10 0x400d2bb3:0x3ffc8c30 0x400d3fd2:0x3ffc8c50 0x400db4c9:0x3ffc8c70 0x4008e84d:0x3ffc8c90
Rebooting...
I used this simple loop to copy the array, and it worked OK, I don't know is that a bug or my code needs modifications?
B4X:
For X = 0 To BufferLast.Length - 1 ' no erros with this solution, array copy or array copy2 causes ESP32 to reset
BufferLast(X) = Buffer(X)
Next
load:0x40078000,len:8896
load:0x40080400,len:5816
entry 0x400806ac
Guru Meditation Error: Core 1 panic'ed (InstrFetchProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x03394639 PS : 0x00060930 A0 : 0x800d2bb6 A1 : 0x3ffc8c10
A2 : 0x3ffc4f44 A3 : 0x3ffba4b8 A4 : 0x8008ea60 A5 : 0x3ffc8b30
A6 : 0x00000000 A7 : 0x3ffc6d20 A8 : 0x800d2b69 A9 : 0x3ffc8bd0
A10 : 0x3ffc4fbc A11 : 0x3ffc4efc A12 : 0x00000022 A13 : 0x00000001
A14 : 0x3ffc8bd8 A15 : 0x3ffc8be0 SAR : 0x0000000a EXCCAUSE: 0x00000014
EXCVADDR: 0x03394638 LBEG : 0x4000c2e0 LEND : 0x4000c2f6 LCOUNT : 0x00000000
Backtrace: 0x03394639:0x3ffc8c10 0x400d2bb3:0x3ffc8c30 0x400d3fd2:0x3ffc8c50 0x400db4c9:0x3ffc8c70 0x4008e84d:0x3ffc8c90
Rebooting...
B4X:
private Sub ReadRFID(Buffer() As Byte)
Dim tmpBuffer () As Byte
Dim Str_HexNumber As String
Dim Int_Number As ULong
If BC.ArrayCompare(Buffer,BufferLast) = 0 Then Return'compare last read card to recent one
tmpBuffer= BC.SubString2(Buffer,3,11) 'get card bytes only, get ride of checksum and start byte
Str_HexNumber = BC.StringFromBytes(tmpBuffer)
Int_Number = Bit.ParseInt(Str_HexNumber, 16) 'convert hex to decimal string
If Int_Number = 0 Then Return
Dim Int_Str()As Byte = NumberFormat (Int_Number,10,0)
'OLED.StopScroll
RandomDisplayTimerTicks = 0 'avoid screen saver while reading (reset timer)
NoReadingTimerTicks = 0
DisplayCardNumber(Int_Str)
'Log(StackBufferUsage)
'BC.ArrayCopy(Buffer,BufferLast) 'copy last read to recent one, for next comparison
'BC.ArrayCopy2(Buffer,0,BufferLast,0,Buffer.Length)
For X = 0 To BufferLast.Length - 1 ' no erros with this solution, array copy or array copy2 causes ESP32 to reset
BufferLast(X) = Buffer(X)
Next
If BKP.isConnected Then
BKP.WriteStr(Int_Str,10)
BKP.Write(13)
BKP.Write(10)
BeepConfirm
End If
End Sub