Playing With PIC Pack
Contents
- 1 Starting Off
- 2 First 4 parts
- 3 Part 5. Your first pic program -- 07 April 2008
- 4 08 April 2008 -- 6. Chip Programming
- 5 7. Bootloading -- 08 April 2008
- 6 Part 8. Serial ports -- 12 April 2008
- 7 Part 9. It's about time -- 14 April 2008
- 8 Part 10. On Display -- 16 April 2008
- 9 Part 11. It's hot in here -- 19 April 2008
- 10 19 April 2008 -- 12. Which Pic?
- 11 22 April 2008 -- 13. It's about time
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
07 April 2008 -- 1. Introduction
07 April 2008 -- 2. Microcontrollers
07 April 2008 -- 3. Take your pic
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
#ifndef GOT_CLOCK #warning "Don't know about your clock. See pic_utils.h" #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. Why does it work even if it wraps around?
Part 10. On Display -- 16 April 2008
Part 11. It's hot in here -- 19 April 2008
19 April 2008 -- 12. Which Pic?
22 April 2008 -- 13. It's about time
and so on....