Teste das mal, vorher noch die Standartwerte für den Prozessor einsetzen
Kommt aus dem Bascom-Forum
Code:
$sim
Config Spi = Soft , Din = Pinb.2 , Dout = Portb.1 , Ss = None , Clock = Portb.0
Dim C1 As Byte
Dim A(3) As Byte
Declare Sub Spi_write(byval Reg_add As Byte , Byval Reg_val As Byte)
Const Cmd_read = &H03 ' Read Command
Const Cmd_write = &H02 ' Write Command
Const Cmd_bitmodify = &H05 ' Bit-modify Command
Const Cmd_readstatus = &HA0 ' Read Status Command (poll)
Const Cmd_reset = &HC0 ' Reset Command
Const Canctrl = &H0F
Const Cnf3 = &H28 ' Configuration Register 3
Const Cnf2 = &H29 ' Configuration Register 2
Const Cnf1 = &H2A ' Configuration Register 1
Const Txb0ctrl = &H30 ' Transmit Buffer 0 Control Register
Const Txb0sidh = &H31 ' Transmit Buffer 0 Std Identifier High
Const Txb0sidl = &H32 ' Transmit Buffer 0 Std Identifier Low
Const Txb0eid8 = &H33 ' Transmit Buffer 0 Ext Identifier High
Const Txb0eid0 = &H34 ' Transmit Buffer 0 Ext Identifier Low
Const Txb0dlc = &H35 ' Transmit Buffer 0 Data Length Code
Const Txb0d0 = &H36 ' Transmit Buffer 0 Data Byte 0
Const Txb0d1 = &H37 ' Transmit Buffer 0 Data Byte 1
Const Txb0d2 = &H38 ' Transmit Buffer 0 Data Byte 2
Const Txb0d3 = &H39 ' Transmit Buffer 0 Data Byte 3
Const Txb0d4 = &H3A ' Transmit Buffer 0 Data Byte 4
Const Txb0d5 = &H3B ' Transmit Buffer 0 Data Byte 5
Const Txb0d6 = &H3C ' Transmit Buffer 0 Data Byte 6
Const Txb0d7 = &H3D ' Transmit Buffer 0 Data Byte 7
Const Rts0 = &H81
Print "Welcome!"
Config Pinb.3 = Output
Config Pinb.4 = Output
Csn Alias Portb.3
Can_reset Alias Portb.4
Spiinit
Can_reset = 1
Print "Reset Done!"
'RESET
Csn = 0
A(1) = Cmd_reset
Spiout A(1) , 1
Csn = 1
Wait 2
'Controls
Spi_write Canctrl , &B00000100
Print "speed change done"
Spi_write Cnf1 , &H07 '03
Spi_write Cnf2 , &H90 '90
Spi_write Cnf3 , &H02 '02
'Do
'Spi_write Txb0d0 , 55 'send motor speed
'Csn = 0
'A(1) = &B10000001
'Spiout A(1) , 1
'Csn = 1
Wait 1
Print "here we go"
Wait 1
Print "senden"
Spi_write Txb0sidh , &HFF
Spi_write Txb0sidl , &H00
Spi_write Txb0dlc , &H3
Csn = 0
A(1) = Rts0
Spiout A(1) , 1
Csn = 1
' Loop
End
Sub Spi_write(byval Reg_add As Byte , Byval Reg_val As Byte)
Print "Reg: " ; Reg_add ; " Val: " ; Reg_val
A(1) = Cmd_write
A(2) = Reg_add
A(3) = Reg_val
Csn = 0
Spiout A(1) , 3
Csn = 1
End Sub
Lesezeichen