Thanks for the info. It helped a little but I'm nowhere closer now than I was on Friday. Not one CAN frame received, nor was one sent. Part of my problem is that I don't completely understand the register settings listed in the datasheet. I keep reading it but it's not 100% clear so I'm sure my settings in the code aren't going to work. Can you (or anyone else) take a look at this and let me know where my mistakes are? I'm sure there are plenty
Code:DEFINE OSC 20 ' REGISTERS AND PINOUT ( 1 = IN; 0 = OUT ) ' ================================================================ '76543210 '76543210 TRISA = %11011111: PORTA = %00000000 TRISB = %00000000: PORTB = %00000001 TRISC = %00010000: PORTC = %00000000 TRISD = %00000000: PORTD = %00000000 TRISE = %00000000: PORTE = %00000000 ADCON0 = %00000000 ADCON1 = %00000000 ADRESH = %00000000 ADRESL = %00000000 CMCON = %00000000 SSPSTAT = %00000000 'I'M A LITTLE LOST WITH THE SSPSTAT AND SSPCON1 SSPCON1 = %00110000 ' VARIABLES AND CONSTANTS '============================================================================== TXBNCTRL var byte TXBNSIDH var byte TXBNSIDL VAR BYTE TXBNDLC VAR BYTE TXBNDM7 VAR BYTE TXBNDM6 VAR BYTE TXBNDM5 VAR BYTE TXBNDM4 VAR BYTE TXBNDM3 VAR BYTE TXBNDM2 VAR BYTE TXBNDM1 VAR BYTE TXBNDM0 VAR BYTE B0 VAR BYTE B1 VAR BYTE B2 VAR BYTE B3 VAR BYTE B4 VAR BYTE B5 VAR BYTE B6 VAR BYTE B7 VAR BYTE B7 = TXBNDM7 ' 8TH BYTE OF DATA FRAME B6 = TXBNDM6 ' 7TH BYTE OF DATA FRAME B5 = TXBNDM5 ' 6TH BYTE OF DATA FRAME B4 = TXBNDM4 ' 5TH BYTE OF DATA FRAME B3 = TXBNDM3 ' 4TH BYTE OF DATA FRAME B2 = TXBNDM2 ' 3RD BYTE OF DATA FRAME B1 = TXBNDM1 ' 2ND BYTE OF DATA FRAME B0 = TXBNDM0 ' 1ST BYTE OF DATA FRAME 'THE PIC MUST ENABLE THE CANINTE.TXINE BIT TO CHANGE THE INTERRUPT FLAG 'THE PIC MUST CLEAR THE TXBNCTRL.TXREQ BIT BEFORE WRITING TO THE TRANSMIT BUFFER ' ALIAS & MODIFIERS ' ================================================================ CS VAR PORTB.4 SCLK VAR PORTC.3 SDI VAR PORTB.0 SDO VAR PORTC.7 SENDLED VAR PORTA.5 'LED TO INDICATE THE PROGRAM IS IN THE SENDING ROUTINE MAINLED VAR PORTE.2 'LED TO INDICATE THE PROGRAM IS IN THE MAIN ROUTINE ' START OF PROGRAM '================================================================================ START: TOGGLE MAINLED 'LED INDICATING THE 18F4550 IS IN THE MAIN ROUTINE PAUSE 100 GOSUB SENDCANDATA 'CAN DATA IS ABOUT TO BE SENT......OR WE COULD ONLY WISH...... GOTO START ' SEND CAN DATA SECTION '=============================================================================== SENDCANDATA: PAUSE 50 TOGGLE SENDLED ' LED FOR DEBUGGING LOW CS ' CS PIN IS HELD LOW IN ORDER TO TRANSMIT DATA TXBNDLC = %00000111 ' DATA LENGTH. THIS IS FOR 8 BYTES. TXBNCTRL = %00001011 ' THE TXBNCTRL IS A REGISTER THAT DETERMINES THE CONDITIONS UNDER WHICH THE MESSAGE WILL BE TRANSMITTED. SEE DATA SHEET FOR DESCRIPTION. TXBNSIDL = %11100000 ' STANDARD IDENTIFIER BITS TXBNSIDH = %11111111 ' NOT REALLY SURE WHAT MICROCHIP WANTS HERE. IT JUST STANDARD IDENTIFIER BITS? B0 = $0 'DATA IN BYTE 1 B1 = $01 'DATA IN BYTE 2 B2 = $03 'DATA IN BYTE 3 B3 = $06 'DATA IN BYTE 4 B4 = $08 'DATA IN BYTE 5 B5 = $0A 'DATA IN BYTE 6 B6 = $0C 'DATA IN BYTE 7 B7 = $0E 'DATA IN BYTE 8 IF TXBNCTRL.3=1 OR TXBNCTRL.5=1 OR TXBNCTRL.4=1 THEN GOTO SENDCANDATA 'THERE WAS AN ERROR, TRY AGAIN. HIGH CS ' DATA TRANSMISSION IS COMPLETE. PUT CS LINE BACK TO 1. PAUSE 1000 RETURN





Bookmarks