Nun, die Fragen werden ja immer detailiierter... ich kann nun korrekt Register auslesen und beschreiben, zumindest das Register CANCTRL. Mit diesen Subs:
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...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







Zitieren

Lesezeichen