Capacité mémoire des Picaxes

dje8269

Senior Member
Bonsoir,

Je n'ai rien encore rien lus la dessus , car je suppose que très peu de personnes en ont eu l'utilité , je ne pensais jamais y arriver un jour ;

Mais voila je suis a court de mémoire sur mon 08M2 et ses 2048 bytes ! . Actuellement j'en suis rendu à 2046 ! et mon programme est loin d'être finis .

j'ai donc entrepris une coupe drastique dans les mémoires ; mais a ma grande surprise certaines choses ne font pas gagner de la place .

par exemple, j'avais écrit :

on unite gosub chiffre0,chiffre1,chiffre2,chiffre3,chiffre4,chiffre5,chiffre6,chiffre7,chiffre8,chiffre9
Que j'ai remplace par :

on unite gosub N0,N1,N2,N3,N4,N5,N6,N7,N8,N9
Je pensais que j'allais 6 lettres par sub soit 54 lettres a chaque ligne de changée , comme j'en avais beaucoup , je me suis dis Génial ! .

Et ben non ! ca n'as rien changé .

Auriez vous une astuce , ou savez vous ce qu'il faut changer pour gagner de la place mémoire , sans déstructuré le programme ?

Par avance merci
 

GM39

Senior Member
Commentaires et noms de variables n'ont aucune incidence sur la taille mémoire occupée.
Dans ton cas ce ne sont pas les traitements qui prennent de la place mais les données, tu ne peux pas espérer gagner beaucoup sur les traitements.

Pour les données, tu as décrit les chiffres, parfois avec des traitements, l'écriture semble plus courte, mais c'est à vérifier (il suffit suffit de tester les 2 possibilités).
Avec des chiffres un peu plus petits, tu peux réduire la taille mémoire.

Je me demande si tu ne seras pas obliger soit d'ajouter de la mémoire i2c soit de dédier un picaxe pour gérer ton affichage à la façon des axe033/133 via une interface série
 

MGU

Senior Member
En fait, les noms donnés aux variables n'ont aucune importance. Ce que reçoit le picaxe est largement codé et comprimé. Quelques astuces permettent de gagner quelques octets, comme indexer un for next de 0 à 3 au lieu de 1 à 4.
Pour augmenter la mémoire, soit changer de picaxe , soit ajouter de la mémoire externe en I2C genre EEPROM AT24C32 (jamais essayé). Parce que la définition des caractères, ça mange beaucoup de mémoires.

Grillé....

MM
 

dje8269

Senior Member
Merci a tous les deux pour vos réponses rapides ;

J'ai testé plusieurs combinaisons , mais je crois que je suis dans une impasse .

Par exemple ce code qui est long et parait lourd ( 26bytes) :
Code:
hi2cout 0x40,(_
0x00, 0x00, 0x00, 0x00,_
0x00, 0x00, 0x00, 0x00,_
0x00, 0x00, 0x00, 0x00,_
0x00, 0x00, 0x00, 0x00,_
0x01, 0x00, 0xFF, 0xFF,_
0x02, 0xFF, 0x00, 0x00,_
0x03, 0x00, 0x00, 0x00)
et moins lourd que le même code , en plus court (28 bytes) :
Code:
for b1 = 0 to 4
	hi2cout 0x40,(0x00, 0x00, 0x00, 0x00)
next
hi2cout 0x40,(_
0x01, 0x00, 0xFF, 0xFF,_
0x02, 0xFF, 0x00, 0x00,_
0x03, 0x00, 0x00, 0x00)

il me faut avoir au moins 6 lignes pareil pour gagner de la place avec un for/next .

Je pense donc effectivement ne pas avoir le choix et me tourner vers un 20X2 ! avec 4096 bytes .
 

PieM

Senior Member
Il faut penser qu'à partir du 14M2, en utilisant PE6, on dispose de 2 slots de programmation de 2048 bytes chacun, et de la possibilité d'utiliser des tables de 512 bytes.
 

dje8269

Senior Member
Bonjour ,

Je souhaiterai acheté de la mémoire Eeprom pour picaxe , mais je ne sais pas quoi choisir chez go tronic compatible avec picaxe ? D'ailleurs toutes devraient l'être non ? .

Quel mode est le mieux pour dialoguer entre la mémoire et le picaxe ?

Je serais preneur d'une reference chez gotronic, que vous connaissez bien !

Merci
 

MGU

Senior Member
Bonjour ,

Je souhaiterai acheté de la mémoire Eeprom pour picaxe , mais je ne sais pas quoi choisir chez go tronic compatible avec picaxe ? D'ailleurs toutes devraient l'être non ? .

Quel mode est le mieux pour dialoguer entre la mémoire et le picaxe ?

Je serais preneur d'une reference chez gotronic, que vous connaissez bien !

Merci

Bonjour,

Il y a la série 24CXX, 8 bits en I2C, j'en sais pas plus, jamais essayé.

MM
 

PieM

Senior Member
EEprom 24LCxx voir hI2Csetup dans la doc. Tu as la config à utiliser pour ce type d'EEPROM
 

dje8269

Senior Member
Merci a tous les deux ; mon choix c'est porté la dessus .

Lien Eeprom

Pour un futur projet l'ecran devrait etre plus grand encore !! lol . avec cette taille je devrais etre tranquille
 

GM39

Senior Member
Merci a tous les deux ; mon choix c'est porté la dessus .

Lien Eeprom

Pour un futur projet l'ecran devrait etre plus grand encore !! lol . avec cette taille je devrais etre tranquille
En attendant de la recevoir tu peux t'entraîner avec la 24LC16 qui est sur ton axe091
 

dje8269

Senior Member
En attendant de la recevoir tu peux t'entraîner avec la 24LC16 qui est sur ton axe091
Oui c'est vrai qu'il y en as une dessus .Pour l'entrainement, je pense en avoir deja fait ,il s'agit de communication i2c , comme entre deux picaxes ( je pense à la voiture notamment 1 slave et 1 master) . donc j'ai déjà un peu travaillé dessus . Sauf si le dialogue est différent bien sur ?
 

BESQUEUT

Senior Member
Je me demande si tu ne seras pas obliger soit d'ajouter de la mémoire i2c soit de dédier un picaxe pour gérer ton affichage à la façon des axe033/133 via une interface série
Solutions marteaupilonnesques... A rajouter des composants, autant prendre un Picaxe plus gros...
Si le but c'est de mettre la description des caractères dans une eeprom externe, il ne faudra pas être trop pressé... Vous devrez récupérer les octets un par un...
Dans l'ordre, j'explorerais les pistes suivantes :
- solution PieM avec plusieurs Slots (par exemple un pour le réglage, un pour l'affichage,...)
- homogénéisation de la taille et de la forme des caractères : dans les chiffres, il y a plein de parties communes qui peuvent être traitées par des sous-programmes.
- il me semble que ça serait encore plus performant en faisant un balayage horizontal plutôt que vertical,
- il y a aussi des symétries qui peuvent être exploitées avec cet afficheur,
- utiliser l'eeprom du Pïcaxe,
- utiliser un Picaxe plus performant,
en dernier recours, utiliser une mémoire externe avec le Picaxe le plus performant. Il y a des .
mémoires de 128 000 octets pour moins de 3€ en adressage SPI
Ce n'est pas parce que vous utilisez un écran plus grand que vous avez besoin de plus de mémoire, sauf à vouloir dessiner des chiffres énormes avec des courbes très lissées.
 
Last edited:

dje8269

Senior Member
J'ai déterré le sujet en fait Besqueut , la réponse de GM39 s'adressait pour le cas avant . mais même 4K de mémoire du'n 20X2 , la limite est très très vite atteinte . la mémoire je pense deviens incontournable si on veut faire des dessins ou animation ; + alphabet et chiffre
 

BESQUEUT

Senior Member
La mémoire je pense deviens incontournable si on veut faire des dessins ou animation ; + alphabet et chiffre
Impossible de se prononcer sans un cahier des charges précis.
La tendance actuelle est de compenser un manque de réflexion par un surplus de puissance, donc vous êtes dans le vrai...
Toutefois, il est possible de dessiner des tas de choses avec très peu de mémoire et de bonnes performances.
Entraînez vous avec l'eeprom du Picaxe ou avec une mémoire externe puisqu'il semble que vous ayez l'article... Sortez votre chronomètre, et extrapolez ce que ça va donner...
A mon sens, ce n'est pas la taille mémoire qui va coincer, mais plutôt les temps de rafraichissement. N'oubliez pas que la vitesse du Picaxe ne change rien à la vitesse du bus I2c...
 

dje8269

Senior Member
La tendance actuelle est de compenser un manque de réflexion par un surplus de puissance, donc vous êtes dans le vrai...
Certes, mais le plaisir ! ou placez vous le plaisir la dedans ?

Pour moi c'est la priorité numéro . Prendre du plaisir , et au vu de mes premiers déboires avec mes 10 chiffres , je me vois très mal optimiser chaque lettre et chiffre pour gagner quelques bytes . Il est vrai que dans les cas ou l'on travaille avec un encodeur incrémental qui tourne très vite , la réactivité est nécessaire . mais dans le cas d'un affichage " standard" , infos , télémetrie et autres , la vitesse a beaucoup moins d'importance, ce qui n'enlève en rien la mémoire a alloué .

Alors oui s'il me manque quelques bytes, j'essayerais d'optimiser un peu , mais pas plus ; après je perdrais mon plaisir de programmé .

sans vous, autant vous dire , que j'aurais arrêter depuis longtemps .
 
Top