D'accord, j'ai assez joué avec Arduino pour me sentir assez à l'aise avec. Tout ce qui est fait maintenant, c'est plus d'apprendre l'électronique que le côté Arduino.
Quelle est la prochaine étape de mon apprentissage? Arduino est un programmeur / contrôleur combiné, donc je suppose que je dois rompre ce lien et commencer à travailler avec une puce de contrôleur distincte du contrôleur, je suppose? Quelqu'un peut-il m'orienter dans la bonne direction?
Réponses:
Voici quelques conseils pour travailler avec les AVR et C.
Commencez avec le C intégré avec ATmega32 (série ATmega AVR)
la source
Je suis d'accord avec Joby - Arduino est génial mais je me sens toujours étouffé par le cadre avec lequel ils m'entourent. Je passerais à l'utilisation du C droit sur votre Arduino et créerais beaucoup de fonctionnalités de bibliothèque qu'ils fournissaient à partir de zéro. Je préfère généralement la profondeur avant l'étendue - ne commencez pas simplement sur une autre famille de microcontrôleurs en utilisant des cadres plus fournis. Apprenez un peu plus sur la façon d'implémenter vous-même certaines de ces fonctions.
Commencez avec un programme de travail et remplacez les appels de la bibliothèque Arduino par vos propres versions, une fonction à la fois. Vous en apprendrez beaucoup sur les registres de contrôle, le timing, les opérations sur les bits, etc. si vous ne les avez pas déjà. Lisez la fiche technique ATMega328 en profondeur - tout ce dont vous avez besoin est là.
Essayez un autre IDE comme AVR Studio ou Code :: Blocks. Apprenez la chaîne d'outils GCC. Essayez des techniques de codage plus avancées - tests unitaires, couverture, profilage, vérification des peluches / attelles. Mettez un RTOS sur l'Arduino.
Un programmeur / contrôleur combiné n'est pas un signe de faiblesse - c'est juste un choix de conception. La seule «faiblesse» qui pourrait en résulter est le manque de débogage en circuit. Achetez un AVR Dragon et vous le ferez lécher pour 50 $.
la source
Je pense que ce qu'il faut apprendre ensuite dépend de ce que vous voulez faire que l'Arduino ne peut pas faire. Autrement dit, je ne vois pas beaucoup d'intérêt à programmer une puce similaire pour faire les mêmes choses, mais avec des moyens plus difficiles.
Voici quelques faiblesses Arduino:
Je peux imaginer deux directions à suivre:
Je peux ajouter plus de détails si vous commentez quelle direction est la plus attrayante. (Le second est certainement moins cher.)
la source
Apprenez I2C, SPI, 1wire et essayez d'interfacer les capteurs avec de telles interfaces. Lisez beaucoup de fiches techniques de ces capteurs et essayez de tout comprendre. Posez des questions lorsque vous êtes coincé. Apprenez MODBUS (RTU / ASCII / TCP) ou un protocole similaire qui peut ouvrir votre appareil au monde une fois que vous l'avez intégré dans l'appareil. Apprenez l'électronique générale et essayez d'interfacer les relais, les triacs, ce qui est tiré vers le haut et vers le bas, ce qui est source et descendant, comment dessiner des schémas et connecter des pilotes de base à votre MCU.
la source
Pour commencer, vous souhaiterez peut-être passer d'Arduino en tant que plate-forme à AVR en tant que plate-forme. C'est-à-dire, apprendre à programmer / utiliser un microcontrôleur AVR vierge pour vos projets au lieu de l'Arduino. De cette façon, vous n'aurez pas à acheter une autre carte Arduino pour chaque projet que vous faites ou pour faire des projets avec des amis. C'est une étape assez simple (un Arduino est juste un microcontrôleur Atmel AVR conventionnel mais avec une carte et un chargeur de démarrage spéciaux), mais c'est un gros pour vendre / donner des projets à des amis. La chaîne d'outils est également similaire: vous utilisez avr-gcc ou avr-g ++ avec make en conjonction avec un utilitaire de programmation pour installer votre programme.
la source