Augmenter la mémoire pour y rajouter du code

Bonjour !

Alors voilà, j'ai un soucis , je bosse sur un code qui, pour le moment, ne dépasse pas la moitié de la mémoire de mon Arduino Uno (32KB) mais qui va surement les dépasser.

Je me demandais donc comment je pourrais faire pour pouvoir stocker, par exemple, la code "de base" sur la mémoire Flash, comme d'hab quoi, et les fonctions sur une mémoire externe (car il y en as plein de fonctions, c'est ça qui pèse le plus lourd).

J'ai vu ici et là qu'on pouvait rajouter une mémoire EEPROM externe et communiquer avec celle-ci en I2C, mais je n'ai pas compris si les fonctions pouvaient y êtres stockées, et si oui comment.

Bref, comment faire pour stocker mes fonctions sur une mémoire plus importante et pouvoir y accéder depuis le void loop() ?

Merci :slight_smile:

amha

Déjà cela ne va pas être simple à faire, et en tout cas beaucoup plus compliqué et couteux en temps que de passer sur une MEGA.

Et même si tu arrives à mettre au point un système fiable dans lequel la mémoire flash serait utilisée comme une sorte de cache pour du code exécutable, qui serait stocké dans une mémoire externe plus grosse :

  1. les performances de l'ensemble risquent d'être mauvaises
  2. la mémoire flash n'est pas prévue pour être réécrite à haute dose

Perso je ne lancerais pas là dedans

Argh... à vrai dire je pensais utiliser un AtMega328 tout seul (+ quartz et condos qui vont bien), pas une carte Arduino entière.

Il n'y a donc aucun moyen de rajouter plus d'espace pour un programme plus gros ?

Bonjour,
si c'est pour faire un "stand alone" apres, passe directement au 644

Jacques

Ah super ! Merci beaucoup ! Je ne connaissais pas, je vais me renseigner...

euh... le site de Sanguino, ya pas comme un problème ? ^^

Pour ce qui est de l'utilisation des entrées/sorties de cet AtMega644, je suis tombé ici :
http://www.hobbytronics.co.uk/atmega644-arduino
Je suppose que les "D 0, D 1, ... D 31" sont les entrées/sorties digitales et que les "AI 0 ... AI 7" sont les entrées analogiques ?
Les entrées analogiques du 644 peuvent aussi êtres des entrées/sorties numériques ?

RoKN:
Les entrées analogiques du 644 peuvent aussi êtres des entrées/sorties numériques ?

Comme pour le 328

Il y a aussi le 1284p pour encore plus de plaisir code.
128k de Flash et 16k de RAM
Voir là pour faire une carte stand alone Gammon Forum : Electronics : Microprocessors : How to make an Arduino-compatible minimal board

Ah ouais ? Je ne savais pas ...
Comment faire pour utiliser les entrées analogiques en tant que sortie numérique ? (par curiosité)

Voir la note en bas de page pinMode() - Arduino Reference

Bonjour,
Pour tester, il y a aussi (sans quitter le forum) : icareDuino - Réalisations et Projets Finis - Arduino Forum
Et il n'y a pas de problème pour un usage en stand alone, je l'utilise tous les jours.
@+

Super ! Merci !
Donc... AtMega644p ou AtMega1284p ?

Quoi qu'il en soit, je pense passer au 20MHZ plutôt que rester en 16MHz, comme c'est pour un projet "vidéo" avec l'aide de la bibliothèque TVout je pense que j'y gagnerais.
Dans ce cas, uploader un sketch depuis une Arduino Uno cadencée à 16MHz sur un AtMega (644 ou 1284) cadencé à 20MHz poserais problème ou j'utilise l'hologe de la Uno pour l'upload pour ensuite utiliser un quartz de 20MHz en standalone ?