µC compatible avec l'IDE arduino?

Bonjour à tous.

Je suis en train de réaliser un projet arduino qui nécéssite beaucoup de RAM, des sortie en 3.3v et un minimum de place. Je n'ai trouvé aucune carte sur le marché qui puisse répondre a mes besoins, et même si certaines s'en rapproche, je doit de toutes façon créer ma propre Arduino (afin de pouvoir souder tous les composants (µC et capteurs) sur un seul et même CI).

Donc en gros, je voudrait "fabriquer" ma propre arduino à partir d'un µC qui correspond à ce que je veux. Seulement voila, j'ai deja fait mon code sous l'IDE arduino, et je souhaite pouvoir le garder et pouvoir me servir des librairies dispo sur arduino. Donc en fait je veux pouvoir me servir de l'IDE arduino

Et c'est la que je bloque, je ne sais pas comment choisir le micro controlleur.

Si j'ai bien compris, le truc qui permet de pouvoir se servir de l'IDE arduino, c'est le bootloader, c'est ça? Dans ce cas, est-ce que je peux charger le bootloader correspondant à arduino sur n'importe quel µC?

Les Arduino utilisent uniquement des ATmega, ceux sont les seul qui puissent accueillir le bootlaoder pour l'IDE arduino?

En tout cas, je suis donc allé voir du chez Atmel: le ATmega 644 a l'air de correspondre à ce que je veux. Seulement voila, existe-il un bootloader arduino pour lui?

Je sais que pour recharger le bootloader dans une carte Arduino, on peut se servir de l'iDE arduino, lui dire le type de carte à recharger et il rechargera alors le bootloader correspondant au µC présent sur la carte en question. Seulement voila, aucune carte arduino n'a de ATmega 644, je ne peux donc pas charger de bootloader sur un 644 avec cette méthode,si?

Sinon peut-ètre qu'il y a d'autre solution? Tout ce que je veux c'est pouvoir charger un code de l'IDE arduino sur un µc qui n'est pas utilisé par une carte arduino du marché... C'est possible?

Merci

L'IDE Arduino ne marche qu'avec des µC de la famille ATmega ou ATtiny ou bien avec l'ARM de la nouvelle DUE.

Il existe un clone Arduino basé sur le 644 : La Sanguino. Par contre il n'est pas directement supporté par l'IDE. il faut aller voir sur sanguino.cc pour en savoir plus.

Pour ton développement et ta mise au point, tu peux utiliser l'Arduino Mega2560 qui comprend un ATmega2560 qui dispose d'encore plus de RAM et de Flash que le 644. Une fois que ton dev est au point sur ATmega, tu pourra envisager de passer sur 644. Il y a un peu plus d'un an, zoroastre avait fait une carte équipée de 2x 644 : http://forum.arduino.cc/index.php?topic=104781.0 L'avantage du 644 est qu'il est le plus gros ATmega utilisable en techno traditionnelle (non CMS).

Sinon, il est peut être plus simple de garder l'Arduino2560 telle qu'elle et de faire juste un shield pour ta partie perso.

Le bootloader est un petit programme qui se situe au début de la flash de µC et qui permet de transférer ton propre programme à la suite dans la flash sans équipement plus compliqué qu'une liaison série ou un adaptateur USB/Série (inclus sur certaines cartes). Le bootloader Arduino (enfin, LES bootloaders...) sont adaptés aux µC ATmega et ne peuvent pas être portés sur d'autres µC. De plus le code généré par l'IDE Arduino est pour ATmega ou ARM.

Il existe sur d'autres cartes/d'autres µC des environnement copiés sur Arduino qui permettent de reprendre une bonne partie du code et des habitudes comme Energia pourles cartes à base de µC MSP430 de TI.

Un ATMEGA reste un ATMEGA, et la transition ne doit pas être bien compliquée, surtout qu'il ressemble bougrement au 328 au niveau ressources hard, les registres sont peut-être aux mêmes adresses (on peut rêver...)?

Normalement, il y a tout ce qu'il faut dans le core arduino. Mais il faut faire un boards.txt adapté.

Dans arduino.h on trouve des #ifdef pour : AVR_ATtiny24, AVR_ATtiny44, AVR_ATtiny84, AVR_ATtiny25, AVR_ATtiny45, AVR_ATtiny85, AVR_ATmega1280, AVR_ATmega2560, AVR_ATmega1284, AVR_ATmega1284P, AVR_ATmega644, AVR_ATmega644A, AVR_ATmega644P, AVR_ATmega644PA

Donc il ne devrait pas y avoir de difficultés.

http://wiring.org.co/hardware/

Le projet Arduino est un fork du projet Wiring -> pour s'en convaincre il suffit de regarder le nombre de fichier qui commencent encore par wiring dans l'IDE arduino. L'IDE Wiring est donc quasiment le même.

Au fil des versions les deux projets Wiring et Arduino ont légèrement déviés l'un de l'autre. Des bibliothèques risquent d'être devenues non compatibles, ou pas....., c'est à vérifier. Le 644 a disparu des cartes reconnues par l'IDE arduino mais il y figurait encore il y quelques temps.

Sinon il y a le projet initié par un membre du forum arduino qui a réécrit une grosse partie de l'IDE http://forum.arduino.cc/index.php?topic=176498.0;topicseen http://uecide.org Je n'ai plus de version à jour mais peut-être qu'il reconnait le 644.

Ok donc si je veux utiliser l'IDE arduino je dois rester sur AT mega.

Corcernant le fait de prendre une arduino 2560, je ne peux pas, il faut vraiment que ce soit tout petit (a la base, je pensait me servir d'une arduino mini mais je suis trop court niveau RAM) Mais je me sert effectivement actuellement d'une 2560 pour développer le programme.

Pour ce qui est du 644 il devrait donc étre possible de s'en servir avec l'IDE arduino, c'est ça? Il faut juste que je (trouve? / Fasse?) un bootloader adapté? Parceque je suis pas sur de comprendre:

Il existe un clone Arduino basé sur le 644 : La Sanguino. Par contre il n'est pas directement supporté par l'IDE.

Mais c'est pas pour autant que c'est infaisable?

Autre chose, il faut absolument que le µC me sorte du 0/3.3v. Comment je peux choisir ça? Sachant que l'arduino mini 3.3v et la 5v utilisent les deux un 328, je suppose que c'est pas le µc en lui même qui définit les niveau de sortie?

Les ATmega peuvent fonctionner entre 1.8V et 5.5V. La fréquence maximale de fonctionnement dépend de la tension d'alimentation, mais c'est le même circuit : La fréquence maximale en fonction de la tension d'alimentation est approximativement fmax(VCC) = 6*VCC-6.5 Ce qui donne 13MHz pour 3.3V

Pour ce qui est de ta programmation sur ta carte à base de 644, je te suggère de passer au programmateur genre USBASP qui ne coute que quelques euros sur eBay. Je te conseille d'entre prendre 2 afin de pouvoir les mettre à jour l'un avec l'autre si besoin ainsi que le petit adaptateur présenté en début de recherche.

La programmation ISP (in-situ) permet de se passer de bootloader, ce qui est d'ailleurs indispensable le jour où tu achetera ton ATmega644 en tant que composant car il n'aura pas de bootloader préprogrammé.

Maintenant, si tu as besoin de beaucoup de mémoire dans un espace restreint, la famille ATmega n'est peut être pas la bonne solution.

Tu peux t'orienter vers du STM32 ou du Stellaris/TIVA. Le TIVA est un ARM et il est reconnu par l'IDE Energia qui est un clone de l'IDE Arduino. Voir les launchpad chez TI : Stellaris Launchpad ou TIVA Launchpad (ARM Cortex-M4F, 80MHz, Flash 256KB, SRAM 32KB). Par contre pour ce qui est de le mettre sur ta propre carte, il te faudra des petits doigts : seulement en CMS!

j'ai regardé la sanguino, et malgré un 644 bien large, la carte est toute petite (pas de fioritures). Et ton 644 peut tourner à 3,3V, mais dans ce cas limité à 12MHz (ça doit pas changer beaucoup si c'est juste un problème de mémoire).

Réécrire un bootloader, ça doit pas être trop dur, il suffit de reprendre celui du 328, et d'adapter la taille mémoire. Par contre, le core arduino aura peut-être du mal. Sanguino propose un bootloader ainsi qu'un core, adaptable à la version 018 de l'IDE. Je ne vois aucune différence entre les versions de l'IDE, à part des traductions maladroites et risibles en Français. Tu peut installer l'IDE 018, ça ne changera rien à ta config sur les autres IDE, ça s'installe dans des répertoires différents.

pour ce qui est de ta programmation sur ta carte à base de 644, je te suggère de passer au programmateur genre USBASP qui ne coute que quelques euros sur eBay. Je te conseille d'entre prendre 2 afin de pouvoir les mettre à jour l'un avec l'autre si besoin ainsi que le petit adaptateur présenté en début de recherche.

La programmation ISP (in-situ) permet de se passer de bootloader, ce qui est d'ailleurs indispensable le jour où tu achetera ton ATmega644 en tant que composant car il n'aura pas de bootloader préprogrammé.

Et je peux pas me servir de mon arduino mega comme contrôleur ISP sinon? j'avais fait ca pour recharger le bootloader défectueux d'une mini. Et cette manip me permet uniquement de charger le bootloader, non? Après je prend code sur l'IDE arduino et je télécharge sur le 644 avec un truc comme ça: http://cgi.ebay.fr/ws/eBayISAPI.dll?ViewItem&item=221248867340&ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649 C'est ça?

Tu peux t'orienter vers du STM32 ou du Stellaris/TIVA. Le TIVA est un ARM et il est reconnu par l'IDE Energia qui est un clone de l'IDE Arduino. Voir les launchpad chez TI : Stellaris Launchpad ou TIVA Launchpad (ARM Cortex-M4F, 80MHz, Flash 256KB, SRAM 32KB). Par contre pour ce qui est de le mettre sur ta propre carte, il te faudra des petits doigts : seulement en CMS!

Ouai mais bon si j'ai bien compris, si je change je vais etre obligé de recommencer tout mon code et les bibliothèque que j'utilise ne seront pas compatibles..... J'ai pas tellement envie de reprendre mon projet à zéro :( .

Tu peut installer l'IDE 018, ça ne changera rien à ta config sur les autres IDE, ça s'installe dans des répertoires différents.

Genial! Et mes librairies seront compatibles?

Moi aussi j'ai eu à me poser la question de la taille du proc, car même le MEAG2560 devenait trop juste. J'ai acheté deux STM32, c'est tellement pas cher... Mais ça fait un an que je les ai, et elles sont encore dans leurs boîtes scellées. Je n'ose pas m'y mettre car niveau prog, c'est complètement différent de l'arduino, et c'est tout un nouvel et long apprentissage qui m'attend je pense (je suis autodidacte en prog...).

pour ce qui est de l'IDE-0018, il faut tester les nouvelles libs, il y a des chances que ça bug un peu...

Bonjour,

Reste en Arduino 1.0.x, si tu repars en 0018 tu risques d’avoir des incompatibilités à tout les coins de rue :wink:
Ensuite prend un ATmega1284p (128K flash, 16Ko RAM). Il coute le même prix qu’un Atmega644p mais il est bien plus fourni en mémoire.

Pour rendre l’ide compatible ATmega1284p il te suffit d’ajouter ceci dans le fichier boards.txt de ton installation arduino :

##############################################################

M1284.name=DIY ATmega1284 @16MHz
M1284.upload.using=usbtiny
#M1284.upload.using=arduino
M1284.upload.maximum_size=131072
M1284.bootloader.low_fuses=0xFF
M1284.bootloader.high_fuses=0xDC
M1284.bootloader.extended_fuses=0xFD
M1284.bootloader.path=atmega1284
M1284.bootloader.file=blink.hex
M1284.bootloader.unlock_bits=0x3F
M1284.bootloader.lock_bits=0x0F
M1284.build.mcu=atmega1284p
M1284.build.f_cpu=16000000L
M1284.build.core=arduino
M1284.verbose=true
M1284.build.variant=mega

(tu remarqueras que je n’utilise pas de bootloader dans cette version)

Bien vu Skywood, ça va aussi dans mon sens... comment rajouter une carte dan arduino :

http://code.google.com/p/arduino/wiki/Platforms C'est pas très à jour, mais on doit pouvoir s'en inspirer.