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...