Playing With PIC Pack

Starting Off
Pic Pack is an interesting library of PIC C code for BoostC and has an accompanying set of tutorials. I can be found using the links below. I have wanted to try it out for a while, here is my experience ( so far )

Author russ_hensel

I am recording some experiences playing with pic pack.

Page Not currently linked into Open Circuits will do so later, when more complete.

I could not find beginning of blog, best I got was part 13, googling let me find welcome finally got the archive for 08 to open. This guide will have links in order for each section.

I am using BoostC 6.90 unlimited non-commercial on a pretty much up to date XP system

First 4 parts
[http://embeddedadventures.blogspot.com/2008/04/1introduction.html 07 April 2008 -- 1. Introduction]

[http://embeddedadventures.blogspot.com/2008/04/2-microcontrollers.html 07 April 2008 -- 2. Microcontrollers]

[http://embeddedadventures.blogspot.com/2008/04/3-take-your-pic.html 07 April 2008 -- 3. Take your pic]

[http://embeddedadventures.blogspot.com/2008/04/4compilers.html 07 April 2008 -- 4. Compilers]

Make sense to me, just read them.

Part 5. Your first pic program -- 07 April 2008
Notes from: Jan 11 2009


 * text said: adventures\flasher:  try instead: demos\flasher   think this it was moved.


 * no mention of target, i left it at: 16f88  ( target is part of the project, so of course it was right for the text.


 * I tried to build, IDE said building... but then nothing? I am using 6.90

tried compile and got error locating the compiler, so I pointed the IDE to mine. Problem was I do not keep my compiler in the normal location, all users shuld check this setting if the build just seems to hang.


 * Then had error finding: C:\Source\Electronics\MicroController\Pic\PicPack\demoCopy\flasher\flasher.c(7): Unable to open include file: pic_utils.h

This is because I had moved the project, need to keep the relative locations of... demos and ...pic_pack_lib unchanged so I put a copy in the right relative location.


 * Now compiles successfully.

but got the warning

#warning "Don't know about your clock. See pic_utils.h"
 * 1) ifndef GOT_CLOCK
 * 1) endif

This seems to be related to lack of definition of PLATFORM_CLOCK == 12000000. Perhaps this is what should be in flasher.c instead of ( or in addition to ) #pragma CLOCK_FREQ 8000000 Or perhaps it is just a warning to be ignored.

/*   */
 * note that

in the code denotes a comment ( and that the contents is ignored by the compiler).

08 April 2008 -- 6. Chip Programming

 * I am going to try an 18f2550 so looking up the configurations setting for it.

I am confused about config1, 2.... and the high and low so how do I read the .h file? Seems that for the 18F2550 we need

_CONFIG1L, _CONFIG1H,   _CONFIG2L,   ....

this seems at least to compile .... but the linker fails with

Error: .obj or .lib file wrong target type Error: Failed to process:pic_utils.obj

Perhaps i am still missing some sort of config or #define switch. But no problem fixed by removing all but ._c .c and .h files and recompiling, changing target from 16F to 18F was probably the problem.

Putting in the configuration took me a long time, 16 config locations. Not sure I have them right, perhaps if I copied a configuration from some bootloader that worked on my chip?

7. Bootloading -- 08 April 2008

 * I do not want to use 16f88, I do not have one, I will use either the 18f2550 or if I have to the 16F877 which I have a lot of, and have used a lot.

It is late, good night for now....

Part 8. Serial ports -- 12 April 2008
Ok, reads fine.

Part 9. It's about time -- 14 April 2008
Just reading:

''There’s the serial handlers, as usual, but also the timer_handle_0_isr routine – which takes care of timer 0. Note that in your code somewhere, you need to include a routine called timer_0_callback like this:''

Why do I need the timer_0_callback is it because the call is imbedded in timer_handle_0_isr -- and if so how did you compile without it?

test_tick = tick_get_count; // find out what we're up to if (tick_calc_diff(tick_marker, test_tick) >= 1000) { // 1000 - it's a second serial_print_str(" "); // print something out tick_marker = test_tick; // reset to find next 1000 }

fix formatting

find out what we're up to is this a pun meaning find out what count the pic_tick is up to ( on timer0 ) ?

is the intent of this to ignore the time it takes to print? will this do it every second or pause 1 second between prints?

what is the data type of test_tick, I guess I could look at the header file. or am i susposed to be editiong a sample  Why does it work even if it wraps around?

Part 10. On Display -- 16 April 2008
read it seems fine.

Part 11. It's hot in here -- 19 April 2008
covers i2c protocol itself  -- interesting but do not have this device

rest read ok,  -- did not open sample code, need to go back and do this.

19 April 2008 -- 12. Which Pic?
read just a discussion of various pics, which left out the 16f877a one of my favoriates.

05 August 2008 -- USB Part 2 - The Joy Mouse
== [http://embeddedadventures.blogspot.com/2008/12/see-saw-photo.html 12 December 2008 See Saw Photo

== [http://embeddedadventures.blogspot.com/2009/01/usb-part-3-configuring-picpack-usb.html 09 January 2009 USB Part 3 – Configuring the PicPack USB library

== [http://embeddedadventures.blogspot.com/2009/01/usb-part-4-inner-workings-of-picpack.html 12 January 2009 USB part 4 – Inner workings of the PicPack USB stack

== [http://embeddedadventures.blogspot.com/2009/01/usb-part-5-using-usb-serial-library.html 26 January 2009 USB Part 5 – Using the USB Serial library

== [http://embeddedadventures.blogspot.com/2009/01/picpack-20-released.html 26 January 2009 PicPack 2.0 released