J'ai travaillé sur un projet Arduino. Après avoir tout fait fonctionner en utilisant l'Arduino, je voudrais passer à une solution qui n'utilise PAS Arduino. Autrement dit, je voudrais utiliser un microcontrôleur sans impliquer la carte Arduino. Cela permettra une seule carte, pas de solution de blindage.
Je sais qu'il existe des méthodes pour fabriquer mon propre Arduino sur une planche à pain, mais ce n'est pas vraiment ce que j'essaie de faire.
Je ne sais pas vraiment comment faire ça.
À moins qu'il n'y ait une meilleure option, je penche pour l'utilisation de l'ATmega328, qui est utilisé par l'Arduino. Je comprends que les outils de développement sont disponibles gratuitement ou du moins pas très chers.
Aux fins de cette question, supposons que je puisse obtenir + 5 V sur mon circuit.
Ma première question est de savoir comment programmer le MCU. Je pense qu'il y a deux options:
- Achetez un programmeur, programmez le MCU, puis placez la puce dans mon circuit.
- Concevez mon circuit pour inclure la prise en charge de la programmation en circuit.
Je suppose que si je choisis l'option # 1, c'est aussi simple que d'insérer une puce programmée dans mon circuit; Je n'ai besoin de rien d'autre. Bien sûr, changer le logiciel serait gênant.
Mais pour l'option # 2, je ne suis pas sûr de ce dont j'ai besoin. D'après le peu de lecture que j'ai fait, je pense que j'ai besoin d'un câble de programmation et d'un connecteur sur ma carte (quel type?). Ensuite, je suppose que je (correctement) câble le connecteur à certaines broches de l'ATmega.
Dans tous les cas, j'aurai besoin du studio Atmel.
Deuxièmement, à part l'alimentation, y a-t-il quelque chose sur l'Arduino dont j'ai absolument besoin? Je suppose que peut-être un interrupteur de réinitialisation?
la source
Réponses:
Bienvenue dans le monde merveilleux d'Atmel. Permettez-moi de vous offrir quelques réponses à vos questions basées sur mon passe-temps et mon expérience professionnelle.
Ne vous embêtez avec rien MAIS la programmation en circuit. À moins que vous ne soyez un codeur parfait, retirer une puce à chaque fois que vous voulez la programmer est un cauchemar. Je recommande l'AVRISPmkII comme outil de programmation d'entrée de gamme. L'inconvénient est qu'aucun débogage matériel n'est pris en charge. Une alternative est le dragon mais je n'ai aucune expérience avec ça. Je peux dire que le JTAGICEmk3 est un bel outil de débogage capable.
Atmel studio est bon pour la programmation. Il s'agit en fait de mon environnement de développement intégré préféré. Vous pouvez utiliser des outils CLI tels que AVRDUDE et AVR-GCC mais l'IDE s'en charge pour vous.
EN RÉSUMÉ:
Achetez un AVRISP pour une simple programmation (plus simple, plug & play) ou un DRAGON (je ne peux pas vous conseiller).
Sur votre carte, sortez les broches ICSP vers un en-tête à double rangée de 0,100 "à 6 broches - les connexions sont décrites dans cette fiche technique .
Les commutateurs de réinitialisation ne sont pas nécessaires.
la source
Vous n'avez pas à "graduer" d'un seul coup. Voici comment j'ai converti:
Pour commencer, j'ai continué à utiliser un Arduino, mais j'ai converti les appels à la bibliothèque Arduino en registres de lecture et d'écriture, une ligne à la fois, pour voir si mes programmes fonctionnaient toujours. De cette façon, je me suis habitué à utiliser les registres et j'ai vu qu'ils n'étaient pas radicalement discontinus avec la façon de faire des choses Arduino. Les fonctions Arduino comme digitalWrite () manipulent simplement les registres - vous êtes libre de les lire et d'y écrire directement dans vos croquis.
Ma prochaine étape était de mettre un ATTiny 85 sur une planche à pain et de le programmer avec Arduino en tant que FAI ( http://highlowtech.org/?p=1695 ). Si vous achetez un bloc d'alimentation et que vous utilisez l'oscillateur interne de l'ATTiny, cela nécessite ridiculement peu de câblage. J'ai utilisé l'IDE Arduino pour compiler, mais j'ai continué à utiliser autant que possible les registres.
Ensuite, j'ai installé la chaîne d'outils de ligne de commande Crosspack gratuite et compilé un programme clignotant. Après quelques essais et erreurs, j'ai réussi à programmer l'ATTiny avec avrdude uniquement, en restant complètement en dehors de l'écosystème Arudino.
Une fois que vous avez atteint blinky avec les outils de ligne de commande uniquement, vous êtes libre d'Arduino. Explorez les différents périphériques et leurs registres et bientôt ce sera totalement naturel.
Après tout cela, je me retrouve souvent à utiliser Arduino parce que c'est plus rapide. J'ai trouvé que regarder les descriptions de registre était un peu nul; pas de sens de le faire si vous n'êtes pas obligé. Mais il est bon de savoir comment.
la source
Je suis d'accord avec le commentaire de HL-DSK ci-dessus. Je dépenserais l'argent supplémentaire et trouverais un programmeur avec des capacités de débogage. J'utilise JTAGICE3, environ 110 $ sur digi-key.
Lisez ici la programmation des FAI . Il vous montrera comment faire ressortir les connexions SPI. Les connexions SPI sur votre puce seront dans la fiche technique ATmega. Regardez à la page 2 pour les broches MISO / MOSI / SCK / RESET. Le programmeur doit pouvoir contrôler la ligne de réinitialisation. N'oubliez pas d'utiliser une résistance de rappel sur la ligne de réinitialisation afin que votre puce fonctionne après la déconnexion du programmateur.
Procurez-vous un en-tête 2x3 ici . Ou créez le vôtre en utilisant des en-têtes séparables.
la source
La différence entre un Arduino et un ATmega328 nu n'est que deux choses. Le chargeur de démarrage Arduino et les bibliothèques Arduino. Vous pouvez coder un Arduino avec du C ou du C ++ nu sans utiliser aucune des bibliothèques. Vous pouvez également utiliser l'assemblage à la place. Le chargeur de démarrage vous permet de charger du nouveau code via la série sans passer par la programmation en série (légèrement) plus compliquée (essentiellement SPI).
Vous pouvez utiliser les bibliothèques de programmation standard et avr-gcc avec presque n'importe quelle idée. Contrairement à ce que d'autres pourraient dire, coder un Arduino est fondamentalement comme coder un microcontrôleur nu, avec quelques commodités supplémentaires au détriment de certaines performances.
la source
J'achète des puces Atmega328P pré-chargées et les programme en circuit avec un câble FTDI et avrdude, de la même manière que je programmerais l'Arduino. J'aime l'IDE Eclipse mais vous pouvez utiliser n'importe quel environnement que vous préférez - Atmel Studio, l'IDE Arduino, emacs ou pieds nus sur la ligne de commande.
Cette carte est en cours de construction au point où elle est suffisamment complète pour tester avec un programme Hello, en utilisant le câble pour la programmation, l'alimentation et le terminal. Il aura toujours besoin de son alimentation - régulateur de tension à courant de repos ultra-faible LM2936 et un connecteur de batterie, dans mon cas - et de tous les autres composants intégrés et connexions externes dont le projet aura besoin:
Puisque vous avez un Arduino, vous pouvez économiser un peu d'argent et utiliser des puces non programmées, en utilisant l'Arduino pour installer le chargeur de démarrage. Les jolies étiquettes bleues à broche aident à maintenir mon taux de gaffes bas! J'utilise un cristal de 16 MHz mais si vous pouvez exécuter avec l'oscillateur interne, votre nombre de pièces diminue de 3 (le xtal et 2 condensateurs).
la source
Pour passer d'Arduino où le matériel est fourni et le logiciel est une superposition en langage C, je voudrais faire quelques suggestions. Je vois que les gens ont posté des réponses utiles mais j'ai été là où vous êtes et je ferais des choses un peu différentes.
J'ai quelques idées schématiques que j'ai apprises par moi-même afin que vous ayez une interface propre et fluide avec votre micro. Dis-moi si tu as besoin d'aide.
la source
Conseils honnêtes
Arduino est pour les débutants, il y a deux façons d'aller d'ici
Méthode 1: Comprendre le fonctionnement d'un microcontrôleur / processeur (approche préférable)
J'entends par là l'apprentissage des architectures et du code d'assemblage (ou du métal nu) pour le micro p / c. Si vous avez besoin d'un point de départ pour cela, je suggère Atmel 8051 qui est un microcontrôleur 8 bits avec l'architecture la plus simple et le jeu d'instructions d'assemblage. Tout autre processeur 32 bits ou 64 bits moderne possède une architecture dérivée. Ce microcontrôleur est toujours utilisé dans le cadre de mes cours de troisième cycle car c'est un bon point de départ et beaucoup de littérature est disponible.
Oh et des kits pour créer votre carte ISP sont vendus (kits complètement assemblés avec processo, composants de soudure à des kits de carte et vous pouvez construire la carte de développement vous-même ne nécessite que quelques circuits intégrés et câbles / prises RS-232)
Puisqu'il s'agit d'une technologie de pointe, tous les composants seront bon marché.
Méthode 2: passez à une approche matériel-logiciel (moins préférable)
C'est l'approche pour les fainéants qui ont plongé dans un peu d'assemblage et "exploité" OU les gens qui veulent passer à plus de logiciels que de matériel. Je suggérerais de passer à un autre conseil amateur comme Raspberry Pi ou BeagleBoneBlack avec des processeurs ARM et commencer à faire des projets dans leur créativité.
la source
Vous pouvez utiliser la carte Arduino, sans utiliser les bibliothèques sandbox et l'environnement, vous pouvez tout programmer vous-même directement. Si vous souhaitez utiliser leur chargeur de démarrage via serial / uart pour programmer, cela fonctionne très bien. Mais la plupart / toutes les parties avr peuvent également être programmées d'une autre manière, la partie étant maintenue à zéro, ce qui signifie qu'elle n'est pas brickable. il est assez facile de mordre bang spi à partir d'un arduino ou d'un autre microcontrôleur ou avec une rupture ftdi d'une certaine saveur. sparkfun a des cartes arduino et non-arduino (le 32u par exemple) dont l'en-tête spi est évident. et des cartes de dérivation ftdi que vous pouvez facilement bitbang en utilisant la bibliothèque de ftdi ou la bibliothèque ftdi fournie avec linux.
La documentation de chaque partie présente les options de démarrage et les options de programmation flash. oui, il n'est pas difficile de simplement acheter des pièces et de créer votre propre carte de dérivation. Je ne ferais pas cela jusqu'à ce que vous ayez utilisé une carte existante ou une carte d'évaluation simple, puis clonez-la si nécessaire. Idéalement, commencez par une pièce avec un oscillateur rc interne, essentiellement des broches d'alimentation, de terre et de programmation ...
la source