version 0.1 : 11 juin 2017
rev ......



Le PIC 16(F) ou (L)1847 :

en connectique Dip18
Utilisé avec Fosc Interne =8Mhz ( sans PLL)
Available RAM: 1008 [bytes], Available ROM: 8192 [bytes])


Pinout


images/_16F1847_pinout_18pin.gif

Hardware :






Lire les mots de configuration , MCU ID et User ID. PIC16L1847

Datasheet DS41453C-page 47 (para 4.5)
Zone Utilisateur :

4.5 User ID
Four memory locations (8000h-8003h) are designated
as ID locations where the user can store checksum or
other code identification numbers. These locations are
readable and writable during normal execution.
Zone USER ID Locations 8000h..8003h:


Zone utilisateur accessible en Lecture ou Ecriture
permettant d' y enregistrer soit un code CRC checksum de controle du fichier HEX application
soit un Numero d'Identification
USER ID location 8000h=FF3F
USER ID location 8001h=FF3F
USER ID location 8002h=FF3F
USER ID location 8003h=FF3F

ATTENTION :
Le mot de 14 bits ne permettra pas de stocker un Ascii >3F dans le LSB du mot !

Numero Identification de Circuit et Indice de Revision
Datasheet DS41453C-page 48 (para 4.7)
4.6 Device ID and Revision ID
The memory location 8006h is where the Device ID and
Revision ID are stored. The upper nine bits hold the
Device ID. The lower five bits hold the Revision ID.

Dans ce mot de 14 bits ,
Le Numero d'identification du circuit utilise les 9 bits de poids fort
et l ' indice de revision les 4 bits LSB restant
La lecture se faisant en 2 fois un octet (8 bits) , il faut une petite manip pour RECADRER ces infos
avec des decalages à gauche et à droite. pour reloger le tout dans une variable (kl mot de donnée 16 bits)
k=(PROG_DATA_HI <<3) + (PROG_DATA_LO>>5 ) ;
voir details dans le code C

ID location 8006h :
DEVICE ID =00A5 soit 10100101
ID Revision = 02 soit 00000010

PIC16LF1847 01 0100 101 (DEVICE (8:0) => 0xA5
PIC16F1847 01 0100 100 (DEVICE (8:0) => 0xA4




Configuration Bits
Datasshhet page 110 (para 11.5)

11.5 User ID, Device ID and
Configuration Word Access
Instead of accessing program memory or EEPROM
data memory, the User ID’s, Device ID/Revision ID and Configuration Words can be accessed when CFGS = 1
in the EECON1 register. This is the region that would be pointed to by PC<15> = 1,
but not all addresses are accessible.

Les mots de configuration ,peuvent etre accessible , en dehors de la zone classique EEPROM,
si le bit CFGS est mis à 1 , dans le registre EECON1
Mais TOUS ne sont pas accessibles en ecriture .. ou meme pas du tout / ou reservés: ex 8004h, 8005h..

images/Registre_16L1847_8000-8008.gif
ID location 8007h :
Word Config1 =39E4 soit 00111001 11100100
ID location 8008h :
Word Config2 =1EFF
soit apres masquage des bits inutiles, car mot de 14 bits , et certains bits non affectés *
16 03 soit 00010110 00000011

Detail des bits Mots de configuration




Etat visuele Pickit 2 apres relecture programme du PIC
et resultat dans fichier *Hex exporté.

Pickit2

Apres relecture du fichier contenu dans le PIC
via la touche "Raed Device + export file"
en bas à droite,

On peut voir :
En haut à gauche :
User ID = P AUL
en haut à droite :, les 2 mots de config
Word 1 et Word 2:
39E4 et 1603


et la zone relue en debut de programme
via la fonction mikroC FLASH_Read(adresse)


ON peut bien sur relire/verifier les mots de la zone programme avec le bit CFGS=0
avec la bibliotheque MikroE Flash et la fonction FLASH_Read(adresse)
Ex:Lecture des 16 premiers mots programme
Adresse: 0000 -> 2A54
Adresse: 0001 -> 3FFF
Adresse: 0002 -> 3FFF
Adresse: 0003 -> 0023
Adresse: 0004 -> 189E
Adresse: 0005 -> 2808
Adresse: 0006 -> 0000
Adresse: 0007 -> 2803
Adresse: 0008 -> 0024
Adresse: 0009 -> 0826
Adresse: 000A -> 0023

dans le *.HEX , recupéré,capturé via relecture avec Pickit2 :
Relecture_16F1847_test_IDlocation.hex

Le Programme .. en debut
et en fond de fichier :
- config Bits
- User ID

:020000040000FA
:10000000542AFF3FFF3F23009E18082800000328C2
:100010002400260823009A00080022001D179D16C0
:100020009D171E1423009F1020009E0121000D1516
:10003000080012001E00F003031D1928F103031D20
:100040001928080022006C082000A00009302200B6
:100050006C0203183E282000200823009100920122
... etc ..


:10E1C000FF00FF00FF00FF00FF00FF00FF00FF0057
:10E1D000FF00FF00FF00FF00FF00FF00FF00FF0047
:10E1E000FF00FF00FF00FF00FF00FF00FF00FF0037
:10E1F000FF00FF00FF00FF00FF00FF00FF00FF0027
:020000040001F9
:04000E00
E439
FF1EB4 <----- E439 => 39E4 et FF1E -> 1EFF -> apres masquage => 1603
:020000040001F9
:08000000
5000412055204C2066 <---- 50 00 41 20 55 20 4C 20 66 => P A U L
:00000001FF


Display sur le terminal RS232 :



fichier Relecture_16F1847_test_IDlocation.hex

Le projet MikroC :

16F1847_test_ID_Locations.zip

source MikroC:
16F1847_test_ID_Locations_170608.c



paulfjujo@free.fr


../common/GIF/LTC1286p.jpg



Retour à l'index general