Ajout de SRAM

Bonjour

est il possible sur un Mega2560 d'ajouter de la sram pour être plus à l'aise ? J'utilise beaucoup PROGMEM, mais mon projet (domotiser la maison : électricité, régulation chauffage, serveur web...) est assez volumineux et je me retrouve avec peu de sram de libre sur les 8k même en optimisant.

J'ai toujours assez de I/O dispo, c'est le nombre de fonction programmé qui prennent de la place et je vais pas m'arrêter en si bon chemin.

Donc si je pouvait rajouter 8Ko (voir 64Ko, soyons fou), je suis preneur. Si c'est possible qu'elles sont les inconvenants ? Conso électrique, connecteur physique occupé, lenteur, adressage...

Merci de vos lumières et bon week end.

Il y a ça en I2C : http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00251873.pdf Le problème sera probablement la vitesse de transfert.

Je travaille également sur un projet de domotique et je vais sûrement avoir besoin de gérer pas mal de données, je pense m'orienter vers un système qui se connecte de temps en temps (toutes les x heures) à 1 site web et qui cherche les données sur ce site. http://arduino.cc/forum/index.php?topic=80422.new;topicseen

Bonjour

Et oui, sur la Mega c'est possible.

Il se trouve que les connecteur du fond (celui à double rangée) est relié à des ports qui peuvent se transformer en bus données et adresses du processeur. Il est donc ainsi possible d'ajouter assez simplement de la mémoire sur un shield dédié.

L'espace adressable du micro ATMega est limité à 16 Bits pour les adresses, donc cela donne un espace mémoire total de 64KO maissur lequel la mémoire interne ainsi que les registres etc .. prennent déjà de la place (8704 octets exactement) Donc ce n'est pas tout fait 64KO que tu peut rajouter mais 56832O. ce qui n'est pas mal déjà.

Il y a plusieurs articles sur Internet que tu peux trouver à ce sujet en cherchant "Add SRAM to Arduino MEGA" Par exemple celui-ci ou il utilise un chip de 512K : on peut ainsi accéder à la mémoire par "page" : http://www.radiolocman.com/shem/schematics.html?di=109611

Disponible aussi en produit finit chez RuggedCircuits : http://ruggedcircuits.com/html/megaram.html (128KO) http://ruggedcircuits.com/html/quadram.html (512KO)

A+

EDIT: Contrairement à la solution de Brisbee, cette mémoire ci s'ajoute réellement dans l'espace adressable du processeur et son utilisation est transparente (pas d'I2C ou de lib a part pour configurer le processeur dans le bon mode) et coté vitesse c'est à donf...

barbudor: Bonjour

Et oui, sur la Mega c'est possible.

Bonne nouvelle

Il se trouve que les connecteur du fond (celui à double rangée) est relié à des ports qui peuvent se transformer en bus données et adresses du processeur. Il est donc ainsi possible d'ajouter assez simplement de la mémoire sur un shield dédié.

L'espace adressable du micro ATMega est limité à 16 Bits pour les adresses, donc cela donne un espace mémoire total de 64KO maissur lequel la mémoire interne ainsi que les registres etc .. prennent déjà de la place (8704 octets exactement) Donc ce n'est pas tout fait 64KO que tu peut rajouter mais 56832O. ce qui n'est pas mal déjà.

C'est plus que suffisant.

Il y a plusieurs articles sur Internet que tu peux trouver à ce sujet en cherchant "Add SRAM to Arduino MEGA"

J'ai déjà cherché "add sram mega2560" mais rien de valable. Que que Optimisation/flash/sdcard/PROGMEM Je dois mal chercher. ;o))

Par exemple celui-ci ou il utilise un chip de 512K : on peut ainsi accéder à la mémoire par "page" : http://www.radiolocman.com/shem/schematics.html?di=109611

Disponible aussi en produit finit chez RuggedCircuits : http://ruggedcircuits.com/html/megaram.html (128KO) http://ruggedcircuits.com/html/quadram.html (512KO)

Y a de la quantité, c'est vrai, mais ça consomme beaucoup de pin. Je suis prêt à réduire la quantité de ram supplémentaire à 64Ko du moment que le nombre de pin est moins importante.

A+

EDIT: Contrairement à la solution de Brisbee, cette mémoire ci s'ajoute réellement dans l'espace adressable du processeur et son utilisation est transparente (pas d'I2C ou de lib a part pour configurer le processeur dans le bon mode) et coté vitesse c'est à donf...

Effectivement, c'est pas à négliger surtout quand on voit la quantité à gerer

Sans pagination il faut exactement 19 pins. Pas une de plus mais pas une de moins.

Au lieu de tout intégrer en un seul bloc il serait pas plus simple de répartir les taches ? Parce que si ton mega saute, tu n'as plus rien ... et en plus le code devient vite ingérable et difficile à optimiser et débugger, etc. Tu peux faire comme zoroastre 2 µc communiquant via i2c, 1 pour les taches rapides et un pour les taches lentes, tu peux regarder le lien précité par Bribri. (Moi je fais l’extrême, c'est 1 µc par tache presque. :grin:)

barbudor: Sans pagination il faut exactement 19 pins. Pas une de plus mais pas une de moins.

Donc avec pagination il faut moins de 19 pins ?

T'as une piste de mémoire sram utilisant moins de pins ?

osaka: Au lieu de tout intégrer en un seul bloc il serait pas plus simple de répartir les taches ?

Parce que si ton mega saute, tu n'as plus rien ... et en plus le code devient vite ingérable et difficile à optimiser et débugger, etc.

S'il saute, je dois changer les 2 de toute façon. Pour le code, c'est pas un problème de gerer. L'optimisation deviendra probablement moins important et le code probablement plus clair à lire. Pour debugger, j'ai un log permanent sur LCD et SDcard.

Tu peux faire comme zoroastre 2 µc communiquant via i2c, 1 pour les taches rapides et un pour les taches lentes, tu peux regarder le lien précité par Bribri. (Moi je fais l’extrême, c'est 1 µc par tache presque. :grin:)

ça c'est pour des cas particulier chez moi. Mais pas pour le moment car pas encore fonctionnel. Par exemple la régulation de chauffage en doublette pour éviter par -20°C de voir ma maison geler si un mega lache. Mais ça restera très particulier. Et au prix que ça coute, j'ai prévu d'avoir des méga de rechange dans un carton prête à l'emploi.

Comme dit, j'ai vraiment pas besoin de 512Ko. 16Ko ou 32Ko de plus est largement suffisant du moment que le nombre de pin est limité et que ça rame pas trop non plus.

Non, avec pagination il faut des pins en plus pour gérer la pagination.

Faut pas rêver, si tu veux une mémoire rapide accessible directement pas le microprocesseur c’est la seule solution.
C’est quand même un coût minimal.

Quand tu configures les ports en mode BUS, les 19 pins en question prennent la fonction BUS sans exception.

Sinon, tu prends une SRAM I2C : petit, lent, non mappé en mémoire (il faut faire des transferts entre le composant et ta mémoire principale).
Autant prendre une carte SD.

Je suis content d'apprendre que plusieurs solutions existent pourr la Mega, cela ouvre des perspectives.

C'est vrai qu'il faut vraiment voir en fonction des besoins, taille, vitesse de transfert, nombre d'écritures, nombres E/S nécessires, ... pour choisir la bonne solution.

Merci à tous pour toutes ces infos.

OLIVIERC67: S'il saute, je dois changer les 2 de toute façon.

Les deux ?

OLIVIERC67: Pour le code, c'est pas un problème de gerer. L'optimisation deviendra probablement moins important et le code probablement plus clair à lire. Pour debugger, j'ai un log permanent sur LCD et SDcard.

Vu le besoin en mémoire et le nombre de taches, je suis moyennement convaincu par la facilité d’optimisation sur 1 seul µc.

OLIVIERC67: ça c'est pour des cas particulier chez moi. Mais pas pour le moment car pas encore fonctionnel. Par exemple la régulation de chauffage en doublette pour éviter par -20°C de voir ma maison geler si un mega lache. Mais ça restera très particulier. Et au prix que ça coute, j'ai prévu d'avoir des méga de rechange dans un carton prête à l'emploi.

Vi m'enfin il faut encore avoir de la lumière pour la changer et si absent et s'il n'y a que madame (plus difficile à convaincre :grin:) ? Mon module chauffage tombe en panne, mais j'ai toujours de la lumière ou j'ai plus de lumière mais je peux ouvrir les volets, etc ... 8) Enfin moi je prône la modularité (donc fiabilité, sécurité) et suppression d'un maximum des dépendances tel que le fais le knx par exemple que tu as cité récemment, mais j'ai du mal à convaincre apparemment =( :grin: .

osaka:

OLIVIERC67: S'il saute, je dois changer les 2 de toute façon.

Les deux ?

Oui, pour le prix que ça coûte, je les change car il peut très bien y avoir eu un problème de surtension par exemple.

OLIVIERC67: Pour le code, c'est pas un problème de gerer. L'optimisation deviendra probablement moins important et le code probablement plus clair à lire. Pour debugger, j'ai un log permanent sur LCD et SDcard.

Vu le besoin en mémoire et le nombre de taches, je suis moyennement convaincu par la facilité d’optimisation sur 1 seul µc.

Si je passe de 8Ko à 32 ou 64Ko sans perdre trop de pin pour l'extension de mémoire, je suis pas à l'optimisation à outrance au point que cela devienne illisible.

Si je perd trop de pin pour l'extension de mémoire, je ferai suivant ton principe : 1 mega par tache.

OLIVIERC67: ça c'est pour des cas particulier chez moi. Mais pas pour le moment car pas encore fonctionnel. Par exemple la régulation de chauffage en doublette pour éviter par -20°C de voir ma maison geler si un mega lache. Mais ça restera très particulier. Et au prix que ça coute, j'ai prévu d'avoir des méga de rechange dans un carton prête à l'emploi.

Vi m'enfin il faut encore avoir de la lumière pour la changer et si absent et s'il n'y a que madame (plus difficile à convaincre :grin:) ?

Non, il y a toujours la solution alternative : Chaque circuit commandé est sur un inverseur (automate/manu) Que se soit pour l’éclairage, le chauffage....

Mon module chauffage tombe en panne, mais j'ai toujours de la lumière ou j'ai plus de lumière mais je peux ouvrir les volets, etc ... 8) Enfin moi je prône la modularité (donc fiabilité, sécurité) et suppression d'un maximum des dépendances tel que le fais le knx par exemple que tu as cité récemment, mais j'ai du mal à convaincre apparemment =( :grin: .

Je suis pas pour le KNX, mais parfois c'est bien pratique quand un client ne veut pas voir sa maison en chantier (et que c'est pas justifier de tout refaire). Si la maison à quelques années, faut le vouloir de faire des trou partout pour ajouter des cables, sonde,....

Si l'application est suffisamment complexe avec de nombreuses tâches et demandent de la mémoire, il est peut être envisageable de considérer une autre plateforme.

Notamment les platformes DotNet MicroFramework. Ca se programme en VisualC# avec tous les avantages du debug pas-à-pas. Plus de mémoire, Multi-tâche intégré Si tu as besoin de beaucoup d'entrées/sorties, je te suggère de jeter un coup d'oeil à la Panda II

barbudor: Si l'application est suffisamment complexe avec de nombreuses tâches et demandent de la mémoire, il est peut être envisageable de considérer une autre plateforme.

Notamment les platformes DotNet MicroFramework. Ca se programme en VisualC# avec tous les avantages du debug pas-à-pas. Plus de mémoire, Multi-tâche intégré Si tu as besoin de beaucoup d'entrées/sorties, je te suggère de jeter un coup d'oeil à la Panda II

Je viens de voir, et ma carte banquaire vient de chauffer ;o))

Et puis ça tombe bien j'utilise VisualStudio10 pro avec le plugin visualmicro pour arduino. merci.

OLIVIERC67: S'il saute, je dois changer les 2 de toute façon. Oui, pour le prix que ça coûte, je les change car il peut très bien y avoir eu un problème de surtension par exemple.

Pas gratuit non plus quand même :sweat_smile:. Enfin tu en change qu'un à la fois je suppose.

OLIVIERC67: je suis pas à l'optimisation à outrance au point que cela devienne illisible.

Optimisé pour moi ne veut pas dire illisibilité, par contre surcharger le nombre taches, donc code mélangé et lib oui.

OLIVIERC67: Si je perd trop de pin pour l'extension de mémoire, je ferai suivant ton principe : 1 mega par tache.

Divisé par deux comme le fait zozo c'est déjà pas mal. (j'utilise des mini avec atmega168 à 7€ piece)

OLIVIERC67: Non, il y a toujours la solution alternative : Chaque circuit commandé est sur un inverseur (automate/manu) Que se soit pour l’éclairage, le chauffage....

On vois la relation avec Bribri qui joue également avec des totomate. :P M'enfin ici ça sera ta domotique qui sera intégralement out en un coup ... (je sais j'ai toujours un argument pour avoir le dernier mot et pourtant je suis pas une femme :grin: )

OLIVIERC67: Je suis pas pour le KNX, mais parfois c'est bien pratique quand un client ne veut pas voir sa maison en chantier (et que c'est pas justifier de tout refaire). Si la maison à quelques années, faut le vouloir de faire des trou partout pour ajouter des cables, sonde,....

Tu parles de la version cpl du knx je suppose ? Par contre la topologie en bus c'est clair que ça implique souvent de gros travaux, les installation domestique étant rarement prévu avant rénovation du à son surcout supplémentaire si non prévu. :drooling_face: M'enfin la domotique si on la veut, il faut la motivation qui va avec ou le portefeuilles :* (c'est pourquoi je m'en inspire du knx pour le faire moi même).

OLIVIERC67:
Je viens de voir, et ma carte banquaire vient de chauffer ;o))

Tu n’as pas du bien regarder.

  • La Panda II est moins chère qu’une Mega2560 et ne nécessite pas d’ajouter de la RAM. Elle inclue le lecteur de carte SD.
  • Avec le plugin Arduino pour VisualC Pro, tu ne peux pas mieux debugger en pas à pas qu’avec l’IDE Arduino alors qu’avec DotNet tu fait du vrai pas à pas, avec vue sur les variables etc… Pour faire la même chose sur une Mega2560, il te faut AVRStudio plus la sonde AVRDragon (50Euros).

barbudor:

OLIVIERC67: Je viens de voir, et ma carte banquaire vient de chauffer ;o))

Tu n'as pas du bien regarder.

  • La Panda II est moins chère qu'une Mega2560 et ne nécessite pas d'ajouter de la RAM. Elle inclue le lecteur de carte SD.
  • Avec le plugin Arduino pour VisualC Pro, tu ne peux pas mieux debugger en pas à pas qu'avec l'IDE Arduino alors qu'avec DotNet tu fait du vrai pas à pas, avec vue sur les variables etc... Pour faire la même chose sur une Mega2560, il te faut AVRStudio plus la sonde AVRDragon (50Euros).

J'ai fais un tour, et c'est vrai que c'est pas mal (sauf que c'est du microsoft).

Par contre, il y a arduino due qui est bien fourni en ram, pin, freq.

Je pense pas sauter le pas vers panda 2. Du moins pour le moment.