Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Erreur de ROM !
Jérémy
Administrateur du site
Administrateur du site
Messages : 2750
Âge : 46
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#31 Message par Jérémy » lun. 30 mai 2016 22:10

Aprés test , je valide !

avec un tableau à 2048 charca fonctionne parfaitement. Je rajoute 1 seul charet paf !! impossible !!

Problème résolu, un tableau sur PIC ne peut contenir que 2048 valeurs !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Erreur de ROM !
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#32 Message par Guest » mar. 31 mai 2016 09:05

bonjour

Donc avec point origine,ok.J'ai pas fait le test sous XC8 mais ahma, cela doit-être pareil . La limite de 0X800 en ASM la réponse est dans le jeux instruction TBLRD avec plusieurs combinaisons d’offset et son pointeur TBLPT (U,H,L) qui est sur 24bits (pour un point origine, a la limite oui pour la clarté de lecture mais pas obligatoire, car incrémentation du pointeur est bien sur sur 24bits).
je reviens sur l’impossibilité en C. Ce verrou ,AMHA (pas très doué en C) est du, au-fait qu'il n'utilise pas ces instructions pour accéder a la flash mais avec des pointeurs lambda,et ferme la parenthèse.

Cela ouvre plein de perspectives, mais aussi un savoir manipuler fichier asm avec C ou objet avec C ,dans un projet et suivant le compli, chacun a sa sauce. Autre problème les fonts sont pour un format en C, sous ASM les données sont du style:

Code : Tout sélectionner

   ORG 0X8FF
QUATRE   
   DB   0x00 , 0x02 , 0x06 , 0x0A , 0x12 , 0x12 , 0x22 , 0x42      ; LCD page 0
   DB   0x82 , 0xFF , 0x02 , 0x02 , 0x02 , 0x00 , 0x00 , 0x00

jeremy tu es devant ton fameux 4 lors du fil précédent et ma proposition en ASM .Donc oui possible avec un peu de travail j'ai pas trop gratter sur le logiciel des fonts s'il peut sortir Ce format si oui pas grand chose comme boulot

Autre atout pour ce type ASM,C c'est la rapidité je sais déjà dit :wink: sur la chercher une donnée puisqu'il y a des instructions pour cela.


A+

PS si quelqu'un est tenté par l'aventure je suis partant :wink:

Erreur de ROM !
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#33 Message par Guest » mar. 31 mai 2016 09:54

bon
j'ai besoin de vacances :wink: la description du haut c'est pour un 18F mais le principe reste le même puis pour le 16F le pointeur est sur 16 bits EEADRH et EEADRL

dehors!! dans le jardin

de retour du jardin :wink: fait un test en ASM j'ai faire une font de 4096 octets soit 1 page c'est bien le complilateur C qui block a 2048

ici vue de 4 pages dispos sur ton µC
Capture .png


donc oui, si tu veux des fonts plus grand que 2048 on peu faire cela en ASM

image de la flash
Capture 1.png

fin de la flash
Capture2.png

sur 4096 octes

A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Anonymous le mar. 31 mai 2016 17:29, modifié 1 fois.

Erreur de ROM !
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#34 Message par Guest » mar. 31 mai 2016 13:53

Pour ceux qui sont sous XC8 pour positionner un tableau a une adresse particulière voici:

Code : Tout sélectionner

const char mesPagesRom [] @ 0x800={
    "BIENVENU ***"
    "Compteur Amperes"
 };
 


Bien oui quand meme :-D

A+

Erreur de ROM !
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3261
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#35 Message par paulfjujo » mar. 31 mai 2016 15:33

Bien vu MaÎ,
mettre le string en direct ...
ce qui donne sous mikroC

Code : Tout sélectionner



 const char mesPagesRom 
[]={
    "BIENVENU ***"
    "Compteur Amperes"
 } absolute 0x0600;

const char repere0[]={0,1} absolute 0x06FE;
const char repere1[]={2,3} absolute 0x0FFE;
const char repere2[]={4,5} absolute 0x17FE;
#include "Font_bold12a.h"       // -4 car
#include "Font_bold12b.h"       // -4 car
#include "Font_bold12c.h"       // -4 car


.. dans le main
         c1
= mesPagesRom [0]; // utilisation pour que le compilo  voit bien cette table de chars

        c1= repere0[0];
        c2= repere1[0];
        c3= repere2[0];

        c1= Font_arial_12a_bold[0];
        c2= Font_arial_12b_bold[0];
        c3= Font_arial_12c_bold[0];




compilation sans erreur et
le listing confirme OK

Code : Tout sélectionner



[code=php]
;
16F1847_test.c,11 :: _mesPagesRom
0x0600    0x3442 
;_mesPagesRom+0
0x0601    0x3449 
;_mesPagesRom+1
0x0602    0x3445 
;_mesPagesRom+2
.... etc ..
0x061B    0x3473 ;_mesPagesRom+27
0x061C    0x3400 
;_mesPagesRom+28
; end of _mesPagesRom
;16F1847_test.c,16 :: _repere0
0x06FE    0x3400 
;_repere0+0
0x06FF    0x3401 
;_repere0+1
; end of _repere0
;16F1847_test.c,:: _Font_arial_12a_bold
0x0800    0x3400 
;_Font_arial_12a_bold+0
0x0801    0x3400 
;_Font_arial_12a_bold+1
..etc ..
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

Erreur de ROM !
Jérémy
Administrateur du site
Administrateur du site
Messages : 2750
Âge : 46
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#36 Message par Jérémy » mar. 31 mai 2016 18:37

Hello,

Je suis honnête , j'ai rien compris !!! exit

Dans ton commentaire Paul tu signale que tu place la "font" en enlevant les 4 caractères ! mais ca fonctionne si tu ne les mets pas , car elle ne dépasse pas 2048 .

Je ne pense pas avoir le niveau pour suivre votre conversation ......
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Erreur de ROM !
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3261
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#37 Message par paulfjujo » mer. 1 juin 2016 17:53

tu signale que tu places la "font" en enlevant les 4 caractères ! mais ca fonctionne si tu ne les mets pas


On est , semble t -il tous d'accord sur ce point là...
en enlevant 4 car on reste sur une taille de table <= à 2048 .

dans le post precedent, j'ai simplement voulu montrer la syntaxe MikroC par rapport à celle de XC8 (presentée par Maï)
pour fixer une adresse de variable (pointeur sur constante) en Flash rom .
un string ou un simple byte .
Dans le meme espace de 2048 byte, si la fonte occupe 2040 bytes
on peut encore y placer des variables (ou plutot pointeur de constantes)
de 2041 à 2047 .. ( en comptant de 0 à 2047 => 2048 cases)

oops
la notion variable et constante n'étant pas tres parlante, pas tres claire , dans ces cas de figures..
je dis variable .. car on pointe sur une table de valeurs en ROM qui sont constantes
mais que l'on peut choiisir en fonction d'un indice dans la table , et donc de recuperer ensuite une variable (en RAM)
sur laquelle on peut agir/modifier.

si la valeur declarée en rom n'est pas dans une table
ce n'est qu'une constante .. imposible de la modifier .. une vraie Constante.
const char maconstante=9;
rappel: equivalent à un
#define maconstante 9
exit

:cry: çà fume !
Aide toi, le ciel ou FantasPic t'aidera

Erreur de ROM !
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#38 Message par Guest » mer. 1 juin 2016 19:33

Bonsoir
Moi j'ai démontré, avec mes tests que c'est MICROC qui bride à 2048 tous tableaux(question de pointeurs)et paul dans son exemple confirme cela , alors que sur ton pic une page fait 4096 octets,j'ai fait aussi,bien sur, un test en C
Voila affaire réglé, peut-être pas.Tu as fais un essai avec un 18F ? , moi oui ->page 4096
A+

Erreur de ROM !
Jérémy
Administrateur du site
Administrateur du site
Messages : 2750
Âge : 46
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#39 Message par Jérémy » mer. 1 juin 2016 20:12

Mais question
ce qu'une page pour vous ?
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Erreur de ROM !
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#40 Message par Guest » mer. 1 juin 2016 20:39

c'est ICI
viewtopic.php?p=3126#p3126
par exemple de 800h a 0xFFF qui est la page 1

A+


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 5 invités