SeveQ
06.10.2006, 19:43
Hi Leute,
entweder bin ich zu doof... oder ich mach was grundlegendes verkehrt. Ich möchte einen Wert, den ich in ein Register des MCP2515 CAN Controllers geschrieben hab hinterher wieder auslesen.
Dieses Auslesen passiert in folgender Routine (ich bin absoluter BASCOM Neuling, also bitte nicht lachen!)
Function Spi_read(byval Reg_add As Byte) As Byte
Dim V(3) As Byte
Dim D(4) As Byte
D(1) = Cmd_read
D(2) = Reg_add
D(3) = &HFF
D(4) = &HFF
Csn = 0
Spiout D(1) , 4
Spiin V(1) , 1
Csn = 1
Print "Rd: " ; D(2) ; " Val: " ; V(1)
Spi_read = V(1)
End Function
Es ist doch richtig, daß ich SS auf Low zieh, dann 0x03 an SO sende, dann das Register (0x0F = CANCTRL), dann (hier) zwei Dummy Bytes und danach dann sofort über Spiin das an SI anliegende Byte auslesen kann. Oder?
Weil so funktioniert's nicht. Ich bekomm statt des eingetragenen Wertes immer 0xFF zurück.
Wer sagt mir, was ich Depp da falsch mache, wo ich den Denkfehler mache?
entweder bin ich zu doof... oder ich mach was grundlegendes verkehrt. Ich möchte einen Wert, den ich in ein Register des MCP2515 CAN Controllers geschrieben hab hinterher wieder auslesen.
Dieses Auslesen passiert in folgender Routine (ich bin absoluter BASCOM Neuling, also bitte nicht lachen!)
Function Spi_read(byval Reg_add As Byte) As Byte
Dim V(3) As Byte
Dim D(4) As Byte
D(1) = Cmd_read
D(2) = Reg_add
D(3) = &HFF
D(4) = &HFF
Csn = 0
Spiout D(1) , 4
Spiin V(1) , 1
Csn = 1
Print "Rd: " ; D(2) ; " Val: " ; V(1)
Spi_read = V(1)
End Function
Es ist doch richtig, daß ich SS auf Low zieh, dann 0x03 an SO sende, dann das Register (0x0F = CANCTRL), dann (hier) zwei Dummy Bytes und danach dann sofort über Spiin das an SI anliegende Byte auslesen kann. Oder?
Weil so funktioniert's nicht. Ich bekomm statt des eingetragenen Wertes immer 0xFF zurück.
Wer sagt mir, was ich Depp da falsch mache, wo ich den Denkfehler mache?