Programmer un ATMega328P et l'utiliser sans carte Arduino

13

J'aimerais utiliser un ATMega328P pour mon projet, j'espère le faire sans la carte Arduino.

Je sais qu'avec l'IDE Arduino et une carte Arduino je peux programmer le microcontrôleur. Cependant, serait-il possible une fois que j'ai programmé et débogué le programme avec la carte Arduino IDE + Arduino, de retirer le microcontrôleur de la carte Arduino et d'utiliser l'ATMega328P séparément, sans la carte?

Si oui, quelles configurations supplémentaires dois-je faire pour que l'ATMega328P fonctionne correctement sur la maquette?

George
la source
Utilisez ATMEGA328 P-PU avec le chargeur de démarrage Arduino UNO .... vous pouvez le trouver dans les magasins de loisirs et en ligne et tout ça stuff
Arthur
L'utilisation de la puce nue est absolument possible et ne pose aucun problème.
dannyf
Ce n'est pas la même question que la vôtre, mais vous pourriez en obtenir quelques informations. arduino.stackexchange.com/questions/32970/…
Code Gorilla
Vous pouvez suivre les réponses de cette question
Rashedul Islam Emon

Réponses:

7

Vous pouvez supprimer un ATMEGA d'un Arduino et l'utiliser dans votre propre carte, mais lorsqu'elle est utilisée sur une carte Arduino typique, la puce sera fusionnée pour un cristal externe comme source d'horloge, plutôt que l'horloge interne (plus simple mais moins précise).

Vous ne pouvez pas changer la source d'horloge via ISP à moins que la source d'horloge que la puce attend actuellement ne soit opérationnelle, donc si vous voulez changer la sélection d'horloge, vous devrez le faire avant de retirer la puce de l'Arduino.

Cependant, vous pouvez également fournir un cristal d'horloge et ses deux condensateurs (ou un résonateur de remplacement qui a souvent cela intégré) sur votre carte externe.

En règle générale, les puces (même celles pré-flashées avec un chargeur de démarrage pour des raisons de commodité) sont moins chères que les cartes, il n'est donc pas clair pourquoi vous voudriez déplacer la même puce hors de l'Arduino plutôt que d'en utiliser une autre. Vous voudrez tout de même un adaptateur série de niveau logique USB, et une fois que vous l'avez, vous pouvez faire du développement sur la puce nue de votre carte, même si vous faites des tests initiaux sur l'Arduino. Si vous n'avez pas le convertisseur USB, vous pouvez soit retirer la puce d'une carte Arduino et faire passer les fils de ses D1 et D0, soit maintenir la puce intégrée en position réinitialisée pour vous permettre d'emprunter ces lignes série sans ingérence.

Chris Stratton
la source
1
Mon idée est de n'utiliser qu'un microcontrôleur sans carte. Comme il est facile de programmer un Arduino, j'ai pensé que je pourrais choisir un ATMega. Donc, j'ai un Arduino uno, mon idée est d'acheter un seul ATMega et de le programmer et de le déboguer en utilisant la carte uno. Cependant, je viens de réévaluer que si je séparais l'ATMega de l'Arduino, j'aurais besoin d'ajouter des composants (crystal, pull up resitances ..). Pouvez-vous expliquer ce que vous voulez dire dans le dernier paragraphe de votre message? Existe-t-il un moyen simple de programmer directement un ATMega (ou tout autre microcontrôleur) sans utiliser l'IDE Arduino? Merci.
George
Bien que vous puissiez ignorer l'IDE, son utilisation ou non est essentiellement sans rapport avec la complexité de votre circuit, car vous pouvez utiliser l'IDE ou non avec un circuit doté ou non d'une horloge externe et utilisant un port USB- série sur votre carte cible, sur un câble, ou en programmant votre croquis avec un programmeur FAI. Retirer une puce d'une carte ne vous rapporte rien comparé à l'achat d'une puce avec ou sans chargeur de démarrage et en en chargeant vous-même, en utilisant potentiellement votre Arduino intact en tant que programmeur FAI, ou en utilisant FAI pour charger directement votre croquis sans chargeur de démarrage.
Chris Stratton
7

Oui, vous pouvez utiliser ATMega328Psans carte Arduino. J'utilise toujours l'IC sans arduino. Il y a deux façons de procéder.

  1. Vous pouvez utiliser la carte Arduino avec l'IC. Programmez l'IC, puis retirez-le et utilisez-le dans votre circuit. Vous devrez utiliser 16MHZ Oscillatoravec des condensateurs.
  2. Si vous n'avez pas de carte arduino, vous pouvez utiliser d'autres programmeurs comme USBasppour programmer votre Atmega328p. Dans ce cas, n'utilisez pas le bouton de téléchargement direct à la place, utilisez le téléchargement à l'aide des options de programmation du menu fichier. N'oubliez pas de sélectionner la carte comme Arduino Pro or Pro Mini (5v, 16mhz) With ATmega328et le programmeur comme USBasp.

REMARQUE : reportez-vous au mappage des broches Atmega328p et programmez votre appareil en conséquence. Prendre plaisir!

Avion
la source
2

Recherchez "Build an Arduino" - vous trouverez des tonnes d'articles pratiques sur la façon de faire exactement cela. Vous auriez besoin de pouvoir souder des connexions sur une carte de circuit imprimé (et même pas si vous vouliez utiliser une planche à pain sans soudure), mais c'est vraiment simple. Vous pouvez même le construire d'abord et programmer le MCU sur le PCB à l'aide d'un câble FTDI. J'utilise une carte Arduino et une planche à pain sans soudure pour expérimenter avec des pièces inconnues, mais je vais généralement immédiatement sur une carte fabriquée à la main une fois que je connais tous les composants que j'utiliserai.

Le prototypage avec la carte Arduino vous permet de rassembler un tas de pièces et de faire fonctionner quelque chose rapidement, et si l'Arduino est plus capable que votre cible finale - f / ex, un Mega 2650 - vous pouvez temporairement ignorer la mémoire et les contraintes d'E / S du plus petit appareil.

JRobert
la source
0

Il est assez facile d'utiliser une puce Arduino autonome. La seule chose délicate à propos de la puce utilisée pour les cartes officielles est qu'elles sont fusionnées pour utiliser l'oscillateur externe plus rapide (et plus précis) qui est monté sur la carte. Cela s'applique même lorsque vous achetez les puces en vrac, car la plupart sont revendues avec l'intention d'être installées dans une carte Arduino pour remplacer une carte grillée, à l'exception peut-être de Digikey.

Avertissements: L'Arduino est conçu comme une carte de prototypage, et peu de choses font mieux que dans cette tâche. Vous pouvez laisser la puce sur la carte Arduino jusqu'à ce que vous ayez fini de concevoir et de tester votre circuit. C'est seulement alors que vous le connectez directement. Il peut être utilisé sur place si vous avez un circuit d'horloge en place, ou vous pouvez changer les fusibles (voir plus loin) et reprogrammer l'Arduino avec un adaptateur ISP et une vitesse d'horloge de 8 mhz (PlatformIO vous permet de le faire ( et permet de importations d'une esquisse Arduino) - consultez leur page de documentation pour le plugin Atmel AVR, mais vous pouvez également consulter un certain nombre de guides sur la façon d'ajouter un fichier de carte à Arduino pour lui dire d'utiliser l'option 8mhz pour une puce nue)

Si vous retirez la puce pour l'utiliser dans un circuit différent, elle a besoin soit de ce circuit d'horloge ajouté, soit de changer ses fusibles (j'y reviendrai dans une minute). Il sera également difficile de programmer, pour un certain nombre de raisons, vous voudrez donc acheter un peu de matériel assez bon marché:

Programmation d' une puce autonome: le processeur de l'Arduino n'est pas conçu nativement pour parler à un ordinateur. Vous avez besoin d'un intermédiaire. Sur l'Uno, cela se fait via une deuxième puce Atmel dotée d'une capacité USB et un chargeur de démarrage sur la puce principale. Ce que cela fait, c'est qu'il utilise l'UART pour télécharger le programme tandis que la puce USB convertit les messages du PC en signaux UART. Étant donné que le chargeur de démarrage est un peu pénible lorsque la puce est isolée (car UART est difficile et son installation définit la puce pour utiliser une horloge externe en conséquence), vous voudrez acheter un programmeur ISP pour l'Arduino (ou suivez le croquis et les instructions Arduino-as-ISP pour créer le vôtre, qui nécessite un Arduino avec une puce présente, vous aurez donc besoin d'une seconde pour être programmé).

Ceux-ci peuvent programmer l'ATMega 328 directement sur SPI, sans chargeur de démarrage (il existe de nombreuses instructions sur Internet; recherchez par exemple "programmez ATMega 328P nu avec USBAsp"). Cela rend beaucoup plus facile de changer et de déboguer votre programme en dehors de la sortie et de la réintroduction de la puce dans la carte Arduino d'origine. Vous en avez également besoin pour modifier les paramètres d'horloge si vous ne souhaitez pas utiliser un cristal externe.

Si vous souhaitez déboguer la puce, il est utile d'acheter également un adaptateur FTDI ou un autre convertisseur USB-UART. Notez que sans la partie circuit de réinitialisation de la carte (ou encore, en ajoutant la vôtre), cela ne vous permettra toujours pas de programmer l'ATMega même avec le chargeur de démarrage. Pour cela, connectez les broches de masse, RX et TX à l'adaptateur. Vous pouvez ou non vouloir connecter la ligne VCC, mais il est conseillé de ne pas le faire s'il y a beaucoup de choses connectées à la puce et / ou si elle a sa propre alimentation. Notez que le RX et le TX doivent être échangés lorsque vous les connectez; c'est-à-dire RX à TX et TX à RX - vous voulez que la puce RX (reçoive) ce que l'adaptateur TX (transmette), et vice versa.

Le circuit d'horloge n'est pas difficile à construire, mais il nécessite quelques composants que vous n'avez peut-être pas. Donc, pour changer la source d'horloge , allez sur http://www.engbedded.com/fusecalc/ et sélectionnez l'ATMega 328P. Les valeurs par défaut sont bonnes, mais vous souhaiterez peut-être activer la suppression continue de l'EEPROM et désactiver la division de l'horloge par 8 ou ajuster les paramètres de brunissement. Ne touchez à rien d'autre (la désactivation de la réinitialisation ou du SPI ou l'activation de DebugWire résulte en un "plaisir" qui nécessite un programmeur HV pour réparer). Une fois terminé, collez la commande qu'il fournit à la commande AVRDude. Vous devrez modifier les options -c (-p est déjà défini sur l'ATMega 328P, mais échouera pour les non-P 328 - ne les achetez pas), et peut-être ajouter l'option -P (pour le port). N'omettez pas l'option -u en minuscule, sinon elle refusera de mettre à jour les fusibles.

avrdude -p m328p -v -c usbasp -B 100 -u [add extras here: (-P <PORT>) <fuse set command here>]

Notez que si vous achetez un USBASP (assurez-vous qu'il a trois jeux de cavaliers!), Pour autant qu'ils soient mon programmeur préféré, ils peuvent ne pas avoir le firmware mis à jour qui prend en charge l'option -B (dont vous aurez probablement besoin). Cela signifie que vous devez le connecter à un Arduino via le port de programmation à six broches, de la même manière que vous l'utiliseriez pour programmer le chargeur de démarrage de l'Arduino, mais ensuite utiliser l'esquisse Arduino-as-ISP pour programmer le nouveau firmware au programmeur (recherchez "mettre à jour le firmware usbasp via arduino-as-isp")! Pour référence, cela signifie généralement que le câble ne fait pas face au corps de la carte, et vous devrez probablement programmer le croquis avantconnexion du câble. Activez également le cavalier power-from-programmer sur l'USBASP (5V) et celui "auto-programme". (voir https://forum.arduino.cc/index.php?topic=560719.0 pour l'emplacement des cavaliers d'alimentation et de programme (JP2)).

RDragonrydr
la source