Electronic – Figuring out the functions of PIC numbers in a data file

microchipmicrocontrollerpicprogrammerprogramming

I'm using Bumblebee software to interface my Wisp648 PIC programmer. According to the list of supported files for the Wisp, I should be able to program a PIC16F1829. However, that chip isn't supported by the software.

I decided to try to tweak the program. In the installation directory, I find files like this, 16f84.btd:

Version         = 4
Name            = 16F84
Algorithm       = PIC16
Code            = 1024
Data            = 64
UserID          = 0x2000-0x2003 [F1:0x3F80; F0:0x3F8F]
Configuration   = 0x2007 [PR:0x3FF0]

Or this 16f684.btd:

Version     = 4
Name        = 16F684
Algorithm   = PIC16E
Code        = 2048
Data        = 256
UserID      = 0x2000-0x2003 [F1:0x3F80]
Configuration   = 0x2007 [F1:0x3000; PR:0x00C0]
DeviceID    = 0x1080, 0x3FE0, 0x001F

I now want to make my own file for the 16F1829. I can figure out the functions of these parameters:

  • Name – the name of the chip (probably only used to show it in a list)
  • Code – the amount of program memory in bytes
  • Data – the amount of EEPROM bytes
  • UserID – the locations for a user ID
  • Configuration – the location of the configuration word

What I'm not sure about / don't know:

  • Version – appears to be 4 for most chips, but I don't know why
  • Algorithm – probably a different ICSP version(?) What should I fill in here for the 16F1829?
  • UserID – what does F1 or F2 mean?
  • Configuration – what does F1 or PR mean?
  • DeviceID – although the 16f84 doesn't have a device ID, the 16f684 and the 16f1829 have. But what do the numbers mean?

I searched for the numbers in the relevant datasheet for several chips, but couldn't find them. Could someone with more experience with microchip parts (or general microcontrollers) figure out what all these things mean, and where I can find the numbers for other chips (like the 16F1829)?

I found that Bumblebee doesn't just accept it if you add another file, but I'd still like to know what these numbers mean.


I used the official software, XWisp, to find some more information about the chips, with the info <chip> command:

C:\Users\Camil>xwisp info 16f84
XWisp 1.41, command line mode

Name        : 16F84
ID value    : none
Prog specs  : DS30262e
Code memory : 1024 instructions
Data memory : 64 bytes
Vdd range   :  4.50 -  5.50
Vpp range   : 12.00 - 14.00
Test status : Tested with a real chip.

OK

C:\Users\Camil>xwisp info 16f684
XWisp 1.41, command line mode

Name        : 16F684
ID value    : 1080
Prog specs  : DS41204G
Code memory : 2048 instructions
Data memory : 256 bytes
Vdd range   :  4.50 -  5.50
Vpp range   : 10.00 - 13.00
Test status : Tested with a real chip.

OK

C:\Users\Camil>xwisp info 16f1829
XWisp 1.41, command line mode

Name        : 16F1829
ID value    : 27E0
Prog specs  : DS41390C
Code memory : 8192 instructions
Data memory : 256 bytes
Vdd range   :  2.10 -  5.50
Vpp range   :  8.00 -  9.00
Test status : Implemented from specs, NOT tested with a real chip.

OK

This might be useful information (I don't know).

Best Answer

  • Version : I have no idea
  • Algorithm : the wisp648 firmware has a number of algorithms implemented. Check that firmware to see what each number means. Another angle: find a chip that has the same programming commands (check the programming specifcations document) and use that algorithm nuber for your chip
  • UserID : probably the address of the user ID locations in the chip - IFAIK never used
  • Configuration - what does F1 or PR mean : might be the fixed bits??
  • DeviceID - But what do the numbers mean? : No meaning, simply an identification of the chip.