PIC18F6493 Flash Copy: 16 KB, a 12-Bit ADC and No EEPROM

The PIC18F6493 is the 64-pin, 16 KB member of the DS39896 family — the generation that put a 12-bit A/D converter behind the LCD driver. Alongside 8,192 single-word instructions it carries 768 bytes of SRAM, twelve channels of 12-bit conversion at 100K samples per second, two comparators, two CCP modules, an EUSART with LIN support, and the 128-pixel LCD driver (32 segments × 4 commons) with its on-chip voltage boost regulator. Its family divides the same way as the x90 generation: the 6393 is the 8 KB twin, and the 80-pin PIC18F8393 and PIC18F8493 drive 192 pixels.

The 12-Bit Question

A 12-bit converter resolves one part in 4,096, and its offset and gain trim are stored as data, not as code. Like the rest of the family, the 6493 has no data EEPROM — DS39896 lists Data EEPROM as 0 for all four members — so the trim lives in a flash page the firmware writes at test time, which the array read captures, or in an external serial device on the board, which it does not. This is the failure mode that defines 12-bit rebuilds: code byte-identical to the original, unit powers up, measurements drift or sit wrong because the trim constants were wiped before the chip reached the bench. Ask whether a second unit exists before starting; its stored values can seed a replacement.

Sizes and Boundaries

Flash occupies byte addresses 0x000000 to 0x003FFF: 1,024 Intel HEX records at 16 bytes. Erased cells read 0xFFFF. Code protection is a single gate across the array — no blocks on this family — and a locked part returns 0x0000 across the flash while the device ID at 0x3FFFFE and the configuration region at 0x300000 remain readable. The 64-pin package carries both the 8 KB and 16 KB variants, so the ID read settles the capacity question that the marking may answer wrongly.

The Display Configuration

As on the x90 family, the LCD’s bias mode, multiplexing and drive clock are configuration bits at 0x300000, outside the flash array. A recovered image without them programs into a rebuilt unit whose display misbehaves while the code runs perfectly. Configuration words are read and delivered with the array on every job; for this family that is not boilerplate, it is the difference between a working meter and a bench curiosity.

Sampling in Sleep and What It Implies

One 12-bit feature shows up in this family’s firmware more often than any other: the converter can complete a conversion while the processor sleeps, with the clock sourced independently. Metering designs lean on it — sample, sleep, accumulate — because it is how a battery product keeps measuring at microamp averages. In a dump the fingerprint is unmistakable: short wake windows between long quiet stretches, conversion triggers timed from a slow auxiliary source rather than the main oscillator. It matters to a rebuild in one concrete way: the auxiliary clock and its source selection are configuration concerns, so the words at 0x300000 carry that behaviour. A unit programmed with the array alone measures correctly on the bench with a lab supply and never sleeps properly in the field.

Identifying the trim page by shape is the remaining skill: at twelve channels of twelve-bit resolution, the constants appear as a compact, evenly spaced cluster — hundreds of words, not thousands — and a first pass that returns marginal values in exactly that cluster is telling you the cells have been rewritten many times. Re-read rather than average; disagreement between passes is information, not noise.

From the x90 Generation, One Converter Better

The 6493’s closest relative outside its own family is the PIC18F6490, and the relationship is worth stating precisely because the packages match: same 64 pins, same 128-pixel driver, same SRAM and same absence of a data EEPROM. What changed is the converter — ten bits became twelve — and with it the whole calibration story. Ten-bit trim constants fit in a handful of words; twelve-bit trim needs the compact cluster described above, plus reference handling the older family never carried. Firmware for one does not run on the other, and the two data sheets — DS39629 for the x90 parts, DS39896 for this one — describe different analog sections behind nearly identical part numbers. When a marking reads 6490 or 6493 with the last character worn, the ID read settles it in seconds and prevents the wrong family’s recovery logic from being applied.

That worn-marking case is common enough in metering stock to mention explicitly: refurbishers handle both generations, packages are interchangeable on the board, and the only reliable discriminator on the bench is the device ID. It is read first on every job from either family.

Verification

Two independent flash passes compared byte for byte, configuration words delivered separately, the flash-stored parameter page identified and checked for marginal cells, reset vector resolved, and the ID reconciled with the marking. Chip extraction analysis covers the review; reading the program memory the two-pass standard.

The services page lists what is delivered; contact us with the marking photograph and what the product measures for a specific device.