Falls Feitzi noch mitliest: Deine Leseroutine kannst Du vielleicht etwas optimieren, so wie hier:
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.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







Zitieren

Lesezeichen