---
name: "pic.conf"
section: "5"
platform: "linux"
package: "odyssey"
version: "0.4-2.2"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/pic.conf"
---

# pic.conf(5)

The configuration file for PIC microcontroller definitions

## NAME

pic.conf - The configuration file for PIC microcontroller definitions

## SYNOPSIS

The *pic.conf* file is a configuration file for the Odyssey PIC programming tool. It contains sections, each defining the programming parameters for a particular PIC microcontroller device. The format of *pic.conf* is documented here for quick reference.

## FILE FORMAT

The file consists of sections and variables. A section begins with the name of the section in square brackets and ends at the next section header. It is the same format used by *odyssey.conf.*

In each section are a set of **variable=value** assignments. Each of these defines a specific parameter of the PIC. The following is a listing of all the currently defined variable names and their types. If a PIC doesn't support some feature, the variables do not need to be defined for that feature.

- **memtype** (string)

  The type of memory in the PIC. This can have one of the values "eprom", "flash", or "flashe". "eprom" can be used for any eprom/OTP device. "flash" can be used for any type of electronically erasable device. "flashe" is similar to "flash" but in the programming cycle, the END\_PROG command is required.

- **wordsize** (integer)

  The size of an instruction word in bits.

- **codesize** (integer)

  The number of words of program memory.

- **eesize** (integer)

  The number of bytes of data EEPROM. If the device doesn't have a data EEPROM, this can be set to 0 or not specified at all.

- **progcount** (integer)

  The maximum number of times to attempt to program a memory location before reporting an error. Defined in the programming spec.

- **progmult** (integer)

  The multiplier for the number of times to overprogram. Defined in the programming spec.

- **progtime** (integer)

  The number of microseconds in each programming attempt for one memory location. To be on the safe side, the maximum value from the datasheet should be used for flash devices.

- **erasetime** (integer)

  The number of microseconds that a bulk erase takes.

- **configmask** (integer)

  A bitmask of all valid (non-reserved) configuration bits.

- **configdefault** (integer)

  The default value of the configuration bits after an erase.

- **configsave** (integer)

  A bitmask of persistent bits in the configuration word. These bits will be saved before and restored after a chip erase. They will also not be modifiable when programming the device.

- **cp\_mask** (integer)

  A bitmask of all the code protection bits.

- **cp\_all** (integer)

  The value of the code protection bits when all program memory is code protected.

- **cp\_none** (integer)

  The value of the code protection bits when no program memory is code protected.

- **cpd\_mask** (integer)

  A bitmask of the bit(s) that enable data memory code protection.

- **cpd\_on** (integer)

  The value of the cpd bit(s) when data code protection is enabled.

- **cpd\_off** (integer)

  The value of the cpd bit(s) when data code protection is disabled.

- **bkbug\_mask** (integer)

  A bitmask for the bit(s) which enable the on-chip background debugger.

- **bkbug\_on** (integer)

  The value of the bkbug bits when the debugger is enabled.

- **bkbug\_off** (integer)

  The value of the bkbug bits when the debugger is disabled.

## LICENSE

**odyssey** is distributed under the terms of the GNU General Public License version 2.

## AUTHOR

Mark Aikens \<marka@desert.cx\>

## SEE ALSO

[**odyssey**(1)](/odyssey/1.md)
