[Ovmsdev] OVMS CAN-USB Call for Assistance

HONDA S-2000 s2000 at sounds.wa.com
Wed Sep 4 08:28:04 HKT 2013

On the topic of support libraries, Microchip has several application  
notes for CAN. These aren't necessary the only ones, or even the most  
appropriate for the PIC32, but they're some I had lying around.

AN853 - PIC18XXX8 CAN Driver with Prioritized Transmit Buffer
AN930 - J1939 C Library for CAN-Enabled PICmicro Microcontrollers
AN945 - A CANopen Stack for PIC18 ECAN Microcontrollers

As for optimization, I looked carefully at the (older) Microchip  
compiler for the PIC18, and found no real significant advantage to  
the optimized output. I decided to recommend that my client not  
bother with the license, since they were seriously strapped for cash.  
I looked at the assembly output for both optimized and unoptimized  
(using the time-limited demo of the full product), and although they  
produced different code, it wasn't exactly a night-and-day  
difference. Both versions seemed to miss out on optimizations that I  
could make with hand assembly. Also, the optimized version which used  
the alternate PIC18 C extensions did not noticeably improve the code  
or make it smaller.

The most important optimization that can be done is intelligent  
coding at the C level. Many programmers waste resources using float  
on an 8-bit that doesn't have direct support, or they repeat  
operations thousands of times unnecessarily. These sorts of problems  
cannot be fixed by an optimizing compiler, and they're much more of a  

If we're going to consider ARM, then I suggest that someone take the  
time to find out what chips (or circuits) are good candidates for the  
voltage translation. My hunch is that I/O pins on the ARM do not  
directly connect to the 12V CAN bus, especially considering that  
transients of more than 40V might appear. That said, perhaps an ARM  
solution can be accomplished with the same low chip count as the  
proposed PIC32 solution.

Brian Willoughby
Sound Consulting

On Sep 2, 2013, at 18:10, Mark Webb-Johnson wrote:
> From the development environment point of view, I don't like  
> either :-( I would really much prefer a completely open source GCC  
> based toolchain - something not crippled by commercial restrictions  
> or dumbed-down for entry level work. Microchip recently changed  
> their policy on the windows compiler, that bit us, and the PIC32  
> development tools have limited optimisation unless you buy the  
> commercial product. MBED looks good, but seems to suffer from the  
> same sort of issue - although I haven't had time yet to go into  
> detail with this. Both the PIC and MBED libraries look good, but  
> MBED seems easier to work with.
> Anyway, back to the topic at hand, I really want to separate the  
> OVMS v3 project from this simple CAN-USB. Most certainly, the OVMS  
> v3 hardware will have support for CAN BUS logging (most likely to  
> removable flash card, or over the network), but that is a separate  
> discussion to this. What I hope to create here is a very very  
> simple very very cheap device. Something you could build yourself  
> for perhaps US$20-30 parts, or get it retail for perhaps US$40-50.  
> Something that just does this one job, but does it simply and  
> cleanly. Something we can get sponsorship for to give away for free  
> in large numbers, or just to incentivise people or 'seed' the idea  
> of reverse engineering vehicle CAN buses.
> Regards, Mark.

More information about the OvmsDev mailing list