Okay, ich habe mit Arduino genug rumgespielt, dass ich mich ziemlich wohl dabei fühle. Alles, was jetzt getan wird, ist mehr das Erlernen der Elektronik als die Arduino-Seite.
Was ist der nächste Schritt für mein Lernen? Arduino ist ein kombinierter Programmierer / Controller. Vermutlich muss ich diese Verbindung trennen und anfangen, mit einem Controller-Chip zu arbeiten, der vom Controller getrennt ist. Kann mich jemand in die richtige Richtung weisen?
Antworten:
Hier einige Tipps zum Arbeiten mit AVRs und C.
Beginnen Sie mit Embedded C mit ATmega32 (ATmega AVR-Serie)
quelle
Ich stimme Joby zu - Arduino ist großartig, aber ich fühle mich immer erstickt von den Rahmenbedingungen, mit denen sie mich umgeben. Ich würde fortfahren, direktes C auf Ihrem Arduino zu verwenden und einen Großteil der Bibliotheksfunktionalität zu erstellen, die sie von Grund auf bereitgestellt haben. Im Allgemeinen bevorzuge ich die Tiefe vor der Breite. Beginnen Sie nicht einfach mit einer anderen Mikrocontroller-Familie, indem Sie mehr bereitgestellte Frameworks verwenden. Erfahren Sie mehr darüber, wie Sie einige dieser Funktionen selbst implementieren.
Beginnen Sie mit einem Arbeitsprogramm und ersetzen Sie die Arduino-Bibliotheksaufrufe nacheinander durch Ihre eigenen Versionen. Sie werden eine Menge über die Steuerregister, das Timing, die Bitoperationen usw. lernen, wenn Sie dies nicht bereits getan haben. Lesen Sie das ATMega328-Datenblatt ausführlich durch - alles, was Sie brauchen, finden Sie dort.
Probieren Sie eine andere IDE wie AVR Studio oder Code :: Blocks aus. Lernen Sie die GCC-Toolchain. Probieren Sie fortgeschrittenere Codierungstechniken aus - Komponententests, Abdeckung, Profilerstellung, Flusen- / Schienenprüfung. Legen Sie ein RTOS auf den Arduino.
Ein kombinierter Programmierer / Controller ist kein Zeichen von Schwäche - es ist nur eine Design-Wahl. Die einzige "Schwäche", die daraus entstehen könnte, ist das Fehlen von In-Circuit-Debugging. Kaufen Sie einen AVR-Drachen und Sie werden ihn für 50 US-Dollar bekommen.
quelle
Ich denke, was als nächstes zu lernen ist, hängt davon ab, was Sie tun möchten, was der Arduino nicht kann. Das heißt, ich kann nicht viel Sinn darin sehen, einen ähnlichen Chip zu programmieren, um die gleichen Dinge zu tun, aber mit schwierigeren Mitteln.
Hier sind einige Arduino-Schwächen:
Ich kann mir zwei Richtungen vorstellen:
Ich kann ausführlicher darauf eingehen, wenn Sie sich dazu äußern, welche Richtung ansprechender ist. (Der zweite ist definitiv billiger.)
quelle
Lernen Sie I2C, SPI, 1wire und versuchen Sie, Sensoren mit solchen Schnittstellen zu verbinden. Lesen Sie viele Datenblätter solcher Sensoren und versuchen Sie, alles in ihnen zu verstehen. Stellen Sie Fragen, wenn Sie nicht weiterkommen. Lernen Sie MODBUS (RTU / ASCII / TCP) oder ein ähnliches Protokoll kennen, das Ihr Gerät für die Welt öffnen kann, sobald Sie es in das Gerät einbetten. Lernen Sie die allgemeine Elektronik und versuchen Sie, Relais, Triacs, Pull-Up- und Pull-Down-Funktionen, Sourcing- und Sink-Funktionen, das Zeichnen von Schaltplänen und das Anschließen grundlegender Treiber an Ihre MCU miteinander zu verbinden.
quelle
Zunächst möchten Sie möglicherweise von Arduino als Plattform zu AVR als Plattform wechseln. Das heißt, Sie lernen, wie Sie anstelle des Arduino einen neuen AVR-Mikrocontroller für Ihre Projekte programmieren / verwenden. Auf diese Weise müssen Sie nicht für jedes Projekt, das Sie durchführen, oder für Projekte mit Freunden ein anderes Arduino-Board kaufen. Dies ist ein ziemlich einfacher Schritt (ein Arduino ist nur ein herkömmlicher Atmel AVR-Mikrocontroller, aber mit einem speziellen Board und einem Bootloader), aber ein großer Schritt, um Projekte an Freunde zu verkaufen / weiterzugeben. Die Toolchain ist ähnlich: Sie verwenden avr-gcc oder avr-g ++ mit make in Verbindung mit einem Programmierdienstprogramm, um Ihr Programm zu installieren.
quelle