Nun, die Fragen werden ja immer detailiierter... ich kann nun korrekt Register auslesen und beschreiben, zumindest das Register CANCTRL. Mit diesen Subs:
Code:
Sub Mcpinit()
Local Can_tmp As Byte 'Lokale Variable
Print "Reset 2515..." 'MCP Resetten
Can_tmp = Cmd_reset
Reset Mcp_cs
Waitus 1
Spiout Data_tmp , 1
Waitus 1
Set Mcp_cs
Waitus 20 'Warten bis Reset erledigt, evtl. Abfrage MCP einbauen ?
Print "done!"
'( Print "change prescaler..."
Spi_write_buff(1) = Cmd_write
Spi_write_buff(2) = Canctrl
Spi_write_buff(3) = &B00000100 'Prescaler CLKOUT auf Takt/1
Reset Mcp_cs
Waitus 1
Spiout Spi_write_buff(1) , 3
Waitus 1
Set Mcp_cs
Print "done!"
')
Set Trigger
Canwrite Cnf1 , &B00000100 'forum &B00010011 'selbst:&B00000100
Reset Trigger
Canwrite Cnf2 , &B11100010 'forum &B10010000 'selbst:&B11100010 '
Canwrite Cnf3 , &B00000011 '&B00000010 'selbst: &B00000011 '
Canwrite Caninte , &B00000011 'Interrupt einstellen
Canwrite Rxb0ctrl , &B01100000 'Buffer 0: Empfangen aller Nachrichten
Canwrite Rxb1ctrl , &B01100000 'Buffer 1: Empfang aller Nachrichten
Canwrite Rxm0sidh , 0 'Kein Filter, Empfängeradresse Null
Canwrite Rxm0sidl , 0
Canwrite Rxm0eid8 , 0
Canwrite Rxm0eid0 , 0
Canwrite Rxm1sidh , 0
Canwrite Rxm1sidl , 0
Canwrite Rxm1eid8 , 0
Canwrite Rxm1eid0 , 0
Canwrite Bfpctrl , 0 'Deaktivieren der RXnBF Pins (High Impedance)
Canwrite Txrtsctrl , 0 'TXnRTS Bits als Inputs schalten
Canmod Canctrl , &B11100000 , &B00000000 'Device zurück in den normalen Modus versetzen
End Sub
Sub Canwrite(reg_add , Reg_val) 'Subroutine "schreiben"
Print Cmd_write
Print Reg_add
Print Reg_val
Spi_write_buff(1) = Cmd_write
Spi_write_buff(2) = Reg_add
Spi_write_buff(3) = Reg_val
Reset Mcp_cs
Waitus 1
Spiout Spi_write_buff(1) , 3
Waitus 1
Set Mcp_cs
End Sub
Mit dem ausgeklammerten Teil ändere ich den Prescaler. Nun soll ja auch der Rest der Konfiguration gemacht werden, dort schreibt er aber immer Nullen in die Register. Ich habe daraufhin in der Sub Canwrite die übergebenen Variablen ausgeben lassen, Reg_val wird immer mit Null ausgegeben, also offenbar nicht richtig an die Subroutine übergeben - woran kann das liegen ? Die anderen Variablen (Reg_add etc.) kommen richtig an...
Lesezeichen