Falls Feitzi noch mitliest: Deine Leseroutine kannst Du vielleicht etwas optimieren, so wie hier:
Code:
Dlc0 = Canread(rxb0dlc)
Print "RxB0DLC=" ; Bin(canread(rxb0dlc))
Print "RxB0CTRL=" ; Bin(canread(rxb0ctrl))
Spi_read_buff(1) = Cmd_read
Spi_read_buff(2) = Rxb0d0
Reset Mcp_cs
Waitus 1
Spiout Spi_read_buff(1) , 2
Spiin Can_rxd_data(1) , Dlc0
Waitus 1
Set Mcp_cs
For N = 1 To Dlc0
M = N - 1
Print "0D" ; M ; "=" ; Can_rxd_data(n) ; "-"
Next N
Canmod Canintf , &B00000001 , &B00000000
Canmod Eflg , &B01000000 , &B00000000
natürlich noch ohne Fehlerauswertung, aber deutlich übersichtlicher. Diese Routine liest so lange Register aus, wie der DLC lang ist und legt sie automatisch in einem maximal 8 Byte langen Array ab. Braucht deutlich weniger Hilfsvariablen (eine nur zur Anzeige) und eine deutlich kleinere Schleife - und diese auch nur zum Anzeigen.
Lesezeichen