PSAS/ PicCore/ blog

PicCore "Blog"

2004/04/16: PicCore Version 8 released for testing!

Wow, that totally sucked. A month of work to completely revamp PicCore... was it worth it? Yes and no. Note that the dev tools are now officially MPLAB 6.50 and PICC18 version 8.30 (with the PICC18/MPLAB patch). Here's the skinny:

  1. New name space. All PicCore functions start with pc_{peripheral}_{name}: so for example, pc_can_init and pc_serial_send_byte. Same for all global variables... of which I think there are exactly zero. How cool is that?
  2. Tremendously improved error handling. pc_log_error lets PicCore and your application log and track errors. There's an error array, where each entry in the array is an "error number" and has 12 bits to log data: 6 bits of ordering information (the sequence of the errors), 2 bits of priority, and 4 bits of how many times it occurred. And it comes with lots of ways to extract the data, for sending over the UART or to blink LEDs.
  3. Moved from a crappy weird CAN driver to a priority-based queues. What a nightmare - the PIC's CAN peripheral is just as broken as all the others. There's over 3000 lines of code in the new driver - all to implement a simple priority scheme in the PIC's broken CAN peripheral.
  4. More peripheral supprt and APIs, like PWM and timer1.

2004/03/16: Working, working, working...

Whoah! Things are changing a lot. The Streecar Lights Project is helping me push PicCore along. Also working on GPS and Recovery nodes at the same time helps. I hope to have version 7 updated RSN... hopefully by 03/22/2004.

2004/02/03: PicCore Version 7 is in progress..


  1. Added checks for #defined values in .h file.
  2. Fixed bug that transmitted SERIAL_TX_QUEUE_LENGTH of data if serial TX interrupts were enabled outside of send_serial_bytes in serial_tx_isr.
  3. Added OERR and FERR checking for receive.
  4. Reordered routines to be initialize, tx then rx.

2003/09/21: PicCore Version 6 goes to the Black Rock Desert

Many changes due to emergency fixes on the playa. Everything running pretty well, bug fixes are doing good... wow, it's all working. Plus or minus.


Added a few ADC and timer2 routines. Cleaned up various bugs. Added capabilities for running at 20MHz or 40MHz depending on a #define.

2003/01/31: PicCore Version 1

Not much different from 9/2002 version. New virtual UART code, still untested. Posted for use with power.c for the Avionics Power System node. Still wondering if all this #define thing is best.

Changes due to working on the the Avionics Power System (power.c).

2002/09/18: PicCore Version 1

It compiles, and it's being used for the GPS, ATV and IMU but there's still some problems. The ATV is experiencing weird problems with receiving multiple CAN messages, and things still seems a bit broken. We'll debug tonight and see if we can't post another, more debugged, version.

2002/09/08: PicCore Version 1

It compiles! It's probably still very broken, but at least you can now integrate your code into the framework and see if YOUR code compiles. I know it USED to work, with a known bug in the CAN receive section. So it probably mostly works.

Left to do: fix CAN receive, test serial routines, implement more peripheral routines.

2002/09/07: PicCore Version 1

Renamed main folder to c:\firmware to be more generic. Moved all framework files to the directory "piccore" and formally declared it a framework... whatever that means. Now the user doesn't need to touch anything in that directory and all modification is done in the root ("firmware") directory of their project.

2002/07/05: LV2CORE

First compiling code, after switching to HITECH PICC-18. Thanks, HITECH.

2002/06/23: LV2CORE

First public release, using MPLAB C18. Doesn't compile.