Améliorer les performances des PIC Microchip
Memory hack (famille PIC18F)
Tous les PIC possèdent 4ko de SRAM. Selon les modèles seulement 1, 1.5, 2 ou 4ko
sont accessibles. L’éventuel surplus est rendu inaccessible à la fabrication.
Nous allons nous intéresser aux modèles disposant de moins de 4ko.
Prenons par exemple une SRAM de 1.5ko
Cette dernière est accessible par l'utilisateur et le système (stack).
Mais au delà des 1536 octets les lectures renvoient 0x00 quelle que soit la valeur écrite.
Sauf dans un cas : quand on y place la pile !!!
Cela permet de gagner 256 octets au minimum.
Comment ?
En modifiant le script du linker :
Fichier cible: 18fxxxx.lkr
Les lignes à ajouter ou modifier : DATABANK NAME=gpr7 START=0x700 END=0x7FF STACK SIZE=0x100 RAM=gpr7
Bien sûr selon le PIC, on peut changer le gpr par gpr7 à grp14 et 0x700/0x7ff par 0x?00/0x?ff avec 6 < ? =< E.
Clock hack
La c'est plus subtil.
Et c'est valable pour l'ensemble des PICS.
La théorie :
Le PIC possède plusieurs mode d'horloge.
Commençons par le mode ECIO : external clock / osc2 as io.
Si nous connectons un oscillateur sur la pin osc1 ça marche (normal) maintenant nous allons passer en mode HS (quartz) en ne changeant pas notre circuit, osc2 est en l'air.
Ca marche de la même façon !
Notre oscillateur doit être compris entre 16 et 40 Mhz
Puis nous allons activer le mode HSPLL qui théoriquement doit multiplier la fréquence par 4
mais ce dernier a une limite entre 60 et 64 Mhz.
L’horloge va donc tout simplement se stabiliser à cette fréquence. Le gain est supérieur à 50 % !!!
L'interface spi fonctionne correctement a 15/16Mhz.
Le Fail-Safe Clock Monitor peut être utilisé. (fcmem).
Le "Two-Speed Start-up"peut être utilisé (ieso).
Le mode debug ICD2 ne fonctionne pas.
La ligne à modifier dans le cfg : __CONFIG _CONFIG1H, _OSC_HSPLL_1H & _FCMEN_ON_1H & _IESO_ON_1H
Je n'ai pas fait d'autres essais. Je ne garantis aucune utilisation sans danger de ces "hacks".
Sundance