CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to support@ccsinfo.com

CAN-Bus help needed to get started with PIC18F2580 [solved]

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
mdemuth



Joined: 16 Apr 2007
Posts: 71
Location: Stuttgart, Germany

View user's profile Send private message Visit poster's website

CAN-Bus help needed to get started with PIC18F2580 [solved]
PostPosted: Fri Sep 14, 2012 3:04 am     Reply with quote

Hello,
I am just going to start my first CAN project and need some help on basic questions:
A CAN-Message send every 100ms with 500kbps needs to be writen on RS232
- can the internal oscillator with 32MHz be used?
- what is the setup for
CAN_BRG_PRESCALAR
CAN_BRG_PHASE_SEGMENT_1
CAN_BRG_PHASE_SEGMENT_2
CAN_BRG_PROPAGATION_TIME
CAN_BRG_SYNCH_JUMP_WIDTH

Compiler Version used: 4.124

Thanks in advance!
Michael


Last edited by mdemuth on Wed Sep 19, 2012 3:09 am; edited 1 time in total
RF_Developer



Joined: 07 Feb 2011
Posts: 839

View user's profile Send private message

PostPosted: Fri Sep 14, 2012 5:10 am     Reply with quote

No, the internal oscillator is not good enough. You must use a crystal or external oscillator.

To work out the required parameters use the CAN bus bit timing calculator call MBTime, from
http://intrepidcs.com/modules/CmodsDownload/upload/Software/MBTime.zip or something similar.

RF Developer
mdemuth



Joined: 16 Apr 2007
Posts: 71
Location: Stuttgart, Germany

View user's profile Send private message Visit poster's website

PostPosted: Fri Sep 14, 2012 6:11 am     Reply with quote

I will use a 10Mhz crystal and have the PLL enabled to get 40MHz.
Thanks for now!
mglsoft



Joined: 18 Feb 2008
Posts: 48

View user's profile Send private message

PostPosted: Fri Sep 14, 2012 6:43 pm     Reply with quote

I'll try the CAN bus using the internal oscillator of a PIC18F26K80.
Using a 16 MHz oscillator and the PLL reaches 64 Mhz activated.
Of course I'll leave the option to the external crystal, but is very stable so far, I am transmitting via RS232 to 460,800 bps without errors.
The CAN bus will use the speed of 250 Kbps, so I do not have problems with the bus, I will submit to all possible evidence, because it is very important in my application (hundreds of pieces), not having the cost of xtal.
_________________
MGLSOFT
temtronic



Joined: 01 Jul 2010
Posts: 9163
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Fri Sep 14, 2012 7:21 pm     Reply with quote

Be sure to test your product under actual conditions ! Especially wide temperature ranges !! The real world is far different than 'in the lab'.
You may find out that spending an extra 50cents now for a real xtal to control precise timing is money very well spent BEFORE hundreds of your product come back with 'it don't work right' comments.
At the very least when you design the PCB allow for the xtal and caps to be added in the near future....been there and done that so I ALWAYS use xtals in every product.

hth
jay
mglsoft



Joined: 18 Feb 2008
Posts: 48

View user's profile Send private message

PostPosted: Fri Sep 14, 2012 8:32 pm     Reply with quote

Of course I leave the circuit for xtal and capacitors!
Only that can represent a great advantage not having to use it.
Evidence freezer, oven and tools will be used to test the performance of these circuits, no doubt.
Thanks for your comment.
_________________
MGLSOFT
Ttelmah



Joined: 11 Mar 2010
Posts: 19337

View user's profile Send private message

PostPosted: Sat Sep 15, 2012 1:56 am     Reply with quote

Microchip, are very confident that something better than the internal oscillator is _needed_. The data sheet says:

"As a rule of thumb, the bit timing requirements allow
ceramic resonators to be used in applications with
transmission rates of up to 125 Kbit/sec. For the full bus
speed range of the CAN protocol, a quartz oscillator is
required. Refer to ISO11898-1 for oscillator tolerance
requirements.".

So they say that a ceramic resonator is adequate for low speed operation (up to 125Kbps), but for operation over this, a crystal oscillator is _required_ (no optional)...

Best Wishes
mdemuth



Joined: 16 Apr 2007
Posts: 71
Location: Stuttgart, Germany

View user's profile Send private message Visit poster's website

PostPosted: Tue Sep 18, 2012 10:30 am     Reply with quote

So far so good, I got it running but only half way.
I am successful in sending data to the Microchip CAN Bus analyser :-)
But I am not able to get any reaction on a CAN message sent by the analyser :-(
My Code:
Code:

#include <18f2580.h>      //
#device ADC=10 //
#fuses HS,H4,NOWDT,NOPROTECT,BROWNOUT,MCLR, BORV46,PUT
#use delay(clock=40000000)
#use rs232(stream=COM1, baud=9600,PARITY=N, BITS=8, STOP=1, UART1,ERRORS) //

#define CAN_DO_DEBUG TRUE
// Schaltausgänge
#define Sound        PIN_C2
int16 counter8=0;

#include  <can-18xxx8.c>

#zero_ram
void main()
{
int8 buffer[8], rx_len;
struct rx_stat rxstat;
int32 rx_id=0x301;

can_init();
//set_tris_b(0x0001000);
putc(0x0C); // Formfeed
delay_ms(200);
printf("Start\n\r");

while (1)
  {
  delay_ms(100);
  counter8++;
  can_putd(0x300, &counter8, 1,1,1,0); //put data on transmit buffer
 
  if ( can_kbhit() )
    {
    if(can_getd(rx_id, &buffer[0], rx_len, rxstat))
    counter8 = 0;
    printf("\n\rMessage received");
    }
  }

}           // Ende main

Anybody any ideas?
mdemuth



Joined: 16 Apr 2007
Posts: 71
Location: Stuttgart, Germany

View user's profile Send private message Visit poster's website

Got it!
PostPosted: Wed Sep 19, 2012 3:14 am     Reply with quote

The problem was related to the Microchip CAN BUS Analyser tool -
Transmitting messages with extended ID is tricky:
0x300 does not work, but 0x300x works fine.
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group