hallo
So das ist mein Programm das ich geschrieben habe
aber leider kann ich am can bius nix ampfangen
was habe ich falsch gemacht ?
ps. Das Programm ist in Basic geschrieben
'********************************
'Can bus test file 1
'********************************
Config PORTD.0 = Output 'led 1
Config PORTD.1 = Output 'LED 2
Symbol led1 = PORTD.0
Symbol led2 = PORTD.1
AllDigital
Define SPI_CS_REG = PORTB
Define SPI_CS_BIT = 4
Define SPI_SCK_REG = PORTB
Define SPI_SCK_BIT = 1
Define SPI_SDI_REG = PORTB
Define SPI_SDI_BIT = 0
Define SPI_SDO_REG = PORTC
Define SPI_SDO_BIT = 7
SPIPrepare
SPICSOff
PORTB.4 = 1
WaitMs 5
loop:
'**********************************
'SPICSOn
'WaitMs 10
'**********************************
'/ MCP2515 per Software Reset zuruecksetzten,
'// danach ist der MCP2515 im Configuration Mode
SPICSOn
led1 = 1
SPISend 0xc0
'WaitMs 1
SPICSOff
led1 = 0
'/ etwas warten bis sich der mcp2515 zurueckgesetzt hat
WaitMs 10
'* einstellen des Bit timings
'/ prop seg und phase seg1 einstellen
'mcp2515_write_register(cnf2,(1 < < btlmode) |(1 < < phseg11)) ;
SPICSOn
SPISend 0x2a
SPISend %11
WaitMs 1
SPICSOff
'/ / wake - up filter deaktivieren, phase seg2 einstellen
'mcp2515_write_register(cnf3,(1 < < phseg21)) ;
SPICSOn
SPISend 0x28
SPISend %1
WaitMs 1
SPICSOff
'/ / aktivieren der rx buffer interrupts
'mcp2515_write_register(caninte,(1 < < rx1ie) |(1 < < rx0ie)) ;
SPICSOn
SPISend 0x2b
SPISend %11
WaitMs 1
SPICSOff
'* einstellen der filter
'/ / buffer 0: empfangen aller nachrichten
'mcp2515_write_register(rxb0ctrl,(1 < < rxm1) |(1 < < rxm0)) ;
SPICSOn
SPISend 0x60
SPISend %11
WaitMs 1
SPICSOff
'/ / buffer 1: empfangen aller nachrichten
'mcp2515_write_register(rxb1ctrl,(1 < < rxm1) |(1 < < rxm0)) ;
SPICSOn
SPISend 0x70
SPISend %11
WaitMs 1
SPICSOff
'/ / alle bits der empfangsmaske loeschen,
'/ / damit werden alle nachrichten empfangen
'mcp2515_write_register(rxm0sidh, 0) ;
SPICSOn
SPISend 0x20
SPISend 00
WaitMs 1
SPICSOff
'mcp2515_write_register(rxm0sidl, 0) ;
SPICSOn
SPISend 0x21
SPISend 00
WaitMs 1
SPICSOff
'mcp2515_write_register(rxm0eid8, 0) ;
SPICSOn
SPISend 0x22
SPISend 00
WaitMs 1
SPICSOff
'mcp2515_write_register(rxm0eid0, 0) ;
SPICSOn
SPISend 0x23
SPISend 00
WaitMs 1
SPICSOff
'mcp2515_write_register(rxm1sidh, 0) ;
SPICSOn
SPISend 0x24
SPISend 00
WaitMs 1
SPICSOff
'mcp2515_write_register(rxm1sidl, 0) ;
SPICSOn
SPISend 0x25
SPISend 00
WaitMs 1
SPICSOff
'mcp2515_write_register(rxm1eid8, 0) ;
SPICSOn
SPISend 0x26
SPISend 00
WaitMs 1
SPICSOff
'mcp2515_write_register(rxm1eid0, 0) ;
SPICSOn
SPISend 0x27
SPISend 00
WaitMs 1
SPICSOff
'/ / deaktivieren der pins rxnbf pins(High impedance state)
'mcp2515_write_register(bfpctrl, 0) ;
SPICSOn
SPISend 0x0c
SPISend 00
WaitMs 1
SPICSOff
'/ / txnrts bits als inputs schalten
'mcp2515_write_register(txrtsctrl, 0) ;
SPICSOn
SPISend 0x0d
SPISend 00
WaitMs 1
SPICSOff
'/ / device zurueck in den normalen modus versetzten
'mcp2515_bit_modify(canctrl, 0xe0, 0) ;
SPICSOn
SPISend 0x0f
SPISend 00
WaitMs 1
SPICSOff
'***********************************************************************
*4
'/ * verschickt eine nachricht ueber puffer 0
'* 2 datenbytes (0x04, 0xf3)
'* standard id: 0x0123
'*/
'uint16_t id = 0x0123;
'/* Nachrichten Puffer auf Hoechste Prioritaet einstellen
'(braucht man nicht wenn man nur mit einem puffer sendet, siehe text) */
'mcp2515_bit_modify( txb0ctrl, (1<<txp1)|(1<<txp0), (1<<txp1)|(1<<txp0)
);
SPICSOn
SPISend 0x30
SPISend %1111
WaitMs 1
SPICSOff
'// ID einstellen
'mcp2515_write_register(txb0sidh, (uint8_t) (id>>3));
SPICSOn
SPISend 0x31
SPISend %111
WaitMs 1
SPICSOff
'mcp2515_write_register(txb0sidl, (uint8_t) (id<<5));
SPICSOn
SPISend 0x32
SPISend %111
WaitMs 1
SPICSOff
'// Nachrichten Laenge + RTR einstellen
'mcp2515_write_register(txb0dlc, 2);
SPICSOn
SPISend 0x35
SPISend 2
WaitMs 1
SPICSOff
'// Daten
'mcp2515_write_register(txb0d0, 0x04);
SPICSOn
SPISend 0x36
SPISend 0x04
WaitMs 1
SPICSOff
'mcp2515_write_register(txb0d1, 0xf3);
SPICSOn
SPISend 0x37
SPISend 0xf3
WaitMs 1
SPICSOff
'// CAN Nachricht verschicken
'port_cs &= ~(1<<p_cs);
'spi_putc(spi_rts | 0x01);
'port_cs | = (1 < < p_cs) ;
SPICSOn
SPISend 0x80
SPISend 0x01
WaitMs 1
SPICSOff